Marc: XML 2 XML: Entities behalten

Hallo!

Ich weiss nicht, aber ich habe ein dummes Problem und hab in meinem schlauen XSLT-Buch nix dazu gefunden:

Ich konvertiere gerade ein XML-Dokument in ein anderes. Dabei werden massig Entities der Form { in der Quelldatei genutzt. In der Ziel-XML-Datei sind diese Entities nun alle interpretiert (also es stehen die echten Zeichen da, zB 'ä'). Wie kann ich es erreichen, dass mir bei der XSLT-Transformation die Entities erhalten bleiben?

Viele Gruesse,
Marc

  1. Hallo,

    Ich konvertiere gerade ein XML-Dokument in ein anderes. Dabei werden massig Entities der Form { in der Quelldatei genutzt. In der Ziel-XML-Datei sind diese Entities nun alle interpretiert (also es stehen die echten Zeichen da, zB 'ä'). Wie kann ich es erreichen, dass mir bei der XSLT-Transformation die Entities erhalten bleiben?

    Kannst gar nichts machen, XML-Prozessoren müssen sich soi verhalten, da solche Entities inkludiert werden müssen. D.h. der Prozessor muss die ersetzen.

    http://edition-w3c.de/TR/2004/REC-xml11-20040204/#included
    "Ein Entity wird inkludiert, wenn sein Ersetzungstext an der Stelle der Referenz selbst geladen und verarbeitet wird, so als ob es Teil des Dokumentes wäre, und zwar an der Stelle, an der die Referenz steht."

    So ziemlich die einzige Möglichkeit die es gäbe ist die Verwendung von CDATA für jeden Text.

    <text>
       <![CDATA[&#162; &#163; &#164; &#165; &#166; &#167; &#168; &#169; &#170; &#171; &#172; &#173; &#174; &#175; &#176; &#177; &#178; &#179;]]>
    </text>

    <xsl:value-of select="text" disable-output-escaping="yes" />

    in diesem Fall, bleiben die Entities als solches erhalten.

    Grüße
    Thomas

    1. Hallo Thomas!

      Na super...
      Ich hab mir dann doch nen Workaround ausgedacht (&amp;ouml; -> &ouml;) :-)

      Viele Gruesse,
      Marc

      1. Hello out there!

        Ich hab mir dann doch nen Workaround ausgedacht (&amp;ouml; -> &ouml;) :-)

        Wozu eigentlich das Ganze?

        Warum willst du nicht vernünftig 'ö' im transformierten XML-Dokument zu stehen haben?

        “It is almost always preferable to use an encoding that allows you to represent the characters in their normal form, rather than using character entities or NCRs.” [QA-ESCAPES]

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
        1. Hallo!

          Warum willst du nicht vernünftig 'ö' im transformierten XML-Dokument zu stehen haben?

          Ganz einfach: weil diese XSLT-Transformation nur ein Zwischenschritt in einem groesseren Ablauf ist und in diesem grossen Zusammenhang ist es sinnvoll und richtig, dass die Entities erhalten bleiben. :-)

          Viele Gruesse,
          Marc

          1. Hello out there!

            Warum willst du nicht vernünftig 'ö' im transformierten XML-Dokument zu stehen haben?

            Ganz einfach: weil diese XSLT-Transformation nur ein Zwischenschritt in einem groesseren Ablauf ist und in diesem grossen Zusammenhang ist es sinnvoll und richtig, dass die Entities erhalten bleiben. :-)

            Wäre es nicht sinnvoller, in dem größeren Ablauf von Anfang bis Ende UTF-8 als Zeichencodierung zu verwenden, dann sämtliche Zeichen als solche in den Quelltext zu schreiben und sich das Rumgemansche zu ersparen?

            See ya up the road,
            Gunnar

            --
            “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
            1. Moin!

              Wäre es nicht sinnvoller, in dem größeren Ablauf von Anfang bis Ende UTF-8 als Zeichencodierung zu verwenden, dann sämtliche Zeichen als solche in den Quelltext zu schreiben und sich das Rumgemansche zu ersparen?

              Tja, wenn ich das als ausfuehrende Instanz mal beeinflussen koennte.... :-)

              Gruesse,
              Marc

      2. Hallo,

        Na super...
        Ich hab mir dann doch nen Workaround ausgedacht (&amp;ouml; -> &ouml;) :-)

        Wenn du nicht eine DTD benutzt, die auf die HTML-Entities verweist (wie z.B. die XHTML-DTD) oder diese enthält, sind solche (HTML-)Entities aus der Sicht von XML nicht definiert und führen zu Fehlern.

        Grüße
        Thomas