Попытка смоделировать функцию XQuery fn: idref (), но без схемы - PullRequest
1 голос
/ 22 июня 2011

Я хочу найти в 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 Ответ

3 голосов
/ 22 июня 2011

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

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

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

//*[tokenize(@idrefs, ' ') = "hello"]
...