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