Xslt 如何检查节点是否为空
我试图创建一个变量,它告诉我node1是否包含某些内容。节点1可以是空元素,也可以包含属性。但现在我想知道,当node1为空时,如何实现答案“false”Xslt 如何检查节点是否为空,xslt,Xslt,我试图创建一个变量,它告诉我node1是否包含某些内容。节点1可以是空元素,也可以包含属性。但现在我想知道,当node1为空时,如何实现答案“false” <xsl:variable name="elementHasData"> <xsl:choose> <xsl:when test="node1 != ''"> <xsl:value-of select="true()"/> <
<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>
检查
节点1
是否包含文本或其他子节点:
<xsl:variable name="elementHasData" select="node1/node()" />
您可以在XSLT 2.0中尝试这一点:
<xsl:variable name="elementHasData" select="if (node1[node()]) then 'true()' else 'false()'"/>
如果您需要检查任何节点或任何属性,则可以转到此处
<xsl:variable name="elementHasData" select="if (node1[@* | node()]) then 'true()' else 'false()'"/>
8行
xsl:choose
是不必要的,并且也使得$elementHasData
是一个节点片段,而不是布尔值。你应该这样做:
<xsl:variable name="elementHasData" select="if (node1[node()]) then 'true()' else 'false()'"/>
<xsl:variable name="elementHasData" select="if (node1[@* | node()]) then 'true()' else 'false()'"/>