检查 Null 元素
<image><a><img src="abcd"/></a></image>
XSLT 模板:
<xsl:if test="image!=''">
IMAGE HAS TEXT OR INNER ELEMENT
</xsl:if>
尽管“图像”元素具有子元素,但我得到空白输出。理想情况下它不为空。
我必须检查它应该具有值或子元素的条件。子元素可以为空。
如何纠正这种情况。
谢谢
使用:
image[string() or node()]
true()
仅当当前节点至少有一个子节点时才计算image
结果,这样它的字符串值是非空的,或者它有子节点(或两者都有)。
这可以简化为:
image[node()]
考虑到为了具有字符串值,元素必须在其子树中具有文本节点后代。
如果您希望(如果有)的字符串值image
不是全空白,请将上述 XPath 表达式中的第一个修改为:
image[normalize-space() or node()]
用于<xsl:if test="image/node()">...</xsl:if>
检查image
元素是否有任何类型的子节点或<xsl:if test="image/*">...</xsl:if>
测试image
元素是否至少有一个子元素。
您可以使用它来检查任何子节点(文本、元素等)
<xsl:template match="image">
<xsl:if test="node()">
IMAGE HAS TEXT OR INNER ELEMENT
</xsl:if>
</xsl:template>
或者你可以更具体:
<xsl:template match="image">
<xsl:if test="a | text()">
IMAGE HAS TEXT OR INNER ELEMENT
</xsl:if>
</xsl:template>