如何在xsl:text元素中引用变量?

时间:2012-07-23 14:31:59

标签: xslt

我有一个样式表,我希望在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 个答案:

答案 0 :(得分: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.

答案 1 :(得分:7)

这是另一种方式:

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

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

答案 2 :(得分:4)

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

答案 3 :(得分: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