Ich versuche, ein XML-Dokument zu erstellen, um von einer Funktion wie folgt zurückzukehren. Warum funktioniert die Evaluierungssubstitution, wenn ich let
verwende, um sie zuerst in einer anderen Variablen zu speichern? Kann ich den Ausdruck nicht bewerten? Wie Sie am Ende des Ergebnisses sehen können, wird das resultierende XML nur mit dem Variablenwert gefüllt, in dem ich ihn in der Variablen $x
gespeichert hatte.Ausdruck Auswertung funktioniert nicht
declare function local:oim-to-canonical($oimContent as node()) {
let $x := $oimContent/account/domain/text()
return
<person xmlns="http://schemas.abbvienet.com/people-db/model">
<account>
<domain>{ $oimContent/account/domain/text() }</domain>
<username>{ $oimContent/account/username/text() }</username>
<status>{ $oimContent/account/status/text() }</status>
<x>{ $x }</x>
</account>
</person>
};
local:oim-to-canonical(
<person>
<account>
<domain>MYDOMAIN</domain>
<username>ttt</username>
<status>ENABLED</status>
</account>
</person>
)
Ergebnisse in:
<person xmlns="http://schemas.abbvienet.com/people-db/model">
<account>
<domain/>
<username/>
<status/>
<x>MYDOMAIN</x>
</account>
</person>
Ist das das richtige Verhalten?