xml - 如何在 XSLT 中检查 Parameter 的值为 null
问题描述
我想对 XML 进行检查并执行一些转换。下面是我用过的片段。
<xsl:param name="code" />
<xsl:if test="$code != ''">
<xsl:template match="partner/configuration/flags">
<value><xsl:value-of select="$code"/></value>
</xsl:template>
</xsl:if>
尝试使用 '!=' 进行条件检查并没有给出预期的结果。任何人都可以帮助解决这个错误吗?
解决方案
首先,你的代码没有意义,因为你不能xsl:template
把xsl:if
.
其次,在 XSLT/XPath 数据模型中不存在“null”之类的东西。您需要更清楚地解释您要测试的内容。返回空节点集的表达式?没有子节点的元素节点?其字符串值是零长度字符串的节点?在这种情况下,精度至关重要。
第三,如果您要使用“!=”,您需要准确理解它的含义。如果 A 是一个节点集(或在 2.0 中,一个序列),则A != ""
如果 A 中有一个节点的值不是零长度字符串,则返回 true。如果 A 是空集,则表达式返回 false。大多数时候,你可能想要not(A="")
而不是A!=""
——它们的意思不同。
推荐阅读
- python - 从内部房间预订网站抓取数据
- oracle - 如何按结果将分组保存到oracle中的变量或另一个表?
- postgresql - PostgreSQL 中不存在 double 类型
- ssl-certificate - FreeRadius 证书
- javascript - 通过创建动态密钥访问 json 数据
- elasticsearch - 使用 elasticsearch 对完整字符串进行排序
- javascript - 使用以编程方式添加的验证器将超链接添加到 ValidationSummary
- vb.net - 结构 intptr 无法被索引,因为它没有默认属性
- sails.js - 如何在 Helper 类中添加更多功能?
- azure-ad-b2c - 有没有办法在本地测试 Azure B2C 自定义策略而不将 XML 文件上传到 Azure 门户?