Превратить XML-последовательность значений атрибутов в строку? - PullRequest
3 голосов
/ 19 июня 2011

Используя xquery 1.0, я хочу взять последовательность, подобную этой;

<foo xml:id="x20"/>
<foo xml:id="x47"/>
<foo xml:id="x3"/>

И объединить идентификаторы в строку, чтобы вставить атрибут нового элемента, как этот;

<bar ids="x20 x47 x3"/>

Есть ли способ сделать это без ручной итерации по входной последовательности с помощью FLWOR?

Ответы [ 2 ]

5 голосов
/ 19 июня 2011
let $s := (<foo xml:id="x20"/>,<foo xml:id="x47"/>,<foo xml:id="x3"/>)
return <bar ids="{$s/@xml:id}"/>
1 голос
/ 19 июня 2011

Используйте

<bar ids="{/*/*/@xml:id}"/>

Когда этот XQuery применяется к следующему документу XML (просто завершение предоставленного фрагмента XML в правильно сформированный документ XML):

<t>
  <foo xml:id="x20"/>
  <foo xml:id="x47"/>
  <foo xml:id="x3"/>
</t>

желаемый, правильный результат получается :

<bar ids="x20 x47 x3"/>
...