Andreas: /XML Doctype

Hallo!

Folgenden Code erzeugt Dreamweaver MX wenn man ein XHTML Dokument in PHP erstellen will:

<?php echo "<?xml version="1.0" encoding="iso-8859-1"?".">"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

(nicht ganz, Dreamweaver verwendet XHTML 1.0, aber der Rest ist gleich)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

den Teil kenne ich, das ist ja das was w3.org empfielt, aber wozu ist

<? echo "<?xml version="1.0" encoding="iso-8859-1"?".">"; ?>

und

<html xmlns="http://www.w3.org/1999/xhtml">

braucht man das? Wofür?

Grüße
Andreas

  1. Folgenden Code erzeugt Dreamweaver MX wenn man ein XHTML Dokument in PHP erstellen will:

    <?php echo "<?xml version="1.0" encoding="iso-8859-1"?".">"; ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
        "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

    [...] wozu ist

    <? echo "<?xml version="1.0" encoding="iso-8859-1"?".">"; ?>

    Das soll die XML-Deklaration ausgeben, der Dreamweaver MX will damit wohl einer groben Unschönheit von PHP entgegenkommen, dass alles, was mit <? beginnt, automatisch als PHP-Code interpretiert wird (solange man es nicht ausschaltet). Das gibt dann

    <?xml version='1.0' encoding='iso-8859-1'?>

    aus. Das ist die XML-Deklaration die über die verwendete XML-Version und die verwendete Zeichenkodierung informiert. Beides sollte man angeben, damit das Dokument korrekt verarbeitet werden kann.

    <html xmlns="http://www.w3.org/1999/xhtml">

    braucht man das? Wofür?

    Wofür man das <html>-Element braucht, dürfte dir ja klar sein, das 'xmlns'-"Attribut" ist eine Namensraum-Deklaration. Namensräume werden in XML verwendet, um Elemente verschiedener Sprachen auseinander zu halten. Stell dir beispielsweise vor, eine Sprache verwendet das <title> Element um Adelstitel auszuzeichnen, während es in XHTML den Titel eines Dokuments auszeichnet. Um Mehrdeutigkeiten zu vermeiden gibt es diese Namensräume. Das <title>-Element heisst nicht mehr nur <title>, sondern

    [http://www.w3.org/1999/xhtml]title

    1. Hi!

      <?php echo "<?xml version="1.0" encoding="iso-8859-1"?".">"; ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
          "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">

      [...] wozu ist

      <? echo "<?xml version="1.0" encoding="iso-8859-1"?".">"; ?>

      Das soll die XML-Deklaration ausgeben, der Dreamweaver MX will damit wohl einer groben Unschönheit von PHP entgegenkommen, dass alles, was mit <? beginnt, automatisch als PHP-Code interpretiert wird (solange man es nicht ausschaltet). Das gibt dann

      <?xml version='1.0' encoding='iso-8859-1'?>

      Aha, hatte mich gewundert warum das nicht direkt im Dokument steht, klar, wegen <??> ;-)

      Aber ist bei XHTML 1.1 die XML-Version 1.0 korrekt? Und hat es Sinn das encoding='iso-8859-1' doppelt vorkommt, nämlich

      <?xml version="1.0" encoding="iso-8859-1"?>

      und

      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

      ? Sollen die Angaben alle für den Browser sein?

      Grüße
      Andreas

      1. Hallo

        Aber ist bei XHTML 1.1 die XML-Version 1.0 korrekt?

        Ja, eine andere XML-Version gibt es bislang nicht.

        Und hat es Sinn das encoding='iso-8859-1' doppelt vorkommt

        Kompatibilität mit alten Browsern vermutlich.
        Die Metaangabe kann man sich aber theoretisch Schenken.
        Die Angabe in der XML-Deklaration wäre aber in diesem Fall zwingend notwendig.

        Grüße

        Daniel

        1. hi

          Und hat es Sinn das encoding='iso-8859-1' doppelt vorkommt
          Kompatibilität mit alten Browsern vermutlich.

          eher "man hat mal gehört, dass es gut sein soll"... Einen praktischen Nutzen hatte diese Angabe nie, ich keine keinen browser, der sie sich auch nur ansieht. Entweder den Charset, den der Server sagt oder selbst irgendwie rausfummeln.

          Grüße aus Bleckede

          Kai

          1. Hallo

            eher "man hat mal gehört, dass es gut sein soll"... Einen praktischen Nutzen hatte diese Angabe nie, ich keine keinen browser, der sie sich auch nur ansieht. Entweder den Charset, den der Server sagt oder selbst irgendwie rausfummeln.

            Der Server sollte auch den Zeichensatz angeben, der da steht.
            Der Validator meckert sogar, wenn das nicht der Fall ist.
            Die Angabe ist wohl eher Informativ, damit man später noch weiß, was man in der Serverconfig angeben muss.

            Grüße

            Daniel

          2. Und hat es Sinn das encoding='iso-8859-1' doppelt vorkommt
            Kompatibilität mit alten Browsern vermutlich.

            eher "man hat mal gehört, dass es gut sein soll"... Einen praktischen Nutzen hatte diese Angabe nie, ich keine keinen browser, der sie sich auch nur ansieht.

            sprichst du von der XML-Deklaration oder von der meta-Angabe? Du hättest in beiden Fällen Unrecht...

            1. hi

              sprichst du von der XML-Deklaration oder von der meta-Angabe? Du hättest in beiden Fällen Unrecht...

              der Meta. Wo wird die mal wirklich ausgelesen und nicht nur in der grauen W3C-Theorie..?

              Grüße aus Bleckede

              Kai

              1. sprichst du von der XML-Deklaration oder von der meta-Angabe? Du hättest in beiden Fällen Unrecht...

                der Meta. Wo wird die mal wirklich ausgelesen und nicht nur in der grauen W3C-Theorie..?

                Von so ziemlich jedem Browser, von Suchmaschinen und nicht minder anderem Kommunikationsgerät das etwas auf sich hält.

        2. Die Angabe in der XML-Deklaration wäre aber in diesem Fall zwingend notwendig.

          Nein, das ist sie nur dann, wenn nicht XML 1.0 verwendet wird (momentan ausgeschlossen) oder die Zeichenkodierung nicht bereits im HTTP-Header (oder einem vergleichbaren Ort, z.B. MIME-Header) angegeben wurde.

      2. Aber ist bei XHTML 1.1 die XML-Version 1.0 korrekt?

        Ja, die XML-Version ist vollkommen unabhängig von der XHTML-Version.

        Und hat es Sinn das encoding='iso-8859-1' doppelt vorkommt, nämlich

        <?xml version="1.0" encoding="iso-8859-1"?>

        und

        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

        Jein. Praktisch kann man sich beide Angaben schenken, da der Browser vom Server über die Verwendete Zeichenkodierung informiert werden sollte. Wenn das geschieht, werden die beiden Angaben auch ignoriert. Wenn man keine Möglichkeit hat, die Kodierung dort angeben zu lassen, gibt es für echte XHTML-Benutzeragenten über die XML-Deklararation die Möglichkeit, die Zeichenkodierung genau zu bestimmen, für Benutzeragenten die mit XML nichts anfangen können, ist letztere Angabe gedacht.

        ? Sollen die Angaben alle für den Browser sein?

        Darüber lässt sich streiten, erstere ja, letztere ist eigentlich so konzipiert, dass der Server die Datei einliest, bevor er sie an den Browser schickt, und so die angebene Zeichenkodierung bzw. andere beliebige HTTP-Header als solche ausgibt, praktisch wurde das nicht umgesetzt, daher nutzen die Browser die Angabe.

        1. Hallo Bjorn,

          ? Sollen die Angaben alle für den Browser sein?
          Darüber lässt sich streiten, erstere ja, letztere ist eigentlich so
          konzipiert, dass der Server die Datei einliest, bevor er sie an den
          Browser schickt, und so die angebene Zeichenkodierung bzw. andere
          beliebige HTTP-Header als solche ausgibt, praktisch wurde das nicht
          umgesetzt, daher nutzen die Browser die Angabe.

          ich mußte bei meinem http_trace einen "sophisticated guess" machen, um
          "echte" HTTP-Header von solchen, die durch LWP aufgrund einer solchen
          Dokument-Analyse ins Environment gesetzt wurden, zu unterscheiden.

          Es gibt also wirklich Leute, die das umsetzen.

          Viele Grüße
                Michael