Подтвердить что ты не робот

XQuery: возвращаемое значение элемента, а не самого элемента

У меня есть документ XML, содержащий следующие

...
<foo>abc</foo>
...

Если я оцениваю

return $xml//foo

Я возвращаюсь

<foo>abc</foo>

Есть ли способ получить только abc вместо этого?

4b9b3361

Ответ 1

Да, вам нужна функция text() для выбора дочернего текста:

return $xml/text()

Будьте осторожны, если у вас будет структура вложенных тегов внутри $xml, хотя это будет идти только на один уровень для текстовых узлов. Если вы хотите, чтобы все текстовые узлы вместе, удалив другую структуру XML, это будет делать сколь угодно глубоким:

return $xml//text()

Ответ 2

Используйте строковую функцию, чтобы получить содержимое строки node.

return string($xml)

Ответ 3

Чтобы вернуть только данные внутри элемента, который вы можете использовать:

return data($xml)

Ответ 4

Вставить в xs: string {xs:string($xml/foo)}

Ответ 5

OSB (служебная шина oracle) пользователи могут использовать следующую функцию.

fn-bea:serialize($xml)