Попытка смоделировать функцию XQuery fn:idref(), но без схемы

Я хочу найти документ XML для элемента, который имеет idrefs атрибут, содержащий определенный id, Например, учитывая этот документ XML doc.xml;

<doc>
   <x1 idrefs="foo bar">
      <x2 idrefs="world hello"/>
   </x1>
   <x3 idrefs="ipsum lepsum"/>
   <a xml:id="bar"/>
   <b xml:id="hello"/>
</doc>

Я хочу этот XQuery;

let $d := doc("doc.xml")
return $d/local:getref("hello")

вернуть этот элемент;

<x2 idrefs="world hello"/>

я полагаю, что fn:idref() делает именно это, но только если doc.xml имеет соответствующую схему. Можно ли это сделать без схемы?

Я использую процессор Saxon XQuery.

1 ответ

Решение

Похоже, это связано с

Как использовать функцию XQuery fn:idref()?

Без схемы вам нужно

//*[tokenize(@idrefs, ' ') = "hello"]
Другие вопросы по тегам