Как вы используете переменную в xsl при попытке выбрать узел?

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

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

Пример:

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

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

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

16 xslt
7.08.2008 21:53:58
2 ОТВЕТА
РЕШЕНИЕ

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

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
17
14.08.2013 23:28:46
Есть еще цитата, которой там быть не должно. Это очень небольшое редактирование, поэтому я не могу сделать это, не изменив также текст (минимальное количество символов). <xsl: variable name = "myId" select = "@ id" /> <xsl value-of select = "// Root / Some / Other / Path / Where [@ id = $ myId] / @ Name />
María Arias de Reyna Domínguez 25.06.2013 09:54:59
Спасибо, я думаю, что сейчас это правильно. Я также пропустил заключительную двойную кавычку на конце первоначально.
palehorse 14.08.2013 23:29:10

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

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

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

<newElement Id="{$myId}"/>
5
19.08.2008 15:25:43