1
在我看到的函數的例子中,當我用xsl:value改變它時會使用xsl:sequence - 它給出了相同的結果,什麼是使用xsl:sequence而不是xsl:value-of的好處。xsl:sequence vs xsl:value-of in函數更適合使用
在我看到的函數的例子中,當我用xsl:value改變它時會使用xsl:sequence - 它給出了相同的結果,什麼是使用xsl:sequence而不是xsl:value-of的好處。xsl:sequence vs xsl:value-of in函數更適合使用
始終使用xsl:sequence
。
xsl:sequence
返回其選擇表達式的結果。
xsl:value-of
將選擇表達式的結果包裝到文本節點中。如果函數的聲明結果是(比如說)xs:integer,則文本節點將被原子化並轉換爲xs:integer。因此,例如
<xsl:function name="f:add" as="xs:integer">
<xsl:param name="x" as="xs:integer"/>
<xsl:param name="y" as="xs:integer"/>
<xsl:value-of select="$x + $y"/>
</xsl:function>
將執行整數加法x和y,將結果轉換爲字符串,在一個文本節點把這個包,霧化文本節點,以獲得非類型化原子值,然後轉換無類型的原子值爲一個整數。
如果幸運的話,優化器會檢測到這是浪費精力和避免開銷,但最好不要依賴它。
還有其他一些情況,其中xsl:value-of根本不起作用,例如函數正在返回一個節點。
謝謝Michael! – Rupesh