Как вы используете переменную в xsl при попытке выбрать узел? - PullRequest
15 голосов
/ 08 августа 2008

Я бы подумал, что это будет легко для Google, но я потерпел неудачу.

Я хочу присвоить переменной значение из атрибута (пока просто), а затем использовать эту переменную для выбора другого узла на основе значения этого атрибута.

Пример:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

Это не работает. Если я заменю {@myId} на значение, которое находится в переменной, тогда он найдет правильный узел, но его выравнивание таким образом ничего не даст. Я уверен, что что-то упустил, или, возможно, есть другой способ сделать это.

Контекст заключается в том, что в разных узлах верхнего уровня есть связанные данные, которые имеют одинаковое значение идентификатора, поэтому мне нужно получить связанные узлы в моем шаблоне.

Ответы [ 2 ]

16 голосов
/ 08 августа 2008

Хорошо, я наконец понял это. Глупая проблема на самом деле, мне просто нужно было опустить цитаты и скобки. Один из тех случаев, когда я думал , что я уже попробовал это. : D Да, и я набрал @myId в первом примере, код был на самом деле $ myId.

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
5 голосов
/ 19 августа 2008

Вы, похоже, запутались с использованием переменной (которая является просто $ variable) и шаблонами значений атрибутов, которые позволяют вам помещать любое выражение XPath в некоторые атрибуты, например,

<newElement Id="{@Id}"/>

Очевидно, что они могут быть объединены, поэтому вы можете включить переменную в шаблон значения атрибута, например:

<newElement Id="{$myId}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...