Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 是否可以使用;“属性值模板”;变量还是参数?_Xslt - Fatal编程技术网

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>