Следуйте той же модели, что и в статье. Если вы хотите проверить текстовое имя узла, вместо рассмотрения того, на какой URI отображается пространство имен узла, вызовите name
и выполните сравнение строк.
//*[name() = "xmlns:h2"]/*[name() = "xmlns:a"]
Однако для того, чтобы это выражение соответствовало чему-либо, в документе должны быть узлы с буквальным названием xmlns:h2
. Вам нужно иметь такой документ:
<xmlns:h2>
<xmlns:a>header</xmlns:a>
</xmlns:h2>
Однако страница, на которую вы ссылались, выглядит не так. Он использует обычные имена узлов HTML, такие как h2
и a
, а не xmlns:h2
. Простые имена действительно находятся в пространстве имен xmlns
, но только потому, что они настроены как пространство имен по умолчанию для документа. Поскольку узлы не имеют имен с префиксом пространства имен, не включайте этот префикс в строки имен:
//*[name() = "h2"]/*[name() = "a"]
Еще одно изменение, которое вы можете внести в случае, если некоторые узлы используют префикс xmlns
, а другие - нет, это использовать local-name
вместо name
; тогда он удалит любой существующий префикс пространства имен.
//*[local-name() = "h2"]/*[local-name() = "a"]