.nils.: <?xml ... in PHP-Dateien

Hallo,

Wenn ich das an erster Stelle einer PHP-Datei schreibe, bekomme ich einen Parse-error:

<?xml version="1.0" encoding="UTF-8" ?>

Wie muß ich das richtig machen, oder ist es nicht so schlimm, wenn ich es weglasse?

Gruß, Nils

  1. echo $begrüßung;

    Wenn ich das an erster Stelle einer PHP-Datei schreibe, bekomme ich einen Parse-error:
    <?xml version="1.0" encoding="UTF-8" ?>

    Gib es als String aus (echo '<?xml ...';) oder deaktiviere in der PHP-Konfiguration short_open_tag.

    echo "$verabschiedung $name";

  2. Hallo,

    Wenn ich das an erster Stelle einer PHP-Datei schreibe, bekomme ich einen Parse-error:

    <?xml version="1.0" encoding="UTF-8" ?>

    Entweder schaltest du die short-Tags aus (ungetestet), oder gibst die XML-Deklaration auch durch PHP aus:

      
    <?php  
    echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";  
    ?>  
    
    

    Wie muß ich das richtig machen, oder ist es nicht so schlimm, wenn ich es weglasse?

    Wenn du XHTML1.0-Strict verwendest, und dein Dokument als UTF-8 kodierst (was ja anscheinend der Fall ist), kannst du die XML-Deklaration einfach weg lassen.

    mfg. Daniel

    1. Hallo,

      Wenn du XHTML1.0-Strict verwendest…

      Oops, nein mit Strict hat das nichts zu tun. Bei Transitional kann man die XML-Deklaration auch weglassen.
      Bei XHTML1.1 (welches aus Kompatiblitätsgründen noch nicht zu empfehlen ist) ist das dagegen nicht mehr erlaubt.

      mfg. Daniel

      1. Hello out there!

        Bei XHTML1.1 (welches aus Kompatiblitätsgründen noch nicht zu empfehlen ist) ist das [Weglassen der XML-Deklaration] dagegen nicht mehr erlaubt.

        Na aber sicher ist es das noch:

        [1]  document ::= prolog element Misc*
        [22] prolog   ::= XMLDecl? Misc* (doctypedecl Misc*)?
                                 ▲
        Im Klartext: „XML-Dokumente sollten mit einer XML-Deklaration beginnen, die die verwendete XML-Version spezifiziert.“ [XML §2.8]

        „Sollten“, nicht „müssen“. [XML §1.2, RFC2119]

        „Ebenso ist es ein Fehler, wenn ein Entity, das weder mit einer Byte-Order-Markierung noch mit einer Kodierungsdeklaration beginnt, eine andere Kodierung als UTF-8 benutzt. Beachten Sie, dass wegen der Tatsache, dass ASCII eine Teilmenge von UTF-8 ist, ASCII-Entities nicht unbedingt eine Kodierungsdeklaration brauchen.“ [XML §4.3.3]

        Also bei Einhaltung gewisser Voraussetzung ist es kein Fehler, wenn keine XML-Deklaration vorhanden ist.

        See ya up the road,
        Gunnar

        PS: Du verwechselst nicht gerade XHTML 1.1 mit XML 1.1?

        --
        „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
        1. Hallo,

          […]
          Im Klartext: „XML-Dokumente sollten mit einer XML-Deklaration beginnen, die die verwendete XML-Version spezifiziert.“

          OK, ich hatte das nur mal im Archiv gelesen und fand es eigentlich auch logisch, da XHTML1.1 ja auch sonst keinerlei Kompatiblitätsanpassungen mehr enthalten darf (z.B. das „lang“-Attribut).

          Also bei Einhaltung gewisser Voraussetzung ist es kein Fehler, wenn keine XML-Deklaration vorhanden ist.

          Müssen XML-Dateien grundsätzlich keine XML-Deklaration haben oder gilt das nur für XHTML1.1?

          PS: Du verwechselst nicht gerade XHTML 1.1 mit XML 1.1?

          Nein. Ich bin beim Stöbern im Archiv mal auf einen Beitrag gestoßen, wo aufgrund der Verwendung von XHTML1.1 darauf hingewiesen wurde, dass dann eine XML-Deklaration unbedingt nötig wäre, jedoch im geposteten Code nicht vorhanden war.

          mfg. Daniel

          1. Hallo Daniel,

            Müssen XML-Dateien grundsätzlich keine XML-Deklaration haben oder gilt das nur für XHTML1.1?

            Gunnar hat doch die XML-Spec zitiert: Wenn Du mit den "Defaults" einverstanden bist, brauchst Du keine XML-Deklaration; <foo>blub</foo> wäre ein wohlgeformtes XML-Dokument, wenn Du eine passende (!) DOCTYPE noch angeben würdest, wäre das Dokument sogar gültig.

            PS: Du verwechselst nicht gerade XHTML 1.1 mit XML 1.1?

            Nein. Ich bin beim Stöbern im Archiv mal auf einen Beitrag gestoßen, wo aufgrund der Verwendung von XHTML1.1 darauf hingewiesen wurde, dass dann eine XML-Deklaration unbedingt nötig wäre, jedoch im geposteten Code nicht vorhanden war.

            Nicht alles, was im Archiv steht, stimmt auch.

            Viele Grüße,
            Christian

            --
            "I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup
            1. Hallo,

              Gunnar hat doch die XML-Spec zitiert[…]

              Oops, naja, wer lesen kann ist klar im Vorteil ;-)
              Ich dachte das ist die XHTML1.1-Spec, aber da steht ja „XML“. *lichtaufgeh*

              Nicht alles, was im Archiv steht, stimmt auch.

              Schon klar. Da XHTML1.1 aber praktisch keine Abwärtkompatiblitsvorkehrungen mehr enthalten darf, fand ich es zumindest passend.

              mfg. Daniel

              1. Hello out there!

                Da XHTML1.1 aber praktisch keine Abwärtkompatiblitsvorkehrungen mehr enthalten darf, fand ich es zumindest passend.

                XHTML-1.1-Dokumente sind ebenso wie XHTML-1.0-Dokumente XML-1.0-Dokumente; also an den XML betreffenden Regeln hat sich von XHTML 1.0 zu 1.1 nichts geändert.

                See ya up the road,
                Gunnar

                --
                „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    2. Hi,

      Wenn du XHTML1.0-Strict verwendest, und dein Dokument als UTF-8 kodierst (was ja anscheinend der Fall ist), kannst du die XML-Deklaration einfach weg lassen.

      Wobei zu beachten ist, daß das ggf. zu anderer Darstellung im IE führen kann (z.B.: der IE 6 geht bei Vorhandensein einer XML-Deklaration in den Quirks-Modus)

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. Hello out there!

    Wenn ich das an erster Stelle einer PHP-Datei schreibe, bekomme ich einen Parse-error:

    <?xml version="1.0" encoding="UTF-8" ?>

    Dein PHP reagiert auf '<?'. Das kannst du ihm abgewöhnen; musst dann natürlich '<?php' verwenden.

    Wie muß ich das richtig machen, oder ist es nicht so schlimm, wenn ich es weglasse?

    Bei XML-Version 1.0 und Zeichencodierung UTF-8 ist eine XML-Deklaration nicht erforderlich.

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
  4. Hallo,

    Dankeschön für die Antworten

    Gruß, Nils