Я не могу использовать параметр в этом операторе выбора XML
У меня есть этот код XSLT1.0:
<xsl:value-of select="//Labels/CounselPoint"/> <xsl:value-of select="StudentTalk1M/@StudyPoint"/> 
Теперь я изменил свой метод, чтобы иметь параметр с именем Class. Итак, я хотел сделать:
<xsl:value-of select="//Labels/CounselPoint"/> <xsl:value-of select="StudentTalk1{$Class}/@StudyPoint"/> 
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