Ответ 1
Использование
/html/body/*[self::h1 or self::h2 or self::h3]/text()
Недопустимое следующее выражение:
//html/body/*[local-name() = "h1"
or local-name() = "h2"
or local-name() = "h3"]/text()
поскольку он может выбирать текстовые узлы, которые являются дочерними элементами unwanted:h1
, different:h2
, someWeirdNamespace:h3
.
Другая рекомендация: всегда избегайте использования //
, когда структура документа XML статически известна. Использование //
чаще всего приводит к значительной неэффективности, потому что это приводит к тому, что полное дерево документа (под), связанное в контексте node, проходит.