如何检查节点是否为空

时间:2017-04-03 07:55:38

标签: xslt

我试图创建一个变量,它告诉我,node1中是否包含某些内容。 node1可以是空元素,也可以包含属性。但是现在我想知道如何实现答案" false"当node1为空时。

<xsl:variable name="elementHasData">
    <xsl:choose>
        <xsl:when test="node1 != ''">
            <xsl:value-of select="true()"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="false()"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable>

4 个答案:

答案 0 :(得分:1)

检查node1是否包含文本或其他子节点:

<xsl:variable name="elementHasData" select="node1/node()" />

检查node1是否包含子节点或属性:

<xsl:variable name="elementHasData" select="node1/node() or node1/@*" />

答案 1 :(得分:1)

如果您需要检查任何节点或任何属性,那么您可以转到此处。

<xsl:variable name="elementHasData" select="if (node1[@* | node()]) then 'true()' else 'false()'"/>

答案 2 :(得分:0)

<xsl:variable name="elementHasData">
<xsl:choose>
    <xsl:when test="string-length(normalize-space(node1)) gt 0">
        <xsl:value-of select="true()"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="false()"/>
    </xsl:otherwise>
</xsl:choose>

答案 3 :(得分:0)

您可以在 XSLT 2.0

中尝试此操作
<xsl:variable name="elementHasData" select="if (node1[node()]) then 'true()' else 'false()'"/>