Johannes Rux: Umlaute XML und CSS

Hallo,

ich habe es geschafft, eine Serie von XML-Dokumenten mit CSS so darzustellen, wie ich das möchte. Das einzige Problem besteht darin, dass die Umlaute in den XML-Dateien nicht direkt erscheinen, sondern als ä etc. Mit dem IExplorer werden sie dennoch dargestellt, bei Opera fliegen sie raus, in Mozilla kommt ein Parsing Error (undefined entity). (Wie) kann ich die korrekte Darstellung erreichen?

Das Problem taucht unabhängig davon auf, ob ich iso-8859-1 oder UTF-8 in der XML-Deklaration verwende.

  1. Hi,

    ich habe es geschafft, eine Serie von XML-Dokumenten mit CSS so darzustellen, wie ich das möchte. Das einzige Problem besteht darin, dass die Umlaute in den XML-Dateien nicht direkt erscheinen, sondern als ä etc.

    Wo hast Du diese Entities für Dein XML definiert?

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Wo hast Du diese Entities für Dein XML definiert?

      cu,
      Andreas

      In der DTD finden sich folgende Definitonen:

      <!ENTITY auml "&#228;">
      <!ENTITY Auml "&#196;">
      <!ENTITY ouml "&#246;">
      <!ENTITY Ouml "&#214;">
      <!ENTITY uuml "&#252;">
      <!ENTITY Uuml "&#220;">
      <!ENTITY szlig "&#223;">

      <!ENTITY lt     "&#38;#60;">
      <!ENTITY gt     "&#62;">
      <!ENTITY amp    "&#38;#38;">
      <!ENTITY apos   "&#39;">
      <!ENTITY quot   "&#34;">
      <!ENTITY nbsp   "&#160;">
      <!ENTITY ldquo  "&#38;#x201C;">
      <!ENTITY mdash  "&#38;#x2014;">
      <!ENTITY nbsp   " ">
      <!ENTITY rdquo  "&#38;#x201D;">
      <!ENTITY sect   "&#167;">

      1. Hi,

        Wo hast Du diese Entities für Dein XML definiert?

        cu,
        Andreas

        In der DTD finden sich folgende Definitonen:

        extern oder intern? Externe Entities werden IIRC vom Mozilla nicht aufgelöst.

        <!ENTITY lt     "&#38;#60;">

        Bist Du Dir da sicher mit dem Wert?

        <!ENTITY amp    "&#38;#38;">

        Bist Du Dir da sicher mit dem Wert?

        <!ENTITY nbsp   "&#160;">

        s.u.

        <!ENTITY ldquo  "&#38;#x201C;">

        Bist Du Dir da sicher mit dem Wert?

        <!ENTITY mdash  "&#38;#x2014;">

        Bist Du Dir da sicher mit dem Wert?

        <!ENTITY nbsp   " ">

        Bist Du Dir da sicher mit dem Wert? Und warum nochmal?

        <!ENTITY rdquo  "&#38;#x201D;">

        Bist Du Dir da sicher mit dem Wert?

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. In der DTD finden sich folgende Definitonen:

          extern oder intern? Externe Entities werden IIRC vom Mozilla nicht aufgelöst.

          Extern, das erklärt dann wohl einiges...

          <!ENTITY lt     "&#38;#60;">

          Bist Du Dir da sicher mit dem Wert?

          Nein, die DTD stammt aber auch nicht von mir... Wo finde ich denn korrekte Werte?

          Gruss

        2. Hallo,

          <!ENTITY lt     "&#38;#60;">

          Bist Du Dir da sicher mit dem Wert?

          Ja.
          <!ENTITY lt     "&#38;#60;">
          <!ENTITY gt     "&#62;">
          <!ENTITY amp    "&#38;#38;">
          <!ENTITY apos   "&#39;">
          <!ENTITY quot   "&#34;">
          <!ENTITY nbsp   "&#160;">
          <!ENTITY mdash  "&#38;#x2014;">
          <!ENTITY ldquo  "&#38;#x201C;">
          <!ENTITY rdquo  "&#38;#x201D;">

          Das ist alles richtig so. ;-)

          Grüße
          Thomas

          PS: Das hat jemand vom W3C, aus der DTD für die Spez. übernommen.

          1. Hi,

            Ja.
            <!ENTITY lt     "&#38;#60;">
            <!ENTITY gt     "&#62;">
            <!ENTITY amp    "&#38;#38;">
            <!ENTITY apos   "&#39;">
            <!ENTITY quot   "&#34;">
            <!ENTITY nbsp   "&#160;">
            <!ENTITY mdash  "&#38;#x2014;">
            <!ENTITY ldquo  "&#38;#x201C;">
            <!ENTITY rdquo  "&#38;#x201D;">

            Das ist alles richtig so. ;-)

            Ich hätt ja vor dem jeweils 2. Zeichen noch ein & erwartet.
            Und warum überhaupt die 2 Zeichen?

            Aus der HTML-4.01-Liste:

            <!ENTITY amp     CDATA "&#38;"   -- ampersand, U+0026 ISOnum -->
            <!ENTITY lt      CDATA "&#60;"   -- less-than sign, U+003C ISOnum -->
            <!ENTITY gt      CDATA "&#62;"   -- greater-than sign, U+003E ISOnum -->

            Scheint wieder mal so einer der kleinen, feinen Unterschiede zwischen HTML und XML zu sein
            nicht nur daß kein CDATA dabeisteht...

            cu,
            Andreas

            --
            MudGuard? Siehe http://www.Mud-Guard.de/
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hallo,

              Das ist alles richtig so. ;-)

              Ich hätt ja vor dem jeweils 2. Zeichen noch ein & erwartet.

              Das wir ja durch &#38; gemacht

              Und warum überhaupt die 2 Zeichen?

              Weil sonst die Entity "gleich" ersetzt wird. Was beim < dazu führte, dass es ein echtes < im Quelltext kommt und nicht ein maskiertes.

              <?xml version="1.0" encoding="iso-8859-1"?>
              <!DOCTYPE data [
              <!ENTITY lt     "&#38;#60;">
              <!ENTITY gt     "&#62;">
              <!ENTITY amp    "&#38;#38;">
              <!ENTITY apos   "&#39;">
              <!ENTITY quot   "&#34;">
              <!ENTITY nbsp   "&#160;">
              <!ENTITY mdash  "&#38;#x2014;">
              <!ENTITY ldquo  "&#38;#x201C;">
              <!ENTITY rdquo  "&#38;#x201D;">
              ]>

              <data>
              < > & ' â€” â€œ â€
              </data>

              Natürlich könnte man in XML auf die ersten fünf verzichten, da diese  in XML-Standard quasi "eingrbrannt" sind.
              <!ENTITY lt     "&#38;#60;">
              <!ENTITY gt     "&#62;">
              <!ENTITY amp    "&#38;#38;">
              <!ENTITY apos   "&#39;">
              <!ENTITY quot   "&#34;">

              Aus der HTML-4.01-Liste:
              Scheint wieder mal so einer der kleinen, feinen Unterschiede zwischen HTML und XML zu sein
              nicht nur daß kein CDATA dabeisteht...

              Das ist ja auch eine SGML-DTD ;-)

              Grüße
              Thomas

        3. Externe Entities werden IIRC vom Mozilla nicht aufgelöst.

          Dumme Frage: Gibt es überhaupt eine Möglichkeit, XML-Dateien mit einer externen DTD so ins Web zu stellen, dass sie von Mozilla/Opera gelesen werden können? Mit dem blöden IExplorer klappt das ja auch...

          Oder muss ich jetzt die ganzen Entities in jedes Dokument einfügen?

          Gruss

          1. Hallo,

            Dumme Frage: Gibt es überhaupt eine Möglichkeit, XML-Dateien mit einer externen DTD so ins Web zu stellen, dass sie von Mozilla/Opera gelesen werden können? Mit dem blöden IExplorer klappt das ja auch...

            Nein. Zur Zeit nicht.
            Der "blöde" IE leistet dafür ganze Arbeit.

            Grüße
            Thomas

            1. Hi,

              Dumme Frage: Gibt es überhaupt eine Möglichkeit, XML-Dateien mit einer externen DTD so ins Web zu stellen, dass sie von Mozilla/Opera gelesen werden können? Mit dem blöden IExplorer klappt das ja auch...
              Nein. Zur Zeit nicht.

              Ein Grund, serverseitig nach (X)HTML zu transformieren - da hat man selbst Kontrolle über die verwendeten Tools.

              cu,
              Andreas

              --
              MudGuard? Siehe http://www.Mud-Guard.de/
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
              1. Hallo,

                Dumme Frage: Gibt es überhaupt eine Möglichkeit, XML-Dateien mit einer externen DTD so ins Web zu stellen, dass sie von Mozilla/Opera gelesen werden können? Mit dem blöden IExplorer klappt das ja auch...
                Nein. Zur Zeit nicht.

                Ein Grund, serverseitig nach (X)HTML zu transformieren - da hat man selbst Kontrolle über die verwendeten Tools.

                Man siehst es auch hier im Forum, dass immer mehr Leute versuchen XML/XSLT clientseitig zu verwenden und da ist der IE einfach der bessere Browser. Es ist eigentlich schade, aber Mozilla ist ziemlich armselig was das angeht und sorgt jetzt schon selbst dafür, dass er in der näheren Zukunft kein Konkurrenz mehr für den IE darstellt.
                Bleibt nur zu hoffen, dass der Druck von den User einmal groß genug sein wird um die Entwickler von Mozilla zum Umdenken zu bewegen.
                Dabei hat Mozilla vieles vom IE übernommen (XML Data-Islands, XML HTTP -Request etc.).

                Da bleibt einem wirklich oft nur die Serverseite.

                Grüße
                Thomas