LINUX.ORG.RU

Обращение к веткам с общим родителем в XPath

 ,


0

1

Есть ветка <b></b> из которой ответвляются 3 ветки.

<a>
  <b>
    <c>
     <d>
        <e>монета номиналом 10 копеек</e>
         <f>количество 1 шт</f>
     </d>
   </c>
    <c>
      <d>
         <e>монета номиналом 15 копеек</e>
         <f>количество 3 шт</f>
      </d>
    </c>
    <c>
      <d>
         <e>монета номиналом 50 копеек</e>
         <f>количество 5 шт</f>
      </d>
    </c>
  </b>
</a>
Всем доброго времени суток. Ознакомился с некоторыми вариантами обращения к веткам у которых общий родитель. Вопросов стало больше чем ответов. Мне посоветовали использовать descendant. Читал о descendant, из того что понял:
/предок[параметр]/descendant::наследник[параметр] Как в XPath обратиться только к одной определённой ветке?
Например только вот к этой ветке:
      <d>
         <f>количество 5 шт</f>
      </d>
Есть вопросы по синтаксису в XPath и функциям. Порекомендуйте ресурс или чтиво где это подробно описано.

Заранее благодарен.



Последнее исправление: hyperstan (всего исправлений: 1)

Отформатируй нормально.
Google xpath
. Вопрос не понял, что-то в этом духе a/b/c/d[f = 4]

$ cat b.xml
<a>
        <b>
                <f>3</f>
        </b>
        <b>
                <f>5</f>
        </b>
</a>
$ xmlstarlet sel -t -c 'a/b[f = 3]' -n b.xml
<b>
        <f>3</f>
</b>

anonymous
()
Ответ на: комментарий от anonymous

Так же можешь по номеру обращаться, например:

$ xmlstarlet sel -t -c 'a/b[position() = 1]' -n b.xml
Вернёт первый элемент. (нумерация с 1)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.