Tim Tepaße: Unbekannte Attribute in HTML 5

Beitrag lesen

Hallo Cybaer,

Es wundert mich, dass immernoch so wenige verstehen, dass es immer HTML5 ist. Egal wie viele unerlaubte Elemente und Attribute vorkommen.

Also zu behaupten, ich hätte den Workung Draft verstanden, wäre glatt gelogen. Ich habe noch nicht mal die Zeit gefunden, ihn komplett zu lesen. :-> Aber führe mich ins Licht, bzw. zu der Stelle, die deine sehr absonderlich klingende Behauptung a) belegt und b) bitte auch begründet.

Die passende Stelle dafür ist Abschnitt 8: The HTML syntax, insbesondere 8.2 Parsing HTML documents - da es für die HTML 5 Serialisierung keine Metasyntax wie SGML oder XML gibt.

In der Tokenisierung werden Attribute generell nur als A-Z beschrieben (vorher auf Großschreibung normalisiert). In der Tree construction phase gilt:

When the steps below require the UA to create an element for a token, the UA
  must create a node implementing the interface appropriate for the element type
  corresponding to the tag name of the token (as given in the section of this
  specification that defines that element, e.g. for an a element it would be the
  HTMLAnchorElement interface), with the tag name being the name of that element,
  with the node being in the HTML namespace, and with the attributes on the node
  being those given in the given token.

Beachte: Es wird keine Aussage über Bedingungen an die Attribute gestellt. Wenn etwas da ist, dass der abstraken Attribut-Syntax entspricht, wird es als Attribut behandelt. DOM 5 sagt nur aus, dass der bestimmte DOM Attribute (aus den jeweiligen Interfaces) bestimmte Content Attribute (in der HTML 5 Syntax bzw. der XML Syntax von XHTML 5) reflektieren müssen. Mehr nicht. Wird Dich vielleicht interessieren, diese Agnostik gilt auch gegenüber unbekannten Elementen, es wird nur explizit ein Knoten im DOM dafür angelegt:

The interface appropriate for an element that is not defined in this
  specification is HTMLElement.

Das überlebt dann auch Roundtrips, aus Serialising HTML Documents:

If the child node is an Element:
  ...
  For each attribute that the element has, append a U+0020 SPACE character, the
  attribute's name (which, for attributes set by the HTML parser or by
  Element.setAttributeNode() or Element.setAttribute(), will be lowercase), a
  U+003D EQUALS SIGN (=) character, a U+0022 QUOTATION MARK (") character, the
  attribute's value, escaped as described below, and a second U+0022 QUOTATION
  MARK (") character.

Nur wird da die eigentlich flexible Syntax verhübschert. ;)

...

Das Verhalten zur DOM-Konstruktion ist übrigens ähnlich zu demjenigen, mit dem XML-Dokumente in DOM-Dokumente umgewandelt werden – und damit gilt das für die XHTML 5 Serialisierung. Auch bei XML/XML NS können beliebige Attribute im Dokument vorkommen, wenn dieses nicht mit einer DTD ausgestattet sind. Dort entscheidet dann allein die Syntax über den Attributstatus. Und XHTML 5 hat ja weder formelle DTD noch ein formelles XML Schema.

Bei XML kommen dann natürlich noch eventuelle Namensräume vor, ein ganz eigenes Thema. Es gibt sogar Bestrebungen einen Hauch von Namensraumerkennung in die HTML 5 Syntax reinzubringen. Einerseits um schöne Dinge wie z.B. SVG auch für die HTML 5 Syntax freizuschalten zum anderen aus Abwärtskompabilität. Es gibt ja noch haufenweise XHTML 1.0 oder gar XHTML 1.1 Dokumente da draussen, die per text/html versendet werden, nach der HTML 5 Spec werden die dann nach der HTML 5 Syntax verarbeitet.

Tim

2 112

Erster Arbeitsentwurf von HTML5 veröffentlicht

Daniel unreg
  • html
  1. 1
    Cheatah
    1. 0
      Daniel unreg
      1. 0
        Cheatah
        1. 0
          Daniel unreg
        2. 0
          Sven Schodt
        3. 0
          Cybaer
          1. 0
            molily
            1. 0
              Cybaer
          2. 0
            Daniel unreg
            1. 0
              Cybaer
              1. 0
                Daniel unreg
      2. 0
        ChrisB
        1. 0
          Daniel unreg
  2. 1
    Christoph Schnauß
    1. 0
      Daniel unreg
      1. 0
        Jeena Paradies
        1. 0
          Auge
        2. 0
          molily
        3. 0
          ChrisB
        4. 0
          Timo "God's Boss" Reitz
          1. 0
            Daniel unreg
            1. 0
              Timo "God's Boss" Reitz
              1. 0
                Daniel unreg
          2. 0
            Jeena Paradies
  3. 0
    stareagle
  4. 0
    Felix Riesterer
    1. 0
      Daniel unreg
    2. 0
      molily
  5. 0
    Marc Reichelt
    1. -1
      Daniel unreg
      1. 1
        frankx
        1. 0
          Daniel unreg
      2. 0
        Marc Reichelt
        1. 0
          Daniel unreg
          1. 0
            Jeena Paradies
  6. 0
    Klawischnigg
  7. 0
    Jonathan
    1. 0
      Timo "God's Boss" Reitz
      1. 0
        Jonathan
        1. 0
          Gunnar Bittersmann
          1. 0
            Daniel unreg
          2. 0
            molily
          3. 0
            Jonathan
            1. 0
              Daniel unreg
        2. 0
          MudGuard
          1. 0
            Jonathan
            1. 0
              Gunnar Bittersmann
              1. 0
                Jonathan
          2. 0
            Daniel unreg
            1. 0
              molily
              1. 0
                Daniel unreg
                1. 0
                  Jonathan
                  1. 0
                    Daniel unreg
                    1. 0
                      Jonathan
                      1. 0
                        MudGuard
                      2. 0
                        Daniel unreg
                        1. 0
                          Jonathan
                          1. 0
                            Daniel unreg
                            1. 0
                              Jonathan
                      3. 0
                        Cybaer
                        1. 0
                          Jonathan
                        2. 0
                          Daniel unreg
                          1. 0
                            Cybaer
                            1. 0

                              Unbekannte Attribute in HTML 5

                              Tim Tepaße
                              1. 0
                                Cybaer
                        3. 0
                          Robert Bienert
                          1. 0
                            Cybaer
                            1. 0
                              Robert Bienert
                              1. 0
                                Cybaer
                                1. 0
                                  Robert Bienert
                                  1. 0
                                    Cybaer
                                    1. 0
                                      Jonathan
                                      1. 0
                                        Cybaer
                                        1. 0
                                          Jonathan
                                          1. 0
                                            Cybaer
                                      2. 0
                                        Gunnar Bittersmann
                                        1. 0
                                          Jonathan
                                          1. 0
                                            Cybaer
                                            1. 0
                                              Jonathan
                                              1. 0
                                                Cybaer
                                                1. 0
                                                  Jonathan
                                                  1. 0
                                                    Cybaer
                                        2. 0
                                          Robert Bienert
                          2. 0
                            MudGuard
                            1. 0
                              Daniel unreg
                              1. 0
                                Cybaer
                                1. 0
                                  Daniel unreg
                        4. 0
                          Jonathan
                          1. 0
                            Cybaer
  8. 3
    Robert Bienert
    1. 0
      ChrisB
    2. 0
      Daniel unreg
      1. 0
        Robert Bienert
        1. 0
          Daniel unreg
          1. 0
            Robert Bienert
            1. 0

              XHTML 2 Namensraum

              Robert Bienert
              1. 0
                Daniel unreg
            2. 0
              Gunnar Bittersmann
            3. 0
              Daniel unreg
              1. 0
                Robert Bienert
                1. 0
                  Jonathan
                2. 0
                  Daniel unreg
      2. 0
        molily
        1. 0
          Daniel unreg
          1. 0
            Robert Bienert
            1. 0
              Daniel unreg
              1. 0
                Gunnar Bittersmann
                1. 0
                  Daniel unreg
              2. 0
                Robert Bienert
                1. 0
                  Daniel unreg
                  1. 0
                    Robert Bienert