我试图创建一个变量,它告诉我,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>
答案 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()'"/>