3

检查 Null 元素

<image><a><img src="abcd"/></a></image>

XSLT 模板:

<xsl:if test="image!=''">
IMAGE HAS TEXT OR INNER ELEMENT
</xsl:if>

尽管“图像”元素具有子元素,但我得到空白输出。理想情况下它不为空。

我必须检查它应该具有值或子元素的条件。子元素可以为空。

如何纠正这种情况。

谢谢

4

3 回答 3

5

使用

image[string() or node()]

true()仅当当前节点至少有一个子节点时才计算image结果,这样它的字符串值是非空的,或者它有子节点(或两者都有)。

这可以简化为

 image[node()]

考虑到为了具有字符串值,元素必须在其子树中具有文本节点后代。

如果您希望(如果有)的字符串值image不是全空白,请将上述 XPath 表达式中的第一个修改为:

image[normalize-space() or node()]
于 2012-08-28T11:27:38.997 回答
1

用于<xsl:if test="image/node()">...</xsl:if>检查image元素是否有任何类型的子节点或<xsl:if test="image/*">...</xsl:if>测试image元素是否至少有一个子元素。

于 2012-08-28T11:27:11.097 回答
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>
于 2012-08-28T11:36:36.807 回答