HTML Parser Completeness – Full Spec Tokenizer + Tree Construction Edge Cases #126

Open
opened 2026-06-20 08:19:58 +00:00 by Artur · 0 comments
Owner

Gap

Unser HTML5 Parser (src/dom/parser.ts + src/html/HTMLParser.ts) deckt die meisten Faelle ab. Aber es gibt Spec-Luecken die bei exotischen Seiten zu falschen DOM Trees fuehren.

Was fehlt

1. Tokenizer Luecken

  • Entity-Encoding: Numerische Entities (& < > " ' + alle named entities) muessen korrekt dekodiert werden
  • CDATA Sections in foreign content (SVG, MathML)
  • Processing Instructions ()
  • Bogus Comment State (in bestimmten Kontexten)
  • DOCTYPE parsing: vollstaendig (name, publicId, systemId, quirks mode detection)

2. Tree Construction Luecken

  • Foster Parenting (table-Tag-Insertion-Mode)
  • Adoption Agency Algorithm (mis-nested formatting elements)
  • SVG/MathML Foreign Content Parsing
  • Form Pointer (nur innerhalb von form-Element erlaubtes Nesting)
  • Template/Shadow DOM Insertion Modes
  • Script-parsing: defer/async scripts muessen korrekt gemeldet werden

3. Serialisierung

  • innerHTML getter: HTML Serialization (Void Elements, Self-Closing, Attribute Quoting)
  • outerHTML getter: wie innerHTML aber inkl. Element selbst
  • XML Serialization: spezielle Regeln fuer XML-Mode

4. Encoding Detection

  • BOM Detection
  • Erkennung
## Gap Unser HTML5 Parser (src/dom/parser.ts + src/html/HTMLParser.ts) deckt die meisten Faelle ab. Aber es gibt Spec-Luecken die bei exotischen Seiten zu falschen DOM Trees fuehren. ## Was fehlt ### 1. Tokenizer Luecken - Entity-Encoding: Numerische Entities (&amp; &lt; &gt; &quot; &apos; + alle named entities) muessen korrekt dekodiert werden - CDATA Sections in foreign content (SVG, MathML) - Processing Instructions (<?...?>) - Bogus Comment State (in bestimmten Kontexten) - DOCTYPE parsing: vollstaendig (name, publicId, systemId, quirks mode detection) ### 2. Tree Construction Luecken - Foster Parenting (table-Tag-Insertion-Mode) - Adoption Agency Algorithm (mis-nested formatting elements) - SVG/MathML Foreign Content Parsing - Form Pointer (nur innerhalb von form-Element erlaubtes Nesting) - Template/Shadow DOM Insertion Modes - Script-parsing: defer/async scripts muessen korrekt gemeldet werden ### 3. Serialisierung - `innerHTML` getter: HTML Serialization (Void Elements, Self-Closing, Attribute Quoting) - `outerHTML` getter: wie innerHTML aber inkl. Element selbst - XML Serialization: spezielle Regeln fuer XML-Mode ### 4. Encoding Detection - BOM Detection - <meta charset="..."> Erkennung - <script> charset Attribute - Default Encoding Fallback ## Labels feature, html-spec ## Architektur - src/html/ wird erweitert - Entity-Encoding: src/html/entities.ts (Map mit allen HTML Entities) - Tree Construction: src/html/tree-construction.ts (Insertion Modes als State Machine) - Serializer: src/dom/serializer.ts erweitern ## Tests - HTML5Lib Tokenizer Tests - HTML5Lib Tree Construction Tests (alle 1000+ Testfaelle) - Entity Encoding Roundtrip - XML Serialization
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
glow-all/true-headless-browser#126
No description provided.