检查空元素
<image><a><img src="abcd"/></a></image>
XSLT模板:
<xsl:if test="image!=''">
IMAGE HAS TEXT OR INNER ELEMENT
</xsl:if>
虽然"image"元素有子元素,但我得到的是空白输出。并且理想情况下它不是空的。
我必须检查它应该具有值或子元素的条件。子元素可以为空。
如何纠正这种情况。
感谢
使用:
image[string() or node()]
只有当当前节点至少有一个image
子节点,使得其字符串值为非空,或者具有子节点(或同时具有子节点)时,才会计算为true()
。
这可以简化为:
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>