Использование :
/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-документа статически известна.Использование //
чаще всего приводит к значительной неэффективности, поскольку вызывает обход полного дерева (вложенного) документа, повернутого в узле контекста.