JotKa: XHTML: Zeichencodierung: Apostroph

Hi zusammen,

wie in http://selfhtml.teamone.de/html/xhtml/unterschiede.htm#xml_deklaration ff. zu lesen ist, handelt es sich bei xhtml-Dateien um XML-Dokumente.

Gemäß XML-Standard sollte man darum annehmen dürfen, daß auch die XML-Zeichencodierung angewendet werden muß, insbesondere also Apostrophs als ' zu maskieren sind.

In folgendem Dateifragment (Dateinamenendung ".html" oder ".xhtml")

<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title>Jim's Beverages</title>

wird dieses Entity aber vom MSIE weder in Version 5.5 noch 6.0 aufgelöst. Im Fenstertitel erscheint - anders als bei anderen benannten Zeichen ([link:http://selfhtml.teamone.de/html/referenz/zeichen.htm) - das unaufgelöste "'".

Anders als die anderen in XML vordefinierten Entities ist "'" in HTML nicht definiert. Das ist wohl der Grund für das Browserverhalten.

Selbstverständlich besteht die Möglichkeit, das Apostroph mit "&#39;" zu maskieren. Dann ist es html- und XML-konform. Doch auch jenseits dieser Ausweichlösung sollte definiert sein, ob und ggf. wie Apostrophs (und evtl. weitere Zeichen?) in xhtml zu maskieren sind.

Weiß jemand, ob es dazu eine Festlegung gibt? Oder ist das eine Lücke in den Normen? Oder ein Bug im MSIE?

Danke und Gruß

JotKa

  1. Hi!

    ' ist in den Entitiysets zu XHTML1.0 definiert: http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent (bzw. für xhtml-module http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-special.ent

    Allerdings juckt das M$ garnicht: http://msdn.microsoft.com/workshop/author/dhtml/reference/charsets/charset3.asp was auch nicht weiter verwunderlich ist da ' erst seit XHTML1.0 ein benanntes Entity ist (war's bis HTML4.01 nicht).

    Das ist widerum logisch da im Gegensatz zu XML (und somit XHTML) Attributwerte nur in Anführungszeichen gesetzt werden dürfen, nicht wie bei XML auch in Apostrophe.

    Gruß Herbalizer

    1. [HTML definiert ' nicht]
      Das ist widerum logisch da im Gegensatz zu XML (und somit XHTML) Attributwerte nur in Anführungszeichen gesetzt werden dürfen, nicht wie bei XML auch in Apostrophe.

      Das Gegenteil ist richtig.

      1. [HTML definiert ' nicht]
        Das ist widerum logisch da im Gegensatz zu XML (und somit XHTML) Attributwerte nur in Anführungszeichen gesetzt werden dürfen, nicht wie bei XML auch in Apostrophe.

        Das Gegenteil ist richtig.

        Wie? Ei der Daus! Tatsächlich http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2

  2. Gemäß XML-Standard sollte man darum annehmen dürfen, daß auch die XML-Zeichencodierung angewendet werden muß, insbesondere also Apostrophs als ' zu maskieren sind.

    Ich verstehe nicht, was du mit "XML-Zeichencodierung" meinst, aber dein Nachsatz ist definitiv falsch. Es gibt nur eine einzige Situation, in der "'" nicht literal vorkommen darf, das ist in Attributwerten, die mit "'" begrenzt werden, also

    <elem att = 'Ma'am' />

    ist natürlich ungültig. Ansonsten darfst du "'" überall literal verwenden.

    <?xml version="1.0" encoding="iso-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title>Jim's Beverages</title>

    wird dieses Entity aber vom MSIE weder in Version 5.5 noch 6.0 aufgelöst.

    Der MSIE gibt auch bis einschliesslich Version 6 nicht vor, XHTML zu unterstützen, mit anderen Worten, er tut es nicht und verarbeitet das Dokument als HTML-Dokument. In HTML gab es kein '. In der demnächst zu veröffentlichen Zweiten Ausgabe von XHTML 1.0 wird das auch verdeutlicht und "vorgeschlagen" &#39; zu verwenden.

    Anders als die anderen in XML vordefinierten Entities ist "'" in HTML nicht definiert. Das ist wohl der Grund für das Browserverhalten.

    Richtig.

    Selbstverständlich besteht die Möglichkeit, das Apostroph mit "&#39;" zu maskieren. Dann ist es html- und XML-konform. Doch auch jenseits dieser Ausweichlösung sollte definiert sein, ob und ggf. wie Apostrophs (und evtl. weitere Zeichen?) in xhtml zu maskieren sind.

    Zu maskieren sind Zeichen immer dann, wenn man nicht will, dass sie entsprechend einer etwaigen besonderen Bedeutung interpretiert werden. Man muss sie in einem der folgenden Fälle maskieren

    ' => s.o.
      " => entsprechend '
      > => In der Sequenz ]]>
      < => immer
      & => immer

    *wie* man das macht ist egal.

    Weiß jemand, ob es dazu eine Festlegung gibt? Oder ist das eine Lücke in den Normen? Oder ein Bug im MSIE?

    Er unterstützt XHTML nicht.