Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: MSXML: umlaute als entites abspeichern

  Alt 23. Jan 2006, 10:42
Hallo Steffen,

Zitat von Aenogym:
das programm, dass den inhalt der XML-datei anzeigt, zeigt aber leider diesen quatsch...
der Fehler ist eindeutig bei diesem Programm zu suchen. Wenn aber du dieses Programm nicht verbrochen hast, dann kannst du unbotsame Zeichen in deinem XML-Dokument durch eine vorherige XSL-Identity-Transformation mit dem output-encoding "US-ASCII" in ihre numeric character entities umwandeln:

Code:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method="html" version="4.0" encoding="US-ASCII"/>

  <xsl:template match="/ | @* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()">
        <xsl:sort select="@titel"/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>
Je nach Inhalt deines Dokumentes musst du noch eine Anpassung machen. Oder du triffst bereits im IXMLDOMDocument Vorsorge, indem du dort eine XML-Deklaration mit der oben genannten Kodierung angibst:

Code:
<?xml version="1.0" encoding="US-ASCII"?>
In Verbindung mit einer DOCTYPE Anweisung können HTML Entities dann auch durch den MSXML Parser durchgeschleust werden, ohne dass sie verändert werden:

Code:
<!DOCTYPE html SYSTEM "html.dtd">
In der Datei html.dtd solltest du dann die gewünschten entities definieren:

Code:
<!ENTITY ouml "&#246;">
Wenn du aber Sonderzeichen in die Textknoten eingetragen hast und absolut HTML character entities gespeichert werden müssen, dann wirst du auf die Methode save() von IXMLDOMDocument verzichten und den wenig eleganten Weg über StringReplace() gehen müssen.

Zitat von Aenogym:
ich habe grad erfahren, dass es irgendetwas wie disable-output-encoding="yes"
Das soll wohl disable-output-escaping heißen und hat deprecated status, weil man beim W3C erkannt hat, dass diese Anweisung mit XML eigentlich nicht vereinbar ist.

Grüße vom marabu
  Mit Zitat antworten Zitat