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:
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