vito: Zeichensatzproblem(?) bei "Mix" von XML und HTML im Stylesheet

Hi!

Ich habe (glaube ich) ein Zeichensatzproblem bei der Anzeige von XML-Daten mit eingebundenen Daten aus externen HTML-Dateien:

Es gibt eine XML-Datei, die beim Umwandeln nach HTML mit dem Stylesheet Teile aus einer externen HTML-Datei mittels

<xsl:copy-of select="document(externeHtmlDatei.htm)//*/table" disable-output-escaping="yes"/>

einbindet.

Der Ablauf:
XML-Datei -> XSL-Stylesheet(+Daten aus externeHtmlDatei.htm) -> fertigeHTML.htm

Die dt. Zeichen (ä,ö,ü...) aus der XML-Datei werden im Browser tadellos angezeigt, aber die dt. Zeichen aus der eingebundenen externen HTML-Datei werden in Fragezeichen in einer schwarzen Raute umgewandelt.

Ich nehme an, dass hier 2 Zeichensätze kollidieren.
Ist es möglich, 2 Zeichensätze in einer HTML-Datei zu "vereinen"?

Oder sollte ich davor die Daten aus der externen Datei (eigentlich sind es ~800 Dateien) umwandeln (zB ä -> &#x00e4; )?

schöne Grüße & vielen Dank,
Vito

  1. Hi,

    Die dt. Zeichen (ä,ö,ü...) aus der XML-Datei werden im Browser tadellos angezeigt, aber die dt. Zeichen aus der eingebundenen externen HTML-Datei werden in Fragezeichen in einer schwarzen Raute umgewandelt.

    Ich nehme an, dass hier 2 Zeichensätze kollidieren.

    Zwei abweichende Zeichenkodierungen, ja.

    Ist es möglich, 2 Zeichensätze in einer HTML-Datei zu "vereinen"?

    Nein, ein HTML-Dokument ist in genau einer Zeichenkodierung zu verfassen.

    Oder sollte ich davor die Daten aus der externen Datei (eigentlich sind es ~800 Dateien) umwandeln (zB ä -> &#x00e4; )?

    Die externe Datei in der passenden Kodierung abzuspeichern, sollte ausreichen.

    MfG ChrisB

    1. Ist es möglich, 2 Zeichensätze in einer HTML-Datei zu "vereinen"?

      Nein, ein HTML-Dokument ist in genau einer Zeichenkodierung zu verfassen.

      Oder sollte ich davor die Daten aus der externen Datei (eigentlich sind es ~800 Dateien) umwandeln (zB ä -> &#x00e4; )?

      Die externe Datei in der passenden Kodierung abzuspeichern, sollte ausreichen.

      Vielen Dank, Chris! Mit der Umwandlung funktioniert es jetzt.

      Da ich unter vim nicht weiß, wie ich die Codierung umstelle, habe ich die ä,ö,ü einfach nach Unicode umgewandelt.

      ciao, vito

  2. Oder sollte ich davor die Daten aus der externen Datei (eigentlich sind es ~800 Dateien) umwandeln (zB ä -> &#x00e4; )?

    hi,

    habe die dateien mit einem bash-script (unter cygwin) umgewandelt (und damit das problem gelöst :-) ):

    ---------------------
    #! /bin/bash

    for FILE in ls $@
    do
      #ä,ö,ü,ß durch unicode ersetzen...
      sed -e 's/ä/&#x00e4;/g' -e 's/ö/&#x00f6;/g' -e 's/ü/&#x00fc;/g' -e 's/ß/&#x00df;/g' -e 's/Ä/&#x00c4;/g' -e 's/Ö/&#x00d6;/g' -e 's/Ü/&#x00dc;/g' $FILE > ../output/$FILE
    done
    ---------------------

    einfach die datei im verzeichnis der zu bearbeitenden html-dateien starten ( ./multiedit.sh *.htm ) und die dateien werden im (davor angelegten vz ../output/ abgelegt.

    ciao, vito