我不明白,從這個樣式表輸出:xsl:序列是否總是非空?
<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
變量在this template,並在稍後測試它爲空)。
非常感謝!爲了參考,這裏是鏈接到文檔的相關部分(如果我理解正確):http://www.w3.org/TR/xslt20/#temporary-trees – 2009-11-02 11:26:51
是的,你確實瞭解它。該規範的這一部分顯示你隱含有一個'xsl:document'指令。它還指向我沒有提到的其他東西:如果您需要特定的輸出類型,則可以使用'as'屬性。 'xsl:variable'內部的序列必須可以轉換爲這種類型或發生錯誤。 – Abel 2009-11-02 11:35:35