В Xquery 3.1 я преобразую XML-файл (содержащий данные, которые изначально хранились в таблицах SQL) в другой формат XML-файла.Обычно это довольно просто, но для одного конкретного элемента я хотел бы скопировать text()
, а также любые узлы child
и их содержимое в новый элемент.Например, я хочу преобразовать следующий XML:
<table tablename="collections">
<record id="1">
<field fieldname="id">1</field>
<field fieldname="title">Quisque elementum cursus nunc non aliquam</field>
<field fieldname="desc">Quisque elementum cursus nunc non aliquam;
also known under the title <i>Lorem ipsum dolor sit amet</i>.<br/> The
same author compiled a large encyclopedia <i>Liber de natura
rerum,</i> synthesizing much knowledge from his period.</field>
<field fieldname="author">Thomas de Cantimpré</field>
</record>
</table>
в:
<list xml:id="collections">
<item n="1">
<list>
<item type="title">Quisque elementum cursus nunc non aliquam</item>
<item type="desc">Quisque elementum cursus nunc non aliquam;
also known under the title <i>Lorem ipsum dolor sit amet</i>.<br/> The
same author compiled a large encyclopedia <i>Liber de natura
rerum,</i> synthesizing much knowledge from his period.</item>
<item type="author">Thomas de Cantimpré</item>
</list>
</item>
</list>
Как правило, большая часть этого не представляет проблемы.Однако я нахожусь в тупике по проблеме получения text()
и всех child
узлов внутри элемента <field fieldname="desc">
.Решение в XPATH ускользнуло от меня.
Заранее благодарим за любой совет.