트리 구성

트리 구성

트리 구성은 두 번째 파싱 단계입니다: 토크나이저의 스트림을 소비하고 표준 알고리즘에 따라 DOM을 구축합니다 — 유명한 오류 복구 동작을 포함하여. parse_html()는 전체 파이프라인을 한 번의 호출로 감싸고; TreeBuilder는 그 메커니즘을 노출합니다.


원-콜 파싱

parse_html()는 마크업 텍스트에서 완성된 트리로 변환합니다; parse_fragment()는 컨텍스트 요소에 대해 프래그먼트 알고리즘을 적용합니다. 두 경우 모두 TreeBuilder.run()을 통해 동일한 TreeBuilder 내부를 구동합니다.

삽입 모드와 열린 요소들

InsertionMode는 알고리즘의 모드 머신을 모델링하며, StackOfOpenElements와 TemplateInsertionModeStack는 사양이 설명하는 대로 구성 상태를 정확히 추적합니다.

오류 복구

잘못 중첩된 포맷팅 요소는 run_adoption_agency_algorithm() — 표준의 채택 기관 알고리즘 —을 통해 해결되며, ActiveFormattingList은 활성 포맷팅 요소를 추적합니다. get_foster_parent_location()는 잘못 위치한 테이블 콘텐츠에 대한 포스터 양육을 구현합니다.

쿼크와 외부 콘텐츠

determine_quirks_mode()은 문서를 DOCTYPE에 따라 분류합니다. SVG와 MathML 콘텐츠는 adjust_svg_attributes(), adjust_mathml_attributes(), adjust_foreign_attributes()을 통해 라우팅되며, 통합 지점은 is_html_integration_point()와 is_mathml_text_integration_point()에 의해 감지됩니다.


팁 및 모범 사례

  • 특별히 construction-state introspection이 필요하지 않은 경우가 아니라면 parse_html()을 사용하십시오.
  • 올바른 컨텍스트 요소와 함께 parse_fragment()을 사용하세요 — 프래그먼트 파싱 규칙은 이에 의존합니다.
  • 잘못된 마크업으로 인한 예상치 못한 트리를 디버깅할 때, 채택 기관과 포스터 양육 동작이 보통 원인이며, 버그가 아닙니다.

일반적인 문제들

문제원인해결책
테이블 내용이 테이블 외부로 이동함잘못 배치된 콘텐츠에 대한 양육 촉진소스 마크업 중첩 수정
출력에 서식 태그가 중복됨입양 기관 재구성잘못된 중첩에 대한 기대 표준 동작
문서가 퀴르크스 모드로 렌더링됩니다누락된 또는 레거시 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_modeDoctype 기반 퀴르크스 분류

참조

 한국어