AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi MSXML: umlaute als entites abspeichern
Thema durchsuchen
Ansicht
Themen-Optionen

MSXML: umlaute als entites abspeichern

Ein Thema von Aenogym · begonnen am 23. Jan 2006 · letzter Beitrag vom 24. Jan 2006
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz