将XSLT与一种类型的变量一起使用

将XSLT与一种类型的变量一起使用,xslt,variables,Xslt,Variables,有没有一种方法可以只使用XSLT中变量的一种方法 例如: <xsl:variable name="myvar" select="title" /> 它从我的xml中选择标题,然后我想在模板中使用它: <h2 title="{$myvar}">{$myvar}</h2> {$myvar} 但是,它只显示title属性。 当我这样做的时候: <h2 title="<xsl:value-of select='$myvar'>">&l

有没有一种方法可以只使用XSLT中变量的一种方法

例如:

<xsl:variable name="myvar" select="title" />

它从我的xml中选择标题,然后我想在模板中使用它:

<h2 title="{$myvar}">{$myvar}</h2>
{$myvar}
但是,它只显示title属性。 当我这样做的时候:

<h2 title="<xsl:value-of select='$myvar'>"><xsl:value-of select='$myvar'></h2>

它只能反过来工作

因此,我的问题是:


是否有一种方法既适用于属性又适用于内容?是的,您可以避免AVT:

<h2>
 <xsl:attribute name="title">
  <xsl:value-of select=$myvar/>
 </xsl:attribute>
 <xsl:value-of select=$myvar/>
</h2>

XSLT使用XML语法,这就是为什么不能在属性中包含xsl:value指令:因此AVT表示法使用大括号。如果该语言也允许文本节点中使用大括号,那就太好了,但事实并非如此。

为什么不能只使用
?@Alberteddu$myvar周围的单引号将选择该字符串。我的复制和粘贴太粗心了。:-我的想法是,我可以允许最终用户只添加一些简单的标记,然后用相同的字符串替换它们。但由于这是不可能的,我现在只使用正则表达式来识别属性中的那些,然后用花括号版本替换它们,剩下的在节点中用版本值替换它们。
<h2 title="{$myvar}">
 <xsl:value-of select=$myvar/>
</h2>