9

我有一个样式表,我希望在 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}...

4

4 回答 4

12
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.
于 2012-07-23T14:40:18.120 回答
8

这是另一种方式:

<xsl:value-of select="concat(
    'Some text where I want to append ', 
    $var, 
    ' variable desperately')" />

虽然它有点难看,但这让您可以完全控制文本和变量文本之间的空白。

于 2013-08-02T22:03:27.280 回答
6

xsl:text仅用于输出固定文本,不能包含嵌套指令。输出变量文本的指令是xsl:value-of

于 2012-07-23T20:45:18.703 回答
0

我做了这样的事情来创建一个带有字符串的变量和另一个变量

<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
于 2017-07-18T14:53:31.583 回答