我最近才了解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
生成此文本节点?
答案 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>