2017-05-03 2 views

答えて

2

常にxsl:sequenceを使用してください。

xsl:sequenceは、そのselect式の結果を返します。

xsl:value-ofは、select式の結果をテキストノードにラップします。関数の宣言された結果が(例えば)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が機能しない場合があります。たとえば、関数がノードを返す場合などです。

+0

マイケルさん! – Rupesh