я пытаюсь выбрать все ключи, которые имеют следующий родственный узел Dict и чья одна из его дочерних узлов является верно, например, в приведенном ниже XML :Выберите элементы, если конкретная родственное присутствуют с определенным дочерним узлом
<dict>
<key>A</key>
<dict>
<key>Disabled</key>
<true/>
</dict>
<key>B</key>
<dict>
<key>Disabled</key>
<false/>
</dict>
<key>C</key>
<dict>
<key>Disabled</key>
<true/>
</dict>
<key>D</key>
<id>1</id>
</dict>
я должен получить а и С. Я пробовал:
//key[../dict/true]
//key[../dict/[following-sibling::dict/true]]
и многие другие. Любая помощь будет высоко ценится.
На самом деле, ваше выражение пути также будет выбирать элементы 'key', которые ** не ** имеют непосредственный следующий брат, названный' dict', потому что 'next-sibling :: dict [position() = 1]' означает «первый элемент' dict' после текущего контекстного узла », а не первый следующий брат в целом. –
nah, xpath не возвращает мне никакого результата. – orange
@orange, не уверен в вашей среде, но с вашим примером xml мой xpath возвращает ожидаемые результаты. –