выберите все, кроме нескольких узлов, с помощью xpath

Просто небольшая помощь. Пожалуйста, дайте мне знать правильное выражение xpath для этого

У меня есть xml-документ, подобный этому

<parent>
                    <child id='1' show='true' />
                    <child id='2' show='true' />
                    <child id='3' show='true' />
                    <child id='4' show='true' />
                    <child id='5' show='true' />
                    <child id='6' show='true' />
                </parent>

Я хочу выбрать все атрибуты show, кроме 2-го и 5-го дочерних элементов, чтобы я мог преобразовать их значения в false


person Jayy    schedule 01.10.2012    source источник
comment
я бы сказал умное выражение   -  person Jayy    schedule 01.10.2012


Ответы (2)


Вы можете использовать логическое значение and в выражении XPath:

/parent/child[@id != '2' and @id != '5']

Если вам действительно нужны второй и пятый элементы, вы можете использовать функцию position():

/parent/child[position() != 2 and position() != 5]
person choroba    schedule 01.10.2012

Использование:

/*/*[not(position() = 2 or position() = 5)]/@show

Это выбирает любой атрибут show любого дочернего элемента верхнего элемента документа xml, который не является вторым или пятым дочерним элементом его родителя.

person Dimitre Novatchev    schedule 01.10.2012