이 문서는 초안 문서이며, 언제든 다른 문서로 갱신, 대체 또는 폐기될 수 있다.
이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 적절하지 않다.
이 문서는
W3C
특허
정책에 따라 운영되는 그룹에서 작성했다.
W3C는 이 그룹의 산출물과 관련하여
공개된 모든 특허 공개 사항의
공개 목록을 유지관리하며,
해당 페이지에는 특허 공개 지침도 포함되어 있다. 개인이 실제로
그 개인이
필수 청구항을 포함한다고 믿는
특허를 알고 있는 경우,
W3C 특허 정책 제6절에 따라 그 정보를 공개해야 한다.
경우에 따라, 흔히 HTML 호스트
언어의 기능이나 해당 접근성 API로 인해,
요소 또는 속성의 매핑은 [core-aam-1.2]에 명시된
해당 ARIA 매핑과 다르다. HTML 요소 또는 속성에 기본 WAI-ARIA 시맨틱이 없는 경우, 각
플랫폼 접근성 API에 적용되는 매핑은
이 명세가 정의한다.
HTML에는 게시 시점에 접근성 API가 지원하지 않는 기능이 포함될 수 있다.
모든 기능과 플랫폼 접근성 API 사이에 일대일 관계가 있는 것은 아니다.
HTML 역할, 상태 및 속성이
접근성 API에 직접 매핑되지 않고, 해당
API에 텍스트 문자열을 노출하는 메서드가 있는 경우,
사용자 에이전트는 정의되지 않은 역할, 상태 및 속성을 그 메서드를 통해 노출해야 MUST 한다.
최소 역할은 요소에 더
구체적인 암시적 역할이나 플랫폼 역할 매핑,
예를 들어 일반적이지 않은 역할이 없는 경우 요소가 매핑될 해당 WAI-ARIA
역할이다.
이는 보조 기술 사용자가 일반적으로 사용되고 유효한 HTML 마크업에 대해,
그렇지 않으면 역할이 노출되지 않을 상황에서도 가능한 최선의 경험을 얻도록 보장하는 데 도움이 될 수 있다.
최소 역할은 다음 조건이 모두 참인 경우 제공된다.
작성자가 요소에 유효한 명시적 WAI-ARIA 역할을 지정하지
않았거나,
또는 지정한 역할이 none, presentation 또는
generic 중 하나인 경우;
요소에 암시적 WAI-ARIA 역할 또는 플랫폼 역할 매핑이 없거나,
암시적 generic 또는 none 계산된 역할을 가진 경우;
이러한 조건이 충족되면, 사용자 에이전트는 지정된 최소 역할에 대해 CORE-AAM에 정의된 매핑을 사용하여
객체를 노출해야 MUST 한다. 요소에 대해 계산된 역할로 최소 역할을 반환해야
하는 여러 속성이 요소에 지정된 경우, ARIA 분류 체계에서 더 구체적인 역할을 우선한다.
3.5 HTML 요소 역할 매핑
사용자 에이전트는 암시적 WAI-ARIA 역할
시맨틱을 가진 HTML
요소를 [core-aam-1.2] 명세에 정의된
식별된 WAI-ARIA 역할 매핑에 따라 플랫폼
접근성 API에 매핑해야 MUST 한다.
"매핑되지 않음"은 해당 요소를 접근성
API를 통해 노출할 필요가 없음을 의미한다.
이는 일반적으로 해당 요소가 사용자 인터페이스의 일부로 표시되지 않기 때문이다. 그러나 작성자는
이러한 요소 중 일부가 렌더링되도록 강제할 수 있다. 예를 들어, 사용자 에이전트 스타일을
재정의하여 원래라면 display: none으로 설정되었을 요소를 렌더링할 수 있다. 이러한 경우
사용자 에이전트는, 더 구체적인 최소 역할을 노출해야 하는 다른
HTML 기능이 지정되어 있지 않은 한, 그러한
요소를 generic 역할에
매핑해야 SHOULD 한다.
요소가 "대응하는 (WAI-ARIA) 역할 없음"으로 표시되거나 generic 역할에
매핑되는 경우, 사용자 에이전트는 해당 요소가 명시적이고 적합한 role 속성 값을 가지며
[WAI-ARIA-1.2]가
aria-roledescription 사용을 금지하지 않는 경우가 아니라면,
접근성 트리에서
aria-roledescription
속성 값을 노출해서는 MUST NOT 안 된다.
HTML 요소가 유효하고 추상이 아닌
WAI-ARIA 역할에 대한 정확한 또는
동등한 매핑을 가지지 않는 경우, 상호 운용성 테스트 목적의 반환값으로 사용되도록 고유한
computedrole
문자열이 지정되어 있다.
예를 들어, 사용자 에이전트는 video 요소를
"html-video"의 computedrole로 노출할 수 MAY
있다. 작성자는 html-video와 같은 html- 접두사가 붙은
computed role 문자열을 role 속성에 사용해서는 MUST NOT 안 된다.
사용자 에이전트는 추상 또는 유효하지 않은 역할 토큰을 무시해야 MUST 한다.
접근 가능한 객체를 가진 모든 요소는
IAccessible, IAccessible2 및 IAccessible2_2 인터페이스를 구현해야 SHOULD
한다.
UIA:
레이블 지정 가능
요소가 label 요소의 for
속성에 의해 참조되거나 label 요소의 자손인 경우, 레이블 지정 가능
요소의 UIA LabeledBy 프로퍼티는 해당
label 요소의 UIA 요소를 가리킨다.
Text Control Type에 매핑된 요소는 일반적으로
접근 가능한 객체로서
접근성
트리에 표현되지 않고, 전체 HTML
문서에 대해 구현된 Text Control Pattern의 일부일 뿐이다. 그러나 이러한 요소에
aria- 속성이 있거나 명시적 tabindex가 지정된 경우,
Text Control Type에 매핑된 요소는
접근 가능한 객체로서
접근성
트리에 표현된다.
AXAPI:
사용자 에이전트는 Mac Accessibility AXRoleDescription에 대해 사용자가 볼 수 있는 현지화된 문자열
값을 반환해야 SHOULD 한다.
hgroup에 여러 제목 요소가 포함된 경우, 사용자 에이전트는 가장 높은 우선순위
수준을 가진 제목 요소를 hgroup의 유일한 제목으로 처리할 수
MAY 있다. 사용자 에이전트는 다른 모든 제목 요소를
p 요소인 것처럼 노출할 수
MAY 있다. Core AAM의
paragraph
역할을 참조하라.
사용자 에이전트는 기본 WAI-ARIA 상태
및 프로퍼티 의미론을 가진 HTML
속성을, [core-aam-1.2] 명세에 정의된 식별된 WAI-ARIA 상태 및
프로퍼티 매핑에 따라 플랫폼 접근성 API에 매핑해야
MUST 한다.
셀의 '?'는 데이터가 아직 제공되지 않았음을 나타낸다.
"매핑되지 않음" (해당 없음)은 해당 속성을 접근성 API를 통해 노출할 필요가 없음을 의미한다.
이는 일반적으로 해당 속성이 사용자 인터페이스의 일부로 표시되지 않기 때문이다.
참고
일부 경우에는 접근성 API에 직접 노출되지 않더라도,
속성이 여전히 요소의 접근성에 영향을 줄 수 있다. 예를 들어 autoplay는
video 또는 audio 요소의
재생을 자동으로 시작한다.
IAccessible2 매핑에서 접근 가능한 객체를 가진 모든 요소는 IAccessible, IAccessible2 및
IAccessible2_2 인터페이스를 구현한다고 가정한다.
특정 HTML 요소와의 사용자 상호작용은
요소의 dirty
value flag를 설정한다. [HTML]에서 식별된 이러한
요소들은 요소의 기본값 또는 기본 상태를 나타내는 속성을 가질 수 있다. dirty flag가 설정되면, 그 기본값 또는 상태가
반드시 요소나 대응하는 접근 가능한 노드의 값 또는 상태를 결정하는 것은 아니다.
form 컨트롤에 autocomplete=off가 지정되어 있고
(속성의 명시적 사용 때문이든, autocomplete=off인 부모
form 요소에서 off 상태를 상속했기 때문이든),
유효한 값을 가진 aria-autocomplete 속성도 있는 경우,
사용자 에이전트는 aria-autocomplete 속성 값만 노출해야
MUST 한다.
그렇지 않고, form 컨트롤에 유효한 토큰 값이 있는 autocomplete
속성과 aria-autocomplete 속성이 지정되어 있으면, 사용자
에이전트는 autocomplete 속성 값만 노출해야
MUST 한다.
placeholder 및 aria-placeholder 속성이
모두 존재하고, placeholder 속성의 값이 비어 있지 않은 경우,
사용자 에이전트는 MUSTplaceholder
속성의 값을 노출하고 aria-placeholder를 무시해야 한다. placeholder
속성의 값이 비어 있는 경우, 사용자 에이전트는 MUSTaria-placeholder
속성의 값을 노출해야 한다.
요소가 required 속성과 유효한 값을 가진
aria-required 속성을 모두 포함하는 경우, 사용자 에이전트는
MUSTrequired 속성 값만 노출해야 한다.
요소가 필수인
경우,
사용자 에이전트는 요소를 초기 invalid 상태(aria-invalid="true")로
노출해서는 MUST NOT 안 된다.
사용자 에이전트는 1) 사용자가 required 요소와 의도적으로 상호작용했거나
form 제출을 시도했고,
2) 해당 요소 또는 요소들이 제약
검증을 충족하지 않는 경우에만 invalid 상태를 노출해야 SHOULD 한다.
목록 항목 마커를 정의한다. 이 마커는
AXValue에서 콘텐츠로 노출되고, 접근 가능
객체로 렌더링된다:
AXRole:AXListMarker
AXSubrole:(nil)
AXRoleDescription:"list marker"
주석
일부 플랫폼(IAccessible2, ATK, UIA)은 목록 항목 마커가 생성된 뒤
접근성
트리에서 제거되었는지, 아니면 애초에 생성되지 않았는지와 관계없이, 목록 항목 마커에 대한 접근 가능
객체를 노출하지 않는다. 대신 목록
항목 마커를 연결된 목록 항목의 접근 가능한 텍스트 일부로 노출한다. 이러한
경우 구현자는 이제
목록 항목 마커도 콘텐츠로 포함하게 된 갱신된 목록 항목 텍스트에 대해 오프셋을 조정하는 일
(예: 캐럿 이동 이벤트, 텍스트 선택 이벤트 등)을 고려해야 하며,
목록 항목 렌더러의 오프셋을
변경 없이 그대로 사용해서는 안 된다.
사용자 에이전트는 관련 접근성 정보가 변경될 때 보조 기술에 알린다. 때로는
접근성 객체를 파괴하고 다시 생성하는 방식으로, 때로는 지정된
이름 변경 이벤트 매핑 및 설명 변경 이벤트
매핑에 따라 객체의 변경을 알리는 방식으로 처리한다.
4.1 HTML
요소별 접근 가능한 이름 계산
4.1.1
input type="text", input type="password",
input type="number",
input type="search", input type="tel",
input type="email", input type="url" 및 textarea
요소 접근 가능한
이름 계산
input type=submit 및 type=reset의 경우: 접근 가능한 이름이 여전히
비어 있고 value 속성이 지정되지 않은 경우,
input 타입에 각각 해당하는 구현 정의
문자열을 사용한다. 예를 들어, input 타입에 따라 "submit" 또는
"reset"이라는 단어의 지역화된 문자열이 될 수 있다.
그렇지 않으면: 컨트롤의 title 속성 값을 사용한다.
위 항목 중 어느 것도 사용할 수 있는 텍스트 문자열을 산출하지 않으면 접근 가능한 이름은 없다.
접근 가능한 이름이
여전히 비어 있는 경우: 연결된 label 요소 서브트리의 텍스트
등가 계산을 사용한다. 둘 이상의 label이
연결되어 있으면, DOM 순서로 각 서브트리를 공백으로 구분하여 연결한다.
컨트롤이 자신의 label 요소로 캡슐화되어 있고 컨트롤에
alt 속성이 있는 경우, 해당 속성의 값을 컨트롤의 계산된
접근 가능한 이름에서 제외한다.
접근 가능한 이름이
여전히 비어 있는 경우: 컨트롤의 alt 속성이 존재하고 그 값이
공백을 제거했을 때 빈 문자열이
아니면 해당 값을 사용한다.
접근 가능한 이름이
여전히 비어 있는 경우: 컨트롤의 title 속성이 존재하고 그 값이
빈 문자열이 아니면 해당 값을 사용한다.
그렇지 않고 이전 단계들이 사용할 수 있는 텍스트 문자열을 산출하지 않으면: input 타입에 해당하는
구현 정의
문자열을 사용한다(image 상태의 input은 submit
button을 나타낸다). 예를 들어, "submit"이라는 단어 또는
"Submit Query"라는 단어들의 지역화된 문자열이 될 수 있다.
위 항목 중 어느 것도 사용할 수 있는 텍스트 문자열을 산출하지 않으면 접근 가능한 이름은 없다.
Web Platform
Design Principles에 따라, 이 명세는 정보가 보조 기술에 의해 사용되고 있는지를
확인하기 위한 프로그래밍 인터페이스를 제공하지 않는다. 그러나 이 명세는 작성자가 보조 기술을 사용하는 사용자에게
보조 기술을 사용하지 않는 사용자에게 제공되는 정보와 다른 정보를 제시할 수 있도록 허용한다. 이는
웹 기술 스택의 다른 많은 부분을 통해 가능한 것처럼, ARIA 및 CORE-AAM 명세의 여러 기능을 사용하여
가능하다. 이러한 콘텐츠 차이는 보조 기술 사용자의
능동적 핑거프린팅을 수행하는 데
악용될 수 있다.
2019년 9월 11일:
menu
매핑을 HTML Living Standard와 일치하도록 갱신했다.
menu 및
menuitem에 적용되지 않는 요소 및 속성 매핑을 제거했다. menu의
매핑을 role="list"로 갱신했다. GitHub
issue #188을 참조하라.
이 발행물은 부분적으로 미국 교육부, National Institute on Disability, Independent Living, and Rehabilitation
Research
(NIDILRR)의 미국 연방 기금으로 지원되었으며, 처음에는 계약 번호 ED-OSE-10-C-0067, 이후에는
계약 번호 HHSP23301500054C, 현재는 HHS75P00120P00168에 따라 지원되었다. 이 발행물의 내용은
반드시 미국 교육부의 견해나 정책을 반영하는 것은 아니며, 상호, 상업 제품 또는 조직에 대한 언급이
미국 정부의 보증을 의미하는 것도 아니다.