Whitesnake: Doctype Definition mit DOM erzeugen - wie?

Es geht genauer gesagt um folgende Zeile:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Wie erzeugt man sowas? Die normalen Elemente wie HTML und nachfolgend sind klar, aber wie funktioniert das mit Doctype?

  1. Hallo,

    Es geht genauer gesagt um folgende Zeile:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    Wie erzeugt man sowas? Die normalen Elemente wie HTML und nachfolgend sind klar, aber wie funktioniert das mit Doctype?

    Warum schreibst du das nicht einfach genau so an der entsprechenden Stelle in deiner PHP datei?
    Oder mit echo?
    Oder http://www.php.net/manual/en/ref.dom.php --> DOMDocumentType

    Grüße
    Thomas

    1. Weil ich vielleicht das ganze nicht in eine .php generiere?!?

      1. Hallo,

        Weil ich vielleicht das ganze nicht in eine .php generiere?!?

        1. Warum hast du dann das Thema "PHP" gewählt?
        2. OK, nicht PHP. Soll ich in meinem Glaskugel nachsehen, oder aus dem Kaffeesatz herauslesen womit du es dann generierst?

        Grüße
        Thomas

        1. Man kann mittels php auch stinknormalen HTML Code generieren und das mache ich. Genauer gesagt generiere ich keinen, sondern schreibe ihn in eine .htm Datei rein. Zu jeder guten HTML Datei gehört auch eine Doctype Definition.

    2. Hab es jetzt so probiert, hat erwartungsgemäß nicht funktioniert:

      $doctype=$doc->createDocumentType("HTML PUBLIC", "", "-//W3C//DTD HTML 4.01 Transitional//EN");

      1. Hallo,

        Hab es jetzt so probiert, hat erwartungsgemäß nicht funktioniert:

        $doctype=$doc->createDocumentType("HTML PUBLIC", "", "-//W3C//DTD HTML 4.01 Transitional//EN");

        Das sollte so aussehen:

        $doctype=$doc->createDocumentType("HTML", "-//W3C//DTD HTML 4.01 Transitional//EN", "");

        Der erste Parameter kennzeichnet den Dokumenttyp (hier HTML, aka Wurzelelement), der zweite den Public-Identifier und der dritte den System-Identifier (DTD-Referenz, hier leer).

        Die Zeichenketten PUBLIC bzw. SYSTEM werden dann bei der Verarbeitung generiert.

        MfG, Thomas

        1. Liefert bei mir leider nur folgendes:

          Fatal error: Call to undefined method DOMDocument::createDocumentType() in verzeichnis/forenbereichgenerator.php on line 35

          Das neue Dokument hab ich übrigens so aufgerufen

          $doc=new domDocument;

          1. Hallo,

            Fatal error: Call to undefined method DOMDocument::createDocumentType() in verzeichnis/forenbereichgenerator.php on line 35

            Das neue Dokument hab ich übrigens so aufgerufen

            $doc=new domDocument;

            createDocumentType() ist auf DOMImplementation anzuwenden, z. B. so:

            <?php

            $imp=new DOMImplementation;
              $doctype=$imp->createDocumentType("HTML","-//W3C//DTD HTML 4.01 Transitional//EN","");
              $rootname="html";
              $namespace="";

            $doc=$imp->createDocument($namespace,$rootname,$doctype);
              $root=$doc->documentElement;

            $head=$doc->createElement("head");
              $body=$doc->createElement("body");
              $root->appendChild($head);
              $root->appendChild($body);

            print "<pre>".htmlentities($doc->saveHTML())."</pre>";

            ?>

            Ergebnis:

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
            <html>
            <head></head>
            <body></body>
            </html>

            MfG, Thomas

            1. Hallo! Auf sowas wär ich nie gekommen, es hat aber wunderbar geklappt, wieder ein Problem mehr gelöst. Vielen Dank!