найти элемент xpath, используя переменную - PullRequest
1 голос
/ 18 августа 2011

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

например:

<...
  <foo>
    <bar>
       <bar1>BB</bar1>
       <bar2>CC</bar2>
    </bar>
    <rab>
       <rab1>DD</rab1> 
    </rab>
  </foo>
/...>

$ attribute = bar1 (тогда на следующей итерации $ attribute может равняться rab1)

как бы я написал выражение, которое могло бы найти меня: .../foo/bar/$attribute

самое близкое, что я могу найти, это ...//*[name()=$attribute], но это не работает. есть ли другой способ?

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 18 августа 2011

Несмотря на то, что этот вопрос оставляет много деталей, которые могут быть важны, вы можете попробовать изменить name() на local-name():

...//*[local-name()='bar1']

и посмотрите, решит ли это проблему. Возвращаемое значение name() включает любой префикс, который имеет имя элемента, что может привести к тому, что оно не будет соответствовать значению $attribute. (@Kirill намекал на это.)

Если это не решит проблему, предоставьте больше контекста: что такое полное выражение XPath? Как это используется в XSLT? Откуда ты знаешь, что это "не работает"? (Дайте ожидаемые результаты и реальные результаты.)

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