WCAG 2.2 · 4. 견고성 · 4.1 호환성
4.1.1 구문 분석
Parsing
WCAG 2.2에서 폐지(obsolete)되어 삭제된 성공 기준입니다. 원래는 마크업의 열고 닫기, 중첩, 중복 속성, 중복 ID 오류가 없어야 한다는 수준 A 기준이었습니다.
한눈에 보기
- 성공 기준
- 4.1.1 구문 분석
- 수준
- 수준 A
- 원칙
- 4. 견고성
- 지침
- 4.1 호환성
- 도입
- WCAG 2.0
요구 사항
WCAG 2.2에서 폐지됨
WCAG 2.2 원문은 이 기준을 "Obsolete and removed(폐지 및 삭제)"로 표시하고, "보조 기술이 HTML을 직접 구문 분석하던 문제를 해결하려고 도입했으나 더 이상 쓸모가 없어 삭제한다"고 설명합니다. WCAG 2.2 적합성 평가에서는 이 기준을 검사하지 않습니다.
원래 요구 사항(WCAG 2.0·2.1): 마크업 언어로 구현한 콘텐츠에서, 명세가 허용하는 경우를 제외하고 다음이 지켜져야 했습니다.
- 요소에 완전한 시작 태그와 종료 태그가 있습니다.
- 요소가 명세에 맞게 중첩되어 있습니다.
- 요소에 중복된 속성이 없습니다.
- 모든 ID가 고유합니다.
폐지 이유: WCAG 2.0이 나온 2008년 무렵에는 일부 보조 기술이 HTML 소스를 직접 해석했고, 브라우저마다 잘못된 마크업을 다르게 처리했습니다. 지금은 HTML 명세가 오류 처리 방법까지 정하고 있어 모든 브라우저가 같은 방식으로 구문 분석하며, 보조 기술은 HTML을 직접 읽지 않고 브라우저가 만든 접근성 트리(접근성 API)를 사용합니다. 그래서 마크업 문법 오류 자체는 더 이상 접근성 문제의 직접 원인이 아닙니다.
W3C는 WCAG 2.0과 2.1에도 정오표(errata) 주석을 추가해, HTML·XML로 작성한 콘텐츠는 이 기준을 항상 충족한 것으로 간주한다고 안내했습니다.
현재 의미: 기준은 없어졌지만, 마크업 오류가 실제로 사용자에게 영향을 주는 경우는 다른 기준으로 평가됩니다. WCAG Understanding 문서는 "이 기준에서 실패했을 많은 문제가 1.3.1 정보와 관계 또는 4.1.2 이름·역할·값에서 실패한다"고 설명합니다. 예를 들어 다음과 같습니다.
- 중복 ID 때문에
<label for>,aria-labelledby,aria-describedby가 엉뚱한 요소를 가리켜 이름이 틀리게 계산되면 → 4.1.2 또는 1.3.1 실패 - 잘못된 중첩으로 목록·표 구조가 깨져 관계가 전달되지 않으면 → 1.3.1 실패
KWCAG 2.2에는 남아 있습니다
국내 표준인 KWCAG 2.2에는 대응 항목인 8.1.1 마크업 오류 방지가 여전히 있습니다. 국내 웹 접근성 품질인증 심사를 받는다면 마크업 문법 오류도 계속 점검해야 합니다.
왜 필요한가요
폐지된 지금도 올바른 마크업은 좋은 습관입니다. 특히 ID 중복은 ARIA 관계 속성(aria-labelledby, aria-controls, aria-describedby 등)을 깨뜨려, 화면낭독기가 엉뚱한 이름이나 설명을 읽게 만듭니다.
도움받는 사용자
- 시각장애인(화면낭독기 사용자) — 중복 ID로 이름·설명이 잘못 연결될 때
- 모든 보조 기술 사용자
적용 방법
WCAG 2.2를 기준으로 하면 이 항목 자체는 검사하지 않습니다. 대신 ID 참조와 구조가 실제로 올바르게 동작하는지를 1.3.1·4.1.2 관점에서 확인합니다. KWCAG 2.2 8.1.1에 대응해야 한다면 HTML 검사기(Nu Html Checker)로 문법 오류를 확인합니다.
<!-- 카드 목록마다 같은 ID가 생성됨 -->
<button aria-describedby="price">담기</button><span id="price">12,000원</span>
<button aria-describedby="price">담기</button><span id="price">8,000원</span><button aria-describedby="price-101">담기</button><span id="price-101">12,000원</span>
<button aria-describedby="price-102">담기</button><span id="price-102">8,000원</span>두 번째 버튼은 첫 번째 상품 가격을 설명으로 읽게 됩니다. 이는 구문 오류이기 전에 4.1.2·1.3.1 문제입니다.
자주 하는 실수
- 반복되는 컴포넌트에서 같은 ID를 여러 번 생성해 ARIA 참조가 잘못된 요소를 가리킵니다(현재는 1.3.1·4.1.2로 평가).
- 폐지된 기준이라고 KWCAG 8.1.1 점검까지 생략합니다(국내 인증 대상인 경우).
검사 방법
- WCAG 2.2 평가에서는 이 기준을 적용하지 않습니다.
- ID 참조(
for,aria-labelledby,aria-describedby,aria-controls)가 올바른 단일 요소를 가리키는지 확인합니다(1.3.1·4.1.2). - KWCAG 대응이 필요하면 Nu Html Checker 등으로 태그 짝, 중첩, 중복 속성, 중복 ID를 검사합니다.