XQuery: возвращаемое значение элемента, а не самого элемента
У меня есть документ XML, содержащий следующие
...
<foo>abc</foo>
...
Если я оцениваю
return $xml//foo
Я возвращаюсь
<foo>abc</foo>
Есть ли способ получить только abc вместо этого?
Ответ 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) пользователи могут использовать следующую функцию.