我不能在这个XML select语句中使用param

时间:2015-11-20 14:15:32

标签: xml select param

我有这个XSLT1.0代码:

<xsl:value-of select="//Labels/CounselPoint"/>&#160;<xsl:value-of select="StudentTalk1M/@StudyPoint"/>&#160;

我现在改变了我的方法,让一个名为Class的参数。所以我想这样做:

            <xsl:value-of select="//Labels/CounselPoint"/>&#160;<xsl:value-of select="StudentTalk1{$Class}/@StudyPoint"/>&#160;

Visual Studio不喜欢它。如何在我的陈述中使用参数?

这是调用代码:

<xsl:call-template name="Display_AYTFM">
     <xsl:with-param name = "Class" select ="M" />
</xsl:call-template> />

这是该方法的一部分:

<xsl:template name = "Display_AYTFM" >
  <xsl:param name = "Class" />
  <div class="containerAYFM">

1 个答案:

答案 0 :(得分:0)

属性值模板允许您在普通属性中嵌入表达式,例如

<chapter id="chap{$n}">

您不能使用此语法在另一个表达式中嵌入表达式 - xsl:value-of的select属性已经是表达式,因此您不能以这种方式在其中使用花括号。

现在,我发现很难纠正你的语法,因为我真的不知道你的想法。我想这是因为你的原始代码已经

StudentTalk1M/@StudyPoint

并且您的新代码已

StudentTalk1{$param}/@StudyPoint

那么也许你有一些名为StudentTalk1A,StudentTalk1B,StudentTalk1C等的元素,你想要参数化你选择哪一个。这将是一种滥用XML的可怕方式,但如果你真的需要这样做,你可以写

select="*[name()=concat('StudentTalk1', $param)]/@StudyPoint