J'ai rencontré un problème lorsque j'ai essayé de créer une fonction de suppression. Mon code actuel est:Comment créer une fonction de suppression dans XQuery
XQuery:
declare variable $d as xs:string;
declare variable $p as xs:string;
let $xp := saxon:evaluate(concat("doc('",$d,"')",$p))
return document {for $n in doc($d)/* return qsx10p8:delete($n, $xp)}
declare function qsx10p8:delete
($n as node(), $xp as node()*)
as node() {
if ($n[self::element()])
then element
{fn:local-name($n)}
{for $c in $n/(*|@*)
return qsx10p8:delete($c, $xp),
if (some $x in $xp satisfies ($n is $x))
then()
else ($n/text())}
else $n
};
Si l'entrée sont: $d = C:/supplier.xml and $p= /Suppliers/Supplier/*
le résultat est:
<Suppliers><Supplier><address /><Phone /></Supplier></Suppliers>
Mais je veux que le résultat soit <Suppliers><Supplier></Supplier></Suppliers>
. Existe-t-il un moyen de modifier mes codes de fonction pour supprimer également ces balises?