Как вы используете переменную в xsl при попытке выбрать node?
Я бы подумал, что это будет легко для Google, но я был не понятен.
Я хочу присвоить переменную значение из атрибута (пока это просто), затем используйте эту переменную, чтобы выбрать другой node на основе значения этого атрибута.
Пример:
<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />
Это не работает. Если я заменил {@myId} на значение, которое находится в переменной, то он найдет правильный node, но doign его таким образом ничего не производит. Я уверен, что мне что-то не хватает, или, возможно, есть другой способ сделать это.
Контекст заключается в том, что существуют связанные данные под разными узлами верхнего уровня, которые имеют одинаковое значение id, поэтому мне нужно получить связанные узлы в моем шаблоне.
Ответы
Ответ 1
Хорошо, я, наконец, понял это. Глупый вопрос действительно, мне просто нужно было оставить цитаты и фигурные скобки. Один из тех случаев, когда я думал, что я уже пробовал это.: D О, и я ошибся @myId в первом примере, код был фактически $myId.
<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />
Ответ 2
Кажется, вы запутались в использовании переменной (которая является просто переменной $variable) и шаблонами значений атрибутов, которые позволяют помещать любое выражение XPath в некоторые атрибуты, например.
<newElement Id="{@Id}"/>
Они, очевидно, могут быть объединены, поэтому вы можете включить переменную в шаблон значения атрибута, например:
<newElement Id="{$myId}"/>