Я не могу использовать параметр в этом операторе выбора XML

У меня есть этот код 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 это не нравится. Как мне использовать param в моем утверждении?

Это вызывающий код:

<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 ответ

Шаблоны значений атрибутов позволяют встраивать выражения в обычные атрибуты, например

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

Вы не можете использовать этот синтаксис для встраивания выражения в другое выражение - атрибут select xsl:value-of это уже выражение, поэтому вы не можете использовать фигурные скобки внутри него таким образом.

Теперь мне трудно исправить ваш синтаксис, потому что я действительно не знаю, что вы имели в виду. Я думаю, что так как ваш оригинальный код

StudentTalk1M/@StudyPoint

и ваш новый код имеет

StudentTalk1{$param}/@StudyPoint

тогда, возможно, у вас есть элементы с именами StudentTalk1A, StudentTalk1B, StudentTalk1C и т. д., и вы хотите параметризовать, какой из них вы выбираете. Это был бы ужасный способ неправильного использования XML, но если вам действительно нужно это сделать, вы можете написать

select="*[name()=concat('StudentTalk1', $param)]/@StudyPoint
Другие вопросы по тегам