我有一个样式表,我希望在 xsl 文本元素中插入预定义的字符串变量,但在搜索网络时找不到任何指针。
例如:
<xsl:variable name="var" select="node()/ref/text()"/>
...
<xsl:text>Some text where I want to append $var variable desperately</xsl:text>
...
我试过 $var, ($var), {$var}...
我有一个样式表,我希望在 xsl 文本元素中插入预定义的字符串变量,但在搜索网络时找不到任何指针。
例如:
<xsl:variable name="var" select="node()/ref/text()"/>
...
<xsl:text>Some text where I want to append $var variable desperately</xsl:text>
...
我试过 $var, ($var), {$var}...
Some text where I want to include the value of <xsl:value-of select='$var'/>.
请注意,<xsl:text>
仅需要控制空格的行为。大多数情况下,您可以简单地键入文本并在结果不是您预期的情况下包含此元素——<xsl:text>
不过,我想知道何时使用的规则并没有什么坏处。:)(而且它并不复杂:<xsl:text>
否则使用,您的文本节点将只有空白,或者如果它们包含您希望在任一端避免的额外空白。)
编辑:请注意,变量中的空格在使用时不需要xsl:text
保护,这仅适用于 XSL 解析步骤:
<xsl:variable name="newline"><!-- can be global -->
<xsl:text>
</xsl:text>
</xsl:variable>
<xsl:when test="starts-with(., $newline)">
...
</xsl:when>
Here's some text<xsl:value-of select='$newline' />with formatting.
这是另一种方式:
<xsl:value-of select="concat(
'Some text where I want to append ',
$var,
' variable desperately')" />
虽然它有点难看,但这让您可以完全控制文本和变量文本之间的空白。
xsl:text
仅用于输出固定文本,不能包含嵌套指令。输出变量文本的指令是xsl:value-of
。
我做了这样的事情来创建一个带有字符串的变量和另一个变量
<xsl:variable name="imgsrc">http://mirrors.creativecommons.org/presskit/buttons/<xsl:value-of select='$iconSize' />/<xsl:value-of select="substring-before($licenceTypeAndText, '|')" /></xsl:variable>
这将产生一个像这样的值的变量
http://mirrors.creativecommons.org/presskit/buttons/80x15/png/by.png