<category>
<catid>1</catid>
<cattext> sport </cattext>
</category>
Je veux changer le texte de l'élément <cattext>
dans un autre comme "l'art" au lieu du sport en utilisant XQueryvaleur de changement de l'élément par XQuery
<category>
<catid>1</catid>
<cattext> sport </cattext>
</category>
Je veux changer le texte de l'élément <cattext>
dans un autre comme "l'art" au lieu du sport en utilisant XQueryvaleur de changement de l'élément par 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(/*)
Sortie:
<?xml version="1.0" encoding="UTF-8"?>
<category>
<catid>1</catid>
<cattext>art</cattext>
</category>
si votre moteur prend en charge les mises à jour et les scripts:
declare variable $x :=
<category>
<catid>1</catid>
<cattext> sport </cattext>
</category>;
replace value of node $x/cattext with "art";
$x;
ou si vous ne voulez pas persister les changements que vous pouvez transformer une copie:
let $x :=
<category>
<catid>1</catid>
<cattext> sport </cattext>
</category>
return
copy $changedx := $x
modify (replace value of node $changedx/cattext with "art")
return $changedx
ces extraits de code exécuté avec succès sur http://try.zorba-xquery.com
Si votre processeur XQuery ne supporte pas les mises à jour de la solution de Alejandro Haut.
Quelle base de données utilisez-vous? Ou probablement vous voulez juste transformer? – Shcheklein