Olaf: HTML Attribute zwingend mit "" ?

Hallo zusammen,

mir fällt im Quelltext verschiedenster HTML Seiten immer wieder auf, dass manchmal Attribute mit Hochkommata, manchmal aber einfach ohne notiert werden.

<div ID="bla"> findet sich also genauso wie <div=bla>

Beide Schreibweisen scheinen in allen Browsern zu funktionieren. Sind beide Schreibweisen eigentlich gültiges HTML oder sollte man bei den Hochkommata bleiben?

Was meint Ihr?

Dank & Gruss

Olaf

  1. Hi!
    Offizielle Version: Mit Hochkomma.
    Mir persönlich wäre es lieb, wenn ich sie weglassen könnte, da dies meine PHP-Skripte um einiges vereinfachen würde.
    Wenn ich das aber tue, weiß ich genau, dass irgendein People vom Mars mit der Browser AOL 712.9 Beta oder Telecom tunichgut 1.0 plötzlich mit Problemen auf mich zurennt und lauthals schimpft: "Wie kannst du?" - und zwar mit Anführungsstrichen!
    Deshalb lasse ich es so - da kann ich mir wenigstens keine Vorwürfe machen.

    1. Vielen Dank für Eure Antworen. Das hilft mir schon mal weiter.

      Gruss

      Olaf

    2. Hallo,

      Mir persönlich wäre es lieb, wenn ich sie weglassen könnte, da dies meine PHP-Skripte um einiges vereinfachen würde.

      Naja wenn du deinen Code sauber schreibst dann ist genau diese Vereinfachung verschwindend gering.

      Jeena

    3. Ich grüsse den Cosmos,

      Mir persönlich wäre es lieb, wenn ich sie weglassen könnte, da dies meine PHP-Skripte um einiges vereinfachen würde.

      Kannst du da mal ein Beispiel geben?

      echo '<img="bild.jpg" />';

      macht bei mir einen Tastendruck (Quotes werden automatisch geschlossen) mehr als ein

      echo '<img=bild.jpg />';

      Ich seh also keinen Vorteil, eher nen Nachteil, da die Übersichtlichkeit (nicht nur des erzeugten Codes sondern auch im PHP-Quellcode) leidet. Anhand der Quotes kann ich auf einen Blick erfassen, wie der String aufgebaut ist, weil dadurch eine gewisse Struktur gegeben ist.

      Möge das "Self" mit euch sein

      --
      Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
      ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
      1. Moin,moin.
        No Sir, so net!
        echo "bla" kann doch jeder.
        Wie wärs denn mal mit der Ausgabe einer JavaScriptanweisung?

        onmouseover="run('text');"

        Was willst Du tun?

        echo "onmouseover="run('text');"" ????

        Wäre da eine Schachtelung weniger, hätte ich diese Probleme nicht!

        Und _das_ würde meine PHP-Scripte deutlich vereinfachen.

        Grüße.

        1. Hallo,

          Was willst Du tun?

          echo "onmouseover="run('text');"" ????

          Nein,

          echo 'onmouseover="run('text');"'

          Extrem kompliziert! ;-)

          Aber HTML-Quelltext lagert man meiner Ansicht nach sowieso besser in Templates aus. Dann hat man solche Probleme nicht.

          Jonathan

          1. echo 'onmouseover="run('text');"'

            Wenn Du den String in einzelne Anführungsstriche setzt, kannst Du keine Variablen einbinden, etwa so:
            echo 'onmouseover="$function...
            wobei $function eine variable ist. Mit
            echo "onmouseover='$function...
            würde der Inhalt der Variablen ausgegeben werden.
            Templates sind toll aber können auch nicht immer eingesetzt werden.
            Ich arbeite gerade an einem Projekt, wo der Anwender selbst das JavaScript eingeben will, welches dann bei Eintritt einer Bedingung daten- und situationsabhängig ausgegeben wird. Das nenn' ich eine dynamische Dynamik.
            Ich wollte ja auch nur andeuten, dass es manchmal schön wäre, wenn nicht wirklich alle Anführungszeichen gesetzt werden müssen, aber das ist eben so.

            1. Hallo,

              Wenn Du den String in einzelne Anführungsstriche setzt, kannst Du keine Variablen einbinden, etwa so:

              In deinem Beispiel waren keine Variablen. Mit Variablen würde ich's so machen:

              echo "on­mou­seo­ver­="run('$tex­t');""

              Auch nicht sehr kompliziert.

              Jonathan

            2. Ich grüsse den Cosmos,

              echo 'onmouseover="run('text');"'
              Wenn Du den String in einzelne Anführungsstriche setzt, kannst Du keine Variablen einbinden, etwa so:
              echo 'onmouseover="$function...

              echo 'onmouseover="' . $function ...

              Allein schon wegen der übersichtlichkeit ist das vorzuziehen.

              Templates sind toll aber können auch nicht immer eingesetzt werden.

              Sagt wer? Die Trennung von Design und Code ist immer möglich, auch wenn es sich nur um ein Script und ein Template handelt.

              Ich arbeite gerade an einem Projekt, wo der Anwender selbst das JavaScript eingeben will, welches dann bei Eintritt einer Bedingung daten- und situationsabhängig ausgegeben wird. Das nenn' ich eine dynamische Dynamik.

              Und? Ich seh keine kompliziertheit darin, einen eigegeben String per PHP zu quoten.

              Du hast kein Argument gebracht, das deine Aussage untermauert, eher im Gegenteil.

              Möge das "Self" mit euch sein

              --
              Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
              ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  2. Für Attribute sind " und ' erlaubt, einige wenige Attribute dürfen auch ohne Quotes geschrieben werden (ohne in Standards zu wühlen): Zahlen und einzelne Wörter aus ASCII-Buchstaben (width=42, checked=checked). Sobald Leerzeichen oder Sonderzeichen im Spiel sind, sind Quotes Pflicht.

    Alexander

  3. Hallo,

    mir fällt im Quelltext verschiedenster HTML Seiten immer wieder auf, dass manchmal Attribute mit Hochkommata, manchmal aber einfach ohne notiert werden.
    [...] Sind beide Schreibweisen eigentlich gültiges HTML oder sollte man bei den Hochkommata bleiben?

    es wird empfohlen, Attributwerte immer in Anführungszeichen zu setzen, dann kann man zumindest nichts falsch machen.

    Die Anführungszeichen sind Pflicht
     * in XHTML unabhängig vom Attributwert
     * in HTML, sobald der Attributwert Sonderzeichen außer Buchstaben und Ziffern enthält.
    Ergo: NUR in HTML, und da auch NUR wenn der Attributwert ausschließlich Buchstaben und Ziffern enthält, darf man die Anführungszeichen weglassen.

    Die Erfahrung aus dem Alltag zeigt aber, dass die meisten Browser hier wesentlich toleranter sind, weshalb auch eine fehlerhafte Notation (leider) meistens noch zum gewünschten Ergebnis führt. Ich finde strengere, weniger fehlertolerante Systeme grundsätzlich besser. Sie vermindern das Risiko, dass man Fehler lange Zeit unbemerkt mitschleppt, die sich irgendwann doch auswirken, wenn man am wenigsten daran denkt.

    So long,
     Martin

    --
    Der Bäcker schlägt die Fliegen tot
    Und macht daraus Rosinenbrot.
    1. Hello out there!

      * in HTML, sobald der Attributwert Sonderzeichen außer Buchstaben und Ziffern enthält.

      Nein, es dürfen weitere Zeichen im Attributwert auftauchen, ohne dass Anführungszeichen in HTML 4.01 Pflicht wären. Die Spec [HTML401 §3.2.2] sagt, welche.

      Ob einfache oder doppelte Anführungszeichen verwendet werden, ist in HTML wie in XHTML egal; es sei denn, im Attributwert kommen unmaskierte Anführungszeichen vor. (Wenn das einfache Anführungszeichen im Attributwert unmaskiert vorkommt, muss dieser in doppelte Anführungszeichen eingeschlossen sein. Wenn das doppelte Anführungszeichen im Attributwert unmaskiert vorkommt, muss dieser in einfache Anführungszeichen eingeschlossen sein.)

      See ya up the road,
      Gunnar

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

    <div ID="bla"> findet sich also genauso wie <div=bla>

    Letzteres ist definitiv falsch und ein Funktionieren reine Glückssache.
    MfG, at