标识XSLT中的null元素,该元素甚至在子元素中都没有值



检查空元素

<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>

相关内容

  • 没有找到相关文章

最新更新