我可以使用大括号语法连接XSL中的文本节点的文本

时间:2014-07-10 14:01:34

标签: xml xslt xpath

我最近才了解XSLT中的大括号语法,它允许指定一个预期字符串的XPath表达式,以及它对连接字符串的用处。

所以,在我的XSLT中,我替换了

的所有实例
<entry>
    <xsl:attribute name="id" select="concat(@artifactId, '-', @version, '.zip')" />
</entry>

更短

<entry id="{@artifactId}-{@version}.zip" />

到目前为止一切顺利。但现在我想知道我是否可以使用相同的语法来连接文本节点的文本。

示例:

<sourceLocation>
    <xsl:value-of select="concat($baseURL, '/artifacts/', @artifactId, '-', @version, '.zip')" />
</sourceLocation>

有没有办法在标准XSLT 2.0中使用大括号语法而不是concat生成此文本节点?

2 个答案:

答案 0 :(得分:1)

不在XSLT 2.0中,但在XSLT 3.0中可以使用,其语法称为“text value templates”(类似于属性值模板)。

答案 1 :(得分:1)

不,不是在XSLT 1.0或2.0中,XSLT 3.0允许它使用设置http://www.w3.org/TR/xslt-30/#text-value-templates,并且像Saxon 9.5 PE或EE这样的实现已经支持:

<sourceLocation>{$baseURL}/artifacts/{@artifactId}-{@version}.zip</sourceLocation>