Moin!
Daten in der XML-Datei:
<key><![CDATA[Hallo Welt]]></key>
Auslesen in der XSL-Datei:
<xsl:value-of select="key"/>
--> Anzeige im Pdf: Hallo WeltAber das funktioniert nicht bei japanischen Schriftzeichen, da diese in der XML-Datei codiert vorliegen. Das Problem:
Daten in der XML-Datei:
<key><![CDATA[ロジウ]]></key>
Auslesen in der XSL-Datei:
<xsl:value-of select="key"/> oder <xsl:value-of select="key" disable-output-escaping="yes"/> (gleicher Effekt)
--> Anzeige im Pdf: ロジウ
Aber gewünschte Anzeige: シルバ (oder was ähnliches)
Das ist aber logisch.
Innerhalb von CDATA-Abschnitten haben alle in XML sonst aktiven Zeichen wie <, > und & ihre Sonderbedeutung verloren. Dementsprechend hast du in deinem XML stehen: "Ein Kaufmanns-Und, ein Doppelkreuz, die Zahl 12525 und ein Semikolon", aber nicht "die numerische Zeichenreferenz auf Unicodezeichen 12525".
Numerische Zeichenreferenzen funktionieren nur außerhalb von CDATA-Bereichen. Innerhalb von CDATA-Bereichen mußt du die Zeichen direkt einfügen (was mit UTF-8 ja auch kein großes Problem ist).
Wenn ich nun in der XML-Datei mit Suchen-Ersetzen die Zeichenketten <!CDATA[ und ]]> entferne, werden die japanischen Zeichen richtig interpretiert und statt ロ steht im Pdf z.B. シ.
Dann bekomme ich allerdings Probleme, wenn ich ein < oder & in den Daten der XML-Datei habe.
Dann wirst du wohl in einem Schritt zwei Dinge gleichzeitig machen müssen: Entweder codiertst du in CDATA alle numerischen Zeichenreferenzen entsprechend der Encoding-Angabe korrekt, oder du wandelst alle <, > und & (bis auf die numerischen Zeichenreferenzen) innerhalb von CDATA in ihre Entities um und entfernst die CDATA-Begrenzung danach.
Ich kann die XML-Datei nur nachträglich durchparsen und etwas suchen und ersetzen. Das ganze müsste automatisch funktionieren können.
Das Problem ist, dass du die Bedeutungsebenen durcheinander gebracht hast. So wie "handy" in der englischen Sprache sehr wohl ein existenter Begriff ist, aber eben nicht "Mobiltelefon" meint, so stehen deine numerischen Zeichenreferenzen jetzt in CDATA, ohne dort das zu bedeuten, was du glaubst.
Die spannende Frage ist: Wie konnte es dazu kommen?
- Sven Rautenberg
My sssignature, my preciousssss!