การสร้างต้นไม้
การสร้างต้นไม้
การสร้างต้นไม้เป็นขั้นตอนการพาร์สที่สอง: มันใช้สตรีมของตัวแยกโทเคนและสร้าง DOM ตามอัลกอริทึมมาตรฐาน — รวมถึงพฤติกรรมการกู้คืนข้อผิดพลาดที่โด่งดังของมัน. parse_html() หุ้มทั้งกระบวนการในหนึ่งการเรียก; TreeBuilder เปิดเผยเครื่องจักร.
การพาร์สแบบเรียกครั้งเดียว
parse_html() ไปจากข้อความมาร์คอัปไปยังต้นไม้ที่เสร็จสมบูรณ์; parse_fragment() ใช้อัลกอริทึม fragment กับองค์ประกอบบริบท. ทั้งสองขับเคลื่อนภายในของ TreeBuilder เดียวกันผ่าน TreeBuilder.run().
โหมดการแทรกและองค์ประกอบที่เปิดอยู่
InsertionMode จำลองเครื่องจักรโหมดของอัลกอริทึม, พร้อมกับ StackOfOpenElements และ TemplateInsertionModeStack ติดตามสถานะการสร้างอย่างแม่นยำตามที่สเปคอธิบาย.
การกู้คืนข้อผิดพลาด
องค์ประกอบการจัดรูปแบบที่ซ้อนกันไม่ถูกต้องจะได้รับการแก้ไขผ่าน run_adoption_agency_algorithm() — อัลกอริธึม adoption agency ของมาตรฐาน — และ ActiveFormattingList จะติดตามองค์ประกอบการจัดรูปแบบที่ใช้งานอยู่. get_foster_parent_location() ดำเนินการ foster parenting สำหรับเนื้อหาในตารางที่วางไม่ถูกตำแหน่ง.
ข้อบกพร่องและเนื้อหาต่างประเทศ
determine_quirks_mode() จำแนกเอกสารจาก doctype ของพวกมัน. เนื้อหา SVG และ MathML จะผ่าน adjust_svg_attributes(), adjust_mathml_attributes(), และ adjust_foreign_attributes(), โดยจุดเชื่อมต่อจะถูกตรวจจับโดย is_html_integration_point() และ is_mathml_text_integration_point().
เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ใช้
parse_html()เว้นแต่คุณต้องการการตรวจสอบสถานะการสร้างโดยเฉพาะ - ใช้
parse_fragment()พร้อมกับองค์ประกอบบริบทที่เหมาะสม — กฎการพาร์สส่วน fragment ขึ้นอยู่กับมัน - เมื่อทำการดีบักต้นไม้ที่แปลกใจจากมาร์คอัปที่ไม่ดี, พฤติกรรม adoption agency และ foster-parenting มักจะเป็นสาเหตุ, ไม่ใช่บั๊ก
ปัญหาทั่วไป
| ปัญหา | สาเหตุ | แก้ไข |
|---|---|---|
| เนื้อหาในตารางถูกย้ายออกมานอกตาราง | ส่งเสริมการดูแลเนื้อหาที่วางผิดตำแหน่ง | แก้ไขการจัดเรียง markup ของต้นฉบับ |
| แท็กการจัดรูปแบบซ้ำซ้อนในผลลัพธ์ | การปรับโครงสร้างของหน่วยงานรับอุปการะ | พฤติกรรมมาตรฐานที่คาดหวังสำหรับการจัดโครงสร้างที่ผิดตำแหน่ง |
| เอกสารแสดงผลในโหมด quirks | doctype หายไปหรือแบบเก่า | ตรวจสอบ determine_quirks_mode() บนอินพุต |
FAQ
ทำไมมาร์คอัพที่ผิดรูปแบบจึงสร้างต้นไม้ที่ถูกต้องได้?
อัลกอริทึมมาตรฐานกำหนดการกู้คืนสำหรับกรณีข้อผิดพลาดทุกกรณี — TreeBuilder ทำการดำเนินตามเส้นทางเหล่านั้นแทนการยกข้อผิดพลาด.
อัลกอริทึม adoption agency คืออะไร?
ขั้นตอนของมาตรฐานสำหรับการซ่อมแซมองค์ประกอบการจัดรูปแบบที่ซ้อนกันผิด; เปิดเผยเป็น run_adoption_agency_algorithm().
ตัวสร้างจัดการกับ SVG และ MathML หรือไม่?
ใช่ — แอตทริบิวต์ของเนื้อหาต่างประเทศปรับผ่านฟังก์ชัน adjust_*_attributes() เฉพาะที่มีการตรวจจับจุดรวมมาตรฐาน.
API Reference สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
parse_html | มาร์คอัปเป็นต้นไม้ในหนึ่งการเรียก |
parse_fragment | การแยกวิเคราะห์อัลกอริทึมส่วนย่อย |
TreeBuilder.run | การสร้างต้นไม้การทำงาน |
InsertionMode | เครื่องโหมดอัลกอริทึม |
run_adoption_agency_algorithm | การซ่อมแซมการซ้อนที่ผิดพลาด |
determine_quirks_mode | การจัดประเภท quirks ตาม Doctype |