このスタイルシートからの出力がわかりません。
<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
の変数を変更し、後で空になるかどうかをテストします)。