Anonymous
Not applicable

Fehlerhafte Konvertierung von Sonderzeichen in XML

Ich erzeuge über den HTML Ausgabekanal ein XML (Vorlagensatz html mit Ziel Ext. xml). Wenn ich dort über $CMS_VALUE()$ Texte mit Sonderzeichen z.B. "für alle Fälle" ausgebe erhalte ich keine Fehlermeldung, wenn der Text jedoch vorher mit text.convert konvertiert wurde erhalte ich z.B. für das ü den Fehler "Entität uuml ist nicht definiert". Wenn ich die Sonderzeichen durch die entsprechenden Sequenzen der W3C Recomendations (https://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_XHTML_Latin_1_Character_Ent...) ersetzte, funktionierts auch.

Da die Texte an der Stelle, an der sie als XML ausgegeben werden soll bereits mit text.convert konvertiert wurden, würde mir als Lösung nur einfallen in einem Template alle Sonderzeichen durch die Sequenzen aus dem W3C Dokument zu ersetzten. Gibt es eine andere Möglichkeit, z.B. an dieser Stelle eine andere Regel für convert zu verwenden?

0 Kudos
2 Replies
hoebbel
Crownpeak employee

Hallo Herr Leicht,

Gegenfrage - warum sind die Texte denn schon mit text.convert konvertiert an der Stelle, an der Sie im XML ausgegeben werden sollen?

Die saubere Lösung wäre es, entweder im Ausgabekanal als Standardkonvertierungsregel eine zu hinterlegen, welche die korrekten Ersetzungen durchführt (z.B. "Unicode to XML", evtl. Unicode to FOP Entities oder eine selbst geschriebene) oder die entsprechende Konvertierungsregel i Templat edirekt anzugeben, also text.convert("Unicode to XML") oder besser text.convert2("Unicode to XML")

Tipp:

Die Konvertierungsregel für den Ausgabekanal können Sie hier setzen:

ServerManager->Projekt->Eigenschaften->Vorlagensätze->entsprechenden Vorlagensatz bearbeiten

Eine neue Konvertieurngsregel können Sie hier anlegen:

ServerManager->Server/Eigenschaften->Konvertierungsregeln

Viele Grüsse aus Dortmund,

Holger Höbbel

Anonymous
Not applicable

Hallo Herr Höbbel,

die Texte sind an der Stelle schon konvertiert, weil ich den Text aus einem anderen Template bekomme.

Ich habe mich für die einfachere Variante entschieden: <![CDATA[]]> um die Texte schreiben.

0 Kudos