Xslt 是否可以使用;“属性值模板”;变量还是参数?
这很好,很短:Xslt 是否可以使用;“属性值模板”;变量还是参数?,xslt,Xslt,这很好,很短: 但有时您需要重用src,因此它变成了这样: / jpg先生 根据你的观点,你不能在文字元素属性之外使用“花括号插值语法”,但是可能有一个不太老练的黑客来做这个把戏?我知道,我很懒。您可以使用选择表达式定义变量,使用concat函数将各个位连接在一起: <xsl:variable name="imgsrc" select="concat($base, '/', @filename, '.jpg')"/> <img src="{$imgsrc}" />
但有时您需要重用src
,因此它变成了这样:
/
jpg先生
根据你的观点,你不能在文字元素属性之外使用“花括号插值语法”,但是可能有一个不太老练的黑客来做这个把戏?我知道,我很懒。您可以使用
选择表达式定义变量,使用concat
函数将各个位连接在一起:
<xsl:variable name="imgsrc" select="concat($base, '/', @filename, '.jpg')"/>
<img src="{$imgsrc}" />
这也比
方法更有效,因为使用select
可以直接将变量设置为字符串值,而不是创建一个包含文本节点的树片段,在引用变量时,该文本节点必须转换回字符串。XSLT 3.0在这方面有一些优点面积:
(a) concat操作员
select="$base || '/' || @filename || '.jpg'
(b) “文本值模板”
{$base}/{@filename}/.jpg
(出于兼容性原因,需要启用此选项)完美!因此,非黑客-完全相反!为了方便将来的读者,除了支持AVT的文字结果元素属性之外,还有一些其他地方,最显著的是
的名称
属性,它允许您使用动态生成的名称输出元素。文本值模板:非常好!我一直希望找到一种方法来做亚视的非属性,特别是在文本。
<xsl:variable name="x">{$base}/{@filename}/.jpg</xsl:variable>