Используя XPATH, как выбрать несколько элементов, сохраняя путь - PullRequest
2 голосов
/ 04 января 2010

Предполагая, что у меня есть XML, например, так:

<a>
  <b>
    <i>data</i>
    <ii>data</ii>
    <iii>data</iii>
  </b>
  <b>
    <i>data<i>
    <ii>data<ii>
    <iii>data</iii>
  </b>
</a>

Используя XPath, как бы я выбрал приведенный выше XML для создания такой структуры:

  <b>
    <i>data</i>
    <ii>data</ii>
  </b>
  <b>
    <i>data<i>
    <ii>data<ii>
  </b>  

В этом сценарии меня интересуют только i и ii и, но я хочу сохранить внешний элемент. Я также не могу использовать XSLT, только операторы XPATH.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 04 января 2010
/a/*/i/..|/a/*/ii/..

"Из a выберите все дочерние элементы, затем выберите все элементы" i ", затем выберите родительский элемент, ИЛИ выберите" все дочерние элементы ", затем выберите все элементы" ii ", затем выберите родительский элемент.

1 голос
/ 06 января 2010

Чтобы выбрать все узлы, включая их родительские, внешние узлы:

/a[i or ii]|/a/i|/a/ii|/b[i or ii]|/b/i|/b/ii
1 голос
/ 04 января 2010

Возможно, я ошибаюсь, но я думал, что XPATH выбирает только последовательности «узлов» в своей абстрактной модели. Я был бы потерян без XSLT здесь.

...