Сведения о вопросе

FromRussia

16:03, 1st July, 2020

Теги

xslt    

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

Просмотров: 386   Ответов: 2

Я бы подумал, что это будет легко найти в Google, но я был неуспешен.

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

Пример:

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

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

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



  Сведения об ответе

nYU

18:03, 1st July, 2020

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

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


  Сведения об ответе

COOL

18:03, 1st July, 2020

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

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

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

<newElement Id="{$myId}"/>


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться