Я нашел это существующее сообщение при замене значения данного элемента, но мне нужно идти дальше с моим требованием в том, что мне нужно заменить первый символ другим. Это сообщение я нашел: изменить значение элемента с помощью XQueryзаменить значение элемента на xquery
Источник XML:
<?xml version="1.0" encoding="UTF-8"?>
<category>
<catid>1</catid>
<cattext>sport</cattext>
</category>
Используя этот XQUERY:
declare namespace local = "http://example.org";
declare function local:copy-replace($element as element()) {
if ($element/self::cattext)
then <cattext>art</cattext>
else element {node-name($element)}
{$element/@*,
for $child in $element/node()
return if ($child instance of element())
then local:copy-replace($child)
else $child
}
};
local:copy-replace(/*)
Придает этот выход:
<?xml version="1.0" encoding="UTF-8"?>
<category>
<catid>1</catid>
<cattext>art</cattext>
</category>
Мои знания о Xquery только j ust начинает расти. Как изменить выше XQUERY, чтобы изменить только первый символ, так что я получаю ниже вывод:
<?xml version="1.0" encoding="UTF-8"?>
<category>
<catid>1</catid>
<cattext>9port</cattext>
</category>
Спасибо Dimitre , Теперь, если бы я мог беспокоить вас немного больше, что бы XSLT выглядело так же, как и одно. –
@TonyJ: Я добавил к этому ответу преобразование XSLT, которое дает тот же результат. Обратите внимание, насколько проще выразить преобразования с помощью XSLT. Явное повторение исчезло - это не обязательно. –
Определенно легче читать и улучшать при необходимости с преобразованием XSLT. Еще раз спасибо Димитрию. –