การสร้างต้นไม้

การสร้างต้นไม้

การสร้างต้นไม้เป็นขั้นตอนการพาร์สที่สอง: มันใช้สตรีมของตัวแยกโทเคนและสร้าง 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 ของต้นฉบับ
แท็กการจัดรูปแบบซ้ำซ้อนในผลลัพธ์การปรับโครงสร้างของหน่วยงานรับอุปการะพฤติกรรมมาตรฐานที่คาดหวังสำหรับการจัดโครงสร้างที่ผิดตำแหน่ง
เอกสารแสดงผลในโหมด quirksdoctype หายไปหรือแบบเก่าตรวจสอบ 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

ดูเพิ่มเติม

 ภาษาไทย