2016-05-09 7 views
0

Ich versuche, den Textwert eines Knotens mit Xquery zu aktualisieren. Was ich habe funktioniert gut für Zahlen und einfachen Text, aber ich habe Probleme mit Sonderzeichen.Verwenden von "&" in base-x und xquery Update

Normalerweise, wenn ich mit xml handle, ersetze ich einfach & durch & und die Dinge funktionieren gut. Im Falle meines Aktualisierungsausdrucks bekomme ich jedoch ein "Erwartetes Zitat". Error.

Diese Werke:

replace value of node $v with "testers" 
replace value of node $v with "tester's" 
replace value of node $v with "tester A and tester B" 

Diese fehlschlagen:

replace value of node $v with "tester A & tester B" 
replace value of node $v with "tester A & tester B" 

Im Idealfall würde ich auch " mit " ersetzen, aber ich kann das nicht tun, bis ich die & passieren bin in der Lage (oder etwas Ersatz) über xquery.

+1

Ihre erste andernfalls Abfrage erwartet wird, zum Scheitern verurteilt. Der zweite sollte gut funktionieren - sind Sie sicher, dass Sie irgendwo nicht zueinander passende Zitate haben? Versuchen Sie zum Beispiel, 'copy $ c: = bar zu ändern (ersetzen Sie den Wert des Knotens $ c durch" tester A & Tester B ") return $ c'. –

+1

... die Bereitstellung eines vollständig in sich geschlossenen Wiedergabegeräts (dh eines, das den Kontextgegenstand gegebenenfalls festlegt, $ v usw. festlegt) in dem zweiten (zu erwartenden) Fall wäre hilfreich. Ansonsten ist dies wohl CNR. –

Antwort

2

Dies funktioniert in der Tat richtig funktioniert, wie es mit dem folgenden Dokument gegen BaseX getestet 8.2:

declare context item := document { <root><txt>old</txt></root> }; 

copy $c := /root/txt 
modify replace value of node $c with "foo &amp; bar" 
return $c 

... die richtig ergibt:

<txt>foo &amp; bar</txt>