Faépítés
Faépítés
A faépítés a második elemzési szakasz: felhasználja a tokenizáló adatfolyamát és felépíti a DOM-ot a szabvány algoritmusának megfelelően — beleértve a híres hibakezelő viselkedéseket. parse_html() egy hívással becsomagolja az egész csővezetéket; TreeBuilder láthatóvá teszi a mechanizmust.
Egyhívásos elemzés
parse_html() a jelölőszövegből egy befejezett fára megy; parse_fragment() a fragmentum algoritmust alkalmazza egy környezeti elemre. Mindkettő ugyanazt a TreeBuilder belső mechanizmust vezérli a TreeBuilder.run() segítségével.
Beszúrási módok és nyitott elemek
InsertionMode modellezi az algoritmus módgépét, a StackOfOpenElements és a TemplateInsertionModeStack pedig pontosan a specifikációban leírtak szerint követik a konstrukció állapotát.
Hibakezelés
A rosszul egymásba ágyazott formázóelemek a run_adoption_agency_algorithm() — a szabvány átvételi ügynökségi algoritmusa — segítségével oldódnak meg, és a ActiveFormattingList nyomon követi az aktív formázóelemeket. A get_foster_parent_location() megvalósítja a foster parentinget a rossz helyen lévő táblázat tartalomra.
Quirks és külföldi tartalom
determine_quirks_mode() a dokumentumokat a doctype-juk alapján osztályozza. Az SVG és a MathML tartalom a adjust_svg_attributes(), adjust_mathml_attributes() és adjust_foreign_attributes() útvonalán halad, a is_html_integration_point() és is_mathml_text_integration_point() által észlelt integrációs pontokkal.
Tippek és bevált gyakorlatok
- Használd a
parse_html()-t, hacsak nem kifejezetten szükséged van a konstrukció-állapot introspekcióra. - Használd a
parse_fragment()-t a megfelelő kontextuselemmel — a fragmentum-elemzési szabályok ettől függenek. - Rossz jelölőnyelv esetén a meglepő fa struktúrák hibakeresésekor az adoption agency és a foster-parenting viselkedés általában a magyarázat, nem pedig egy hiba.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
| A táblázat tartalma a táblázaton kívülre került | A helytelenül elhelyezett tartalom gondozásának elősegítése | Javítsa a forrás jelölés beágyazását |
| Formázó címkék duplikálódnak a kimenetben | Örökbefogadási ügynökség újjáépítése | Várható szabványos viselkedés a hibás beágyazás esetén |
| A dokumentum quirks módban jelenik meg | Hiányzó vagy elavult doctype | Ellenőrizze a(z) determine_quirks_mode() a bemenetben |
FAQ
Miért hoz létre a hibás jelölőnyelv egy érvényes fát?
A szabvány algoritmusa meghatározza a helyreállítást minden hibás esetben — TreeBuilder ezeket az útvonalakat valósítja meg ahelyett, hogy hibát dobna.
Mi az adoption agency algoritmus?
A szabvány eljárása a rosszul egymásba ágyazott formázóelemek javítására; run_adoption_agency_algorithm() néven érhető el.
A builder kezeli az SVG-t és a MathML?
Igen — a külföldi tartalom attribútumai a dedikált adjust_*_attributes() függvényeken keresztül állíthatók be, a szabványok integrációs pontjának detektálásával.
API Reference Összegzés
| Osztály/Módszer | Leírás |
|---|---|
parse_html | Jelölőnyelv egy hívással fa struktúrába |
parse_fragment | Fragment algoritmus elemzése |
TreeBuilder.run | Futtassa a fa felépítését |
InsertionMode | Algoritmus módú gép |
run_adoption_agency_algorithm | Hibás beágyazás javítása |
determine_quirks_mode | Doctype-alapú quirks osztályozás |