XPath - динамически выбирает и находит значение элемента - PullRequest
0 голосов
/ 25 марта 2020
<welcome>
 <firstAttribute>1</firstAttribute>
 <secondAttribute>2</secondAttribute>
</welcome>

У меня уже есть это "welcome", объявленное как переменная "$ welcome" в моем листе XSL.

, и давайте предположим, что "$ theName" - это переменная, содержащая имя со значением "firstAttribute" ".

теперь мне нужно динамически найти значение" firstAttribute "этого элемента" welcome ", например что-то вроде:

<xsl:when test="$welcome/{$theName}/value> 

Я пробовал много вещей, но Я продолжаю терпеть неудачу с треском. Есть ли правильный способ или синтаксис, чтобы помочь мне достичь этого?

PS: На листе уже есть что-то, что делает что-то похожее, я думаю:

<xsl:if test="$welcome/@*[name() = $theName]">

Я полагаю, это проверяет, если элемент $ welcome имеет name = $ theName, но я хочу go чуть дальше, найти атрибут $ welcome с именем $ theName, а затем найти его значение (1), например.

Ответы [ 3 ]

1 голос
/ 25 марта 2020

Используйте $welcome/*[name() = $theName], чтобы выбрать элемент, вы можете использовать это выражение в любом сравнении или любом значении.

0 голосов
/ 25 марта 2020
$welcome/@*[name() = $theName] = 'N'

Кажется, ему не нужно никакого специального выражения, такого как text (), чтобы получить значение. Сравнив это напрямую с 'N' получилось

Спасибо за ответы, ребята!

0 голосов
/ 25 марта 2020

В вашем примере кода есть элементы, но нет атрибутов.

Я бы попробовал что-то вроде XPath:

$welcome[./*[name()=$theName]]/$theName/text()

Найдите элемент $ welcome, в котором есть дочерний элемент с именем $ название. Как только мы его получим, мы получим значение $ theName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...