concat, Anführungszeichen und Apostroph Kombination Probleme
Ich versucht, verschiedene Möglichkeiten und auch sah sich um, kann aber nicht ausgeführt.
Ich muss concat die folgenden:
"concat(
'this is; \"a sample',
//XML_NODE,
'\"; \"using an apostrophe',
''',
'in text\"'
)"
einer Zeile version:
"concat( 'this is; \"a sample', //XML_NODE, '\"; \"using an apostrophe', ''', 'in text\"' )"
Die Ausgabe sollte sein:
this is "a sample XML_NODE_VALUE"; "using an apostrophe ' in text"
Das problem ist das " im text. concat verwenden, um das Ende einer Zeichenfolge und erwarten einen folgende ; oder das Ende von concat. Flucht-oder HTML-Entitäten scheint nicht zu funktionieren.
Jede Hilfe wird wirklich geschätzt.
Dank!
Sie haben versucht
ja, und auch ' und plain ' und \' und auch ohne eine neue Zeichenfolge
Sie können daran interessiert sein, eine Lösung, die nicht alle Variablen in allen.
'
?ja, und auch ' und plain ' und \' und auch ohne eine neue Zeichenfolge
Sie können daran interessiert sein, eine Lösung, die nicht alle Variablen in allen.
InformationsquelleAutor Talisin | 2012-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
In XML/XSLT Sie nicht die escape-Zeichen mit einem backslash.
Das problem mit dem Apostroph innerhalb Ihrer concat strings ist, dass der XML-parser laden des XSLT wird es erweitern, bevor die concat wird ausgewertet, indem die XSLT-engine, so dass Sie nicht verwenden können, eine entity-Referenz für das Apostroph-Zeichen, es sei denn, es ist verpackt in doppelte Anführungszeichen (oder entity-Referenzen für doppelte Anführungszeichen, wie Dimitre Novatchev Antwort zeigt).
"
für die doppelten Anführungszeichen"
.Angewendet, in den Kontext eines XSLT:
Wenn du eine 100% XPath-Lösung, die vermeidet, dass die Verwendung von XSLT-Variablen, dann Dimitre Antwort wäre am besten.
Wenn Sie besorgt sind, wie einfach es ist, zu Lesen, zu verstehen und zu pflegen, dann Michael Kay ' s Vorschlag zur Verwendung von XSLT-Variablen für die quote und Apostroph ist vielleicht das beste.
Hansen: Man kann sein Interesse an einer Lösung, dass nicht alle Variablen bei allen.
Hansen: Bitte berichtigen Sie die falsche Aussage in dieser Antwort "so dass Sie nicht verwenden können, eine entity-Referenz für das Apostroph-Zeichen.". Die gesuchte Zeichenkette kann produziert werden mit einem einzigen Aufruf
concat()
dass nicht um jede variable referenziert.InformationsquelleAutor Mads Hansen
Keine variable ist notwendig,:
Hier ist ein Beispiel, wie man produzieren wollte-Ausgang auf zwei Arten:
Wenn diese transformation wird angewendet auf beliebigen XML-Dokument (nicht verwendet), die gewünschte Ausgabe erzeugt:
Ich arbeite mit einem dosen von verschiedenen XSLT 1.0-und XSLT 2.0-Prozessoren-Sie alle produzieren das gleiche Ergebnis. Möglicherweise werden Sie Verwendung eines nicht konformen XSLT-Prozessor.
Ja, ich denke nicht, dass das das problem ist der Prozessor. Ich bin mir ziemlich sicher, dass es meine PHP-Umgebung wird erstellt, der XSL-und können nicht mit diesem Fall. Ausführen müssen einige unit-test, um zu sehen, was Los ist. Vielen Dank für Ihre Hilfe. Es wirklich geschätzt.
Eigentlich ist es nicht auch der XSLT-Prozessor -- es ist der parser, dass der XSLT-Prozessor verwendet.
InformationsquelleAutor Dimitre Novatchev
Ich finde die einfachste Lösung ist, um Variablen zu deklarieren:
InformationsquelleAutor Michael Kay