是什麼<xsl:variable name="test" select="1"/>
XSLT = 「1」 之間或選擇選擇選擇= 「 '1'」
和<xsl:variable name="test" select="'1'"/>
之間的區別?
如果兩個結果都是結果tre片段,那麼基本上上面兩行代碼是相同的?
如果是這樣。我們如何決定使用哪一個?
是什麼<xsl:variable name="test" select="1"/>
XSLT = 「1」 之間或選擇選擇選擇= 「 '1'」
和<xsl:variable name="test" select="'1'"/>
之間的區別?
如果兩個結果都是結果tre片段,那麼基本上上面兩行代碼是相同的?
如果是這樣。我們如何決定使用哪一個?
第一個示例創建一個數字值爲1的類型編號變量,第二個字符串值爲「1」的字符串類型變量。結果樹片段不是用您的代碼示例創建的,可以使用<xsl:variable name="test">1</xsl:variable>
完成。
正如@馬丁指出的,第一個將變量綁定到一個數字,第二個綁定到一個字符串。
我們該如何決定使用哪一個?
覺得用你將與該變量做的。例如,在第一種情況下,你將能夠做到:
item[$test]
這將是不可能在第二種情況下,除非你使用number()
功能。
根據以下注釋,使用任何比較運算符時,字符串或數字不會有任何區別。即使在與節點集或rtfs進行比較時也是如此。你可以閱讀規範(有點詳細)或嘗試一些愚蠢的測試。
在處理節點位置時,您可以獲得的不同行爲仍然很明顯。例如,如果您有:
<xsl:variable name="number2" select="2"/>
<xsl:variable name="string2" select="'2'"/>
<xsl:variable name="rtf2">2</xsl:variable>
,你有這樣的輸入:
<root>
<test>a</test>
<test>b</test>
</root>
使用:
<xsl:value-of select="/root/test[$rtf2]"/>
<xsl:value-of select="/root/test[$string2]"/>
<xsl:value-of select="/root/test[$number2]"/>
您將獲得:
aab
而這個:
<xsl:value-of select="/root/test[position()=$rtf2]"/>
<xsl:value-of select="/root/test[position()=$string2]"/>
<xsl:value-of select="/root/test[$number2]"/>
將返回:
bbb
由於由比較操作符隱式轉換。
XPath 1.0和XSLT 1.0將數字和字符串視爲幾乎可以互換,只有極少數例外。一個值得注意的例外是項目[$ test]。但是「=」的行爲也略有不同:因爲數字4和04是相等的,但是它們不是。
在XPath 2.0和XSLT 2中。0類型系統更加豐富,字符串和數字之間的差異更加明顯:在數字上定義的許多操作對字符串不起作用,反之亦然。
如何決定?如果它是全數字的,你通常會想要使用一個數字,除非它像電話號碼那樣,前導零很重要,因此它不是一個真正的數字,而是一串數字。
使用XSLT 1.0,您可以在兩種情況下執行'nodeset> $ test',因爲比較運算符'>'將操作數轉換爲數字。 –
是的。更新以反映這一點。很難理解與規格的區別。 –