我不明白这个样式表的输出:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:apply-templates select="root/sub"/>
</xsl:template>
<xsl:template match="sub">
<xsl:variable name="seq">
<xsl:sequence select="*" />
</xsl:variable>
<xsl:message>
<xsl:value-of select="@id" />
<xsl:text>: </xsl:text>
<xsl:value-of select="count($seq)" />
</xsl:message>
</xsl:template>
</xsl:stylesheet>
当应用于以下 XML 时:
<root>
<sub id="empty" />
<sub id="one"><one/></sub>
<sub id="two"><one/><one/></sub>
<sub id="three"><one/><one/><one/></sub>
</root>
由xsl:message
元素写入的输出为:
empty: 1
one: 1
two: 1
three: 1
我期待这个:
empty: 0
one: 1
two: 2
three: 3
为什么count($seq)
在这种情况下总是返回 1?您将如何更改变量定义,以便我以后可以测试它是否为空?(简单<xsl:variable name='seq' select='*' />
会返回预期的答案,但不是一个选项......我想更改此模板between
中的变量,并稍后测试它是否为空)。