Поскольку index.html
- это XHTML, а <head>
, который вы ищете, находится в пространстве имен XHTML.
Первый запрос игнорирует пространства имен, потому что вы используете функцию local-name()
.
Второй запрос не выполняет, он явно запрашивает <head>
, который находится в пустом пространстве имен.
Вам понадобится
declare namespace x="http://www.w3.org/1999/xhtml"
for $first in fn:doc("file:///index.html")/x:html/x:head
return <test>{ $first }</test>
Обратите внимание, что я избегаю использования //
, поскольку он проходит через все дерево документа, хотя в этом случае единственно возможная позиция <head>
известна заранее. Если вы сделаете это явно, то это значительно ускорит запрос XPath.