Почему выражение Xpath, оканчивающееся на [*], возвращает пустой список при переходе на [node ()] возвращает элементы - PullRequest
4 голосов
/ 22 мая 2011

У меня есть xml-файл с элементом sortbits, в котором 32 bit элемента являются дочерними.Если я использую выражение xpath

/config/portmod/sortbits/bit[*]

, он возвращает пустой список.

, если я изменяю его на

/config/portmod/sortbits/bit[node()]

, он возвращает NodeList со всеми 32bit элементов.

Выражение

/config/portmod/sortbits/bit[last()]

возвращает последний элемент.Почему выражение [*] ничего не возвращает?

1 Ответ

3 голосов
/ 22 мая 2011

Выражение bit[*] возвращает битовые элементы, которые имеют дочерний элемент.Если он ничего не возвращает, предположительно, нет ни одного битового элемента, который имеет дочерний элемент.

Выражение bit[node()] возвращает битовые элементы, которые имеют любой вид дочернего элемента, например, дочерний элемент текстового узла.Предположительно, если bit[node()] возвращает элементы, а bit[*] - нет, то у этих элементов есть дочерний элемент текстового узла, но нет дочернего элемента.

...