在函数示例中我看到使用xsl:sequence当我用xsl更改它时:value-of它给出相同的结果,使用xsl:sequence而不是xsl:value-of的优点是什么。 / p>
答案 0 :(得分: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根本不起作用,例如函数返回一个节点。