#xml #xpath #predicate
#xml #xpath #предикат
Вопрос:
У меня есть XML-файл, в котором есть sortbits
элемент, который имеет 32 bit
элемента в качестве дочерних. Если я использую выражение xpath
/config/portmod/sortbits/bit[*]
оно возвращает пустой список.
если я изменю его на
/config/portmod/sortbits/bit[node()]
оно возвращает a NodeList
со всеми 32 bit
элементами.
Выражение
/config/portmod/sortbits/bit[last()]
возвращает последний элемент. Почему [*]
выражение ничего не возвращает?
Ответ №1:
Выражение bit[*]
возвращает битовые элементы, у которых есть дочерний элемент. Если оно ничего не возвращает, предположительно, нет битовых элементов, у которых есть дочерний элемент.
Выражение bit[node()]
возвращает битовые элементы, которые имеют какой-либо дочерний элемент, например дочерний элемент текстового узла. Предположительно, если bit[node()]
возвращает элементы, а bit[*]
нет, то у этих элементов есть дочерний текстовый узел, но нет дочернего элемента узла.
Комментарии:
1. Спасибо, Майкл, похоже, это ответ. Выражение