Diff between ARIA Proposal (2007-10-04) and ARIA Proposal (2007-10-15)

<!doctype html>
<title>ARIA Proposal</title>
<link rel=stylesheet href=http://www.whatwg.org/style/specification>
<body class=draft>
<div class=head>
 <h1>ARIA Proposal</h1>
 <h2>Work in Progress &mdash; Last Update 4 October 2007</h2>
 <dl>
  <dt>Editor
  <dd>Simon Pieters, Opera Software, simonp@opera.com
  <dt>Contributor
  <dd>Aaron Leventhal, IBM, aleventh@us.ibm.com
 </dl>
</div>
<h2>Abstract</h2>
<p>This proposal defines proper usage of ARIA markup for authors and ARIA markup processing for user agents for both (X)HTML and other vocabularies.
<h2>Conformance requirements</h2>
<p class=big-issue>This spec assumes that HTML elements are in the <code>http://www.w3.org/1999/xhtml</code> namespace, as required by HTML5.
<p class=big-issue>What authors are allowed to do should probably be constrained, and UAs should perhaps ignore some roles or states in certain cases.
<p>All diagrams, examples, and notes in this specification are non-normative, as are all sections explicitly marked non-normative. Everything else in this specification is normative. 
<p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the normative parts of this document are to be interpreted as described in RFC2119. For readability, these words do not appear in all uppercase letters in this specification. [RFC2119]
<h3>Dependencies</h3>
<dl>
 <dt>DOM
 <dd><p>Implementations must support some version of DOM Core, because this specification is defined in terms of the DOM. [DOM3CORE]
</dl>
<h2>The <code>role</code> attributes</h2>
<h3>Authoring requirements</h3>
<p>Authors may specify a <code>role</code> attribute in no namespace on any element in the <code>http://www.w3.org/1999/xhtml</code> or <code>http://www.w3.org/2000/svg</code> namespace.
<p>The value of these attributes must be an <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/section-common1.html#ordered">ordered set of space-separated tokens</a> where each token must be a <span>valid role token</span>. The first supported role will be used; subsequent roles act as fallback roles. [HTML5]
<p>A <dfn>valid role token</dfn> is one of the following:
<ul>
 <li><p>A role as defined in WAI-ARIA Roles or XHTML Role Attribute Module. [ROLES] [MODULE]
 <li><p>The eight characters <code>wairole:</code> followed by a role as defined in WAI-ARIA Roles, if there is a namespace declaration in scope that binds the prefix <code>wairole</code> to the <code>http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#</code> namespace. [ROLES] [XMLNS]
 <li><p>A prefixed name whose prefix is not <code>wairole</code>, if there is a namespace declaration in scope that defines the prefix and that prefix is not bound to the <code>http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#</code> namespace. [XMLNS]
</ul>
<p class=note>The "default namespace" is always <code>http://www.w3.org/1999/xhtml</code>, regardless of any actual namespace declarations.
<p class=note>Thus the roles defined in WAI-ARIA Roles are effectively duplicated in the <code>http://www.w3.org/1999/xhtml</code> namespace.
<p class=note>The <code>wairole</code> prefix is thus fixed to the <code>http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#</code> namespace, just like the <code>xml</code> prefix is fixed to the <code>http://www.w3.org/XML/1998/namespace</code> namespace in XML. However, unlike the <code>xml</code> prefix, the <code>wairole</code> prefix has to be declared before it is used according to this specification.
<div class=example>
 <p>Since HTML doesn't do namespaces, the only allowed way to express roles declaratively in HTML is by using the unprefixed syntax, as in the following example:
 <pre>&lt;div role="checkbox" tabindex="0">&lt;/div></pre>
 <p>In XHTML and SVG, the following are allowed:
 <pre>&lt;html xmlns="http://www.w3.org/1999/xhtml"
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">

<html>
 <head>
  <title>ARIA Proposal</title>
  <link href="http://www.whatwg.org/style/specification" rel=stylesheet>

 <body class=draft>
  <div class=head>
   <h1 id=aria-proposal>ARIA Proposal</h1>

   <h2 class="no-num no-toc" id=work-in>Work in Progress &mdash; Last Update
    15 October 2007</h2>

   <dl>
    <dt>This version:

    <dd><a
     href="http://simon.html5.org/specs/aria-proposal">http://simon.html5.org/specs/aria-proposal</a>
     

    <dt>Latest version:

    <dd><a
     href="http://simon.html5.org/specs/aria-proposal">http://simon.html5.org/specs/aria-proposal</a>
     

    <dt>Previous versions:

    <dd><a
     href="http://lists.w3.org/Archives/Public/www-archive/2007Sep/att-0106/aria-proposal.html">http://lists.w3.org/Archives/Public/www-archive/2007Sep/att-0106/aria-proposal.html</a>
     

    <dt>Editor:

    <dd>Simon Pieters, Opera Software, simonp@opera.com

    <dt>Contributor:

    <dd>Aaron Leventhal, IBM, aleventh@us.ibm.com
   </dl>
  </div>

  <hr>

  <h2 class="no-num no-toc" id=abstract>Abstract</h2>

  <p>This proposal defines proper usage of ARIA markup for authors and ARIA
   markup processing for user agents for both (X)HTML and other vocabularies.
   

  <h2 class="no-num no-toc" id=table>Table of Contents</h2>
  <!--begin-toc-->

  <ul class=toc>
   <li><a href="#conformance"><span class=secno>1. </span>Conformance
    requirements</a>
    <ul class=toc>
     <li><a href="#dependencies"><span class=secno>1.1.
      </span>Dependencies</a>
    </ul>

   <li><a href="#the-role"><span class=secno>2. </span>The <code>role</code>
    attributes</a>
    <ul class=toc>
     <li><a href="#authoring"><span class=secno>2.1. </span>Authoring
      requirements</a>

     <li><a href="#ua-requirements"><span class=secno>2.2. </span>UA
      requirements</a>
    </ul>

   <li><a href="#states"><span class=secno>3. </span>States and
    Properties</a>
    <ul class=toc>
     <li><a href="#authoring0"><span class=secno>3.1. </span>Authoring
      requirements</a>

     <li><a href="#ua-requirements0"><span class=secno>3.2. </span>UA
      requirements</a>
    </ul>

   <li><a href="#references"><span class=secno>4. </span>References</a>

   <li><a href="#acknowledgements"><span class=secno>5.
    </span>Acknowledgements</a>
  </ul>
  <!--end-toc-->

  <hr>

  <h2 id=conformance><span class=secno>1. </span>Conformance requirements</h2>

  <p class=big-issue>This spec assumes that HTML elements are in the
   <code>http://www.w3.org/1999/xhtml</code> namespace, as required by HTML5.
   

  <p class=big-issue>What authors are allowed to do should probably be
   constrained, and UAs should perhaps ignore some roles or states in certain
   cases.

  <p>All diagrams, examples, and notes in this specification are
   non-normative, as are all sections explicitly marked non-normative.
   Everything else in this specification is normative.

  <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in the
   normative parts of this document are to be interpreted as described in
   RFC2119. For readability, these words do not appear in all uppercase
   letters in this specification. [RFC2119]

  <h3 id=dependencies><span class=secno>1.1. </span>Dependencies</h3>

  <dl>
   <dt>DOM

   <dd>
    <p>Implementations must support some version of DOM Core, because this
     specification is defined in terms of the DOM. [DOM3CORE]
  </dl>

  <h2 id=the-role><span class=secno>2. </span>The <code>role</code>
   attributes</h2>

  <h3 id=authoring><span class=secno>2.1. </span>Authoring requirements</h3>

  <p>Authors may specify a <code>role</code> attribute in no namespace on any
   element in the <code>http://www.w3.org/1999/xhtml</code> or
   <code>http://www.w3.org/2000/svg</code> namespace.

  <p>The value of these attributes must be an <a
   href="http://www.whatwg.org/specs/web-apps/current-work/multipage/section-common1.html#ordered">ordered
   set of space-separated tokens</a> where each token must be a <a
   href="#valid">valid role token</a>. For accessibility-related roles, the
   first supported role will be used; subsequent roles act as fallback roles.
   [HTML5]

  <p>A <dfn id=valid>valid role token</dfn> is one of the following:

  <ul>
   <li>
    <p>A role as defined in WAI-ARIA Roles or XHTML Role Attribute Module.
     [ROLES] [MODULE]

   <li>
    <p>The eight characters <code>wairole:</code> followed by a role as
     defined in WAI-ARIA Roles, if there is a namespace declaration in scope
     that binds the prefix <code>wairole</code> to the
     <code>http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#</code>
     namespace. [ROLES] [XMLNS]

   <li>
    <p>A CURIE whose prefix is not omitted and is not <code>wairole</code>,
     if there is a namespace declaration in scope that defines the prefix and
     that prefix is not bound to the
     <code>http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#</code> or
     <code>http://www.w3.org/1999/xhtml</code> namespace. [CURIE] [XMLNS]
  </ul>

  <p class=note>The "default namespace" is always
   <code>http://www.w3.org/1999/xhtml</code>, regardless of any actual
   namespace declarations.

  <p class=note>Thus the roles defined in WAI-ARIA Roles are effectively
   duplicated in the <code>http://www.w3.org/1999/xhtml</code> namespace.

  <p class=note>The <code>wairole</code> prefix is thus fixed to the
   <code>http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#</code> namespace,
   just like the <code>xml</code> prefix is fixed to the
   <code>http://www.w3.org/XML/1998/namespace</code> namespace in XML.
   However, unlike the <code>xml</code> prefix, the <code>wairole</code>
   prefix has to be declared before it is used according to this
   specification.

  <div class=example>
   <p>Since HTML doesn't do namespaces, the only allowed way to express roles
    declaratively in HTML is by using the unprefixed syntax, as in the
    following example:

   <pre>&lt;div role="checkbox" tabindex="0">&lt;/div></pre>

   <p>In XHTML and SVG, the following are allowed:

   <pre>&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:wairole="http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#">
 ...
  &lt;div role="checkbox" tabindex="0"/>
  &lt;div role="wairole:checkbox" tabindex="0"/>
  &lt;svg xmlns="http://www.w3.org/2000/svg">
   &lt;circle role="checkbox" focusable="true"/>
   &lt;circle role="wairole:checkbox" focusable="true"/>
   ...</pre>
</div>
<h3>UA requirements</h3>
<p>UAs must process the value of a <code>role</code> attribute in no namespace that is part of an element in the <code>http://www.w3.org/1999/xhtml</code> or <code>http://www.w3.org/2000/svg</code> namespace as described below.
<p>The following algorithm will return the <dfn>role identifier</dfn>:
<ol>
 <li><p>Let <var>tokens</var> be the result of <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/section-common1.html#split" title="split a string on spaces">splitting the string on spaces</a>. [HTML5]
 <li><p>For each token in <var>tokens</var>:
  </div>

  <h3 id=ua-requirements><span class=secno>2.2. </span>UA requirements</h3>

  <p>UAs must process the value of a <code>role</code> attribute in no
   namespace that is part of an element in the
   <code>http://www.w3.org/1999/xhtml</code> or
   <code>http://www.w3.org/2000/svg</code> namespace as described below.

  <p>The following algorithm will return the <dfn id=role-identifier>role
   identifier</dfn>:

  <ol>
   <li><p>If the token is a role (as defined in WAI-ARIA Roles), then return the token and abort these steps.
   <li><p>If the token is the eight characters <code>wairole:</code> followed by a role (as defined in WAI-ARIA Roles), then return the characters from the ninth character up to the end of the token and abort these steps.
   <li>
    <p>If the token is a supported custom role that is supposed to map to an accessibility API, then return the token and abort these steps.
    <p class=note>It is expected that AT vendors would introduce such custom roles.
    <p>Let <var>tokens</var> be the result of <a
     href="http://www.whatwg.org/specs/web-apps/current-work/multipage/section-common1.html#split"
     title="split a string on spaces">splitting the string on spaces</a>.
     [HTML5]

   <li>
    <p>For each <var>token</var> in <var>tokens</var>:

    <ol>
     <li>
      <p>If <var>token</var> is a role as defined in WAI-ARIA Roles, then
       return <var>token</var> and abort these steps. [ROLES]

     <li>
      <p>If <var>token</var> is the eight characters <code>wairole:</code>
       followed by a role as defined in WAI-ARIA Roles, then return the
       characters from the ninth character up to the end of <var>token</var>
       and abort these steps. [ROLES]

     <li>
      <p>If <var>token</var> is a supported custom role that is supposed to
       map to an accessibility API, then return <var>token</var> and abort
       these steps.

      <p class=note>It is expected that AT vendors would introduce such
       custom roles.
    </ol>

   <li>
    <p>Return the empty string.
  </ol>
 <li><p>Return the empty string.
</ol>
<p>UAs must expose the entire value of the attribute as a string to the AT using accessibility API specific methods, unless the <span>role identifier</span> is <code>presentation</code> and the element on which the attribute is specified is not focusable. UAs should also map the <span>role identifier</span> to an accessibility API specific role, if there is one. [MAPPING]
<p class=big-issue>Find out what that actually means and define it.
<p class=note>When the <span>role identifier</span> is the empty string, it won't map to anything.
<h2>States and Properties</h2>
<h3>Authoring requirements</h3>
<p>Authors may specify a state or property <var>propertyname</var> (as defined in WAI-ARIA States and Properties) by specifying an attribute <code>aria-<var>propertyname</var></code> in no namespace on an element in the <code>http://www.w3.org/1999/xhtml</code> or <code>http://www.w3.org/2000/svg</code> namespace, or by specifying an attribute <code><var>propertyname</var></code> in the <code>http://www.w3.org/2005/07/aaa</code> namespace on an element in any namespace, unless that element is in the <code>http://www.w3.org/1999/xhtml</code> or <code>http://www.w3.org/2000/svg</code> namespace and it has an <code>aria-<var>propertyname</var></code> attribute in no namespace specified. [STATES]
<p>The value of these attributes must be one of the allowed values of the state or property <var>propertyname</var> (as defined in WAI-ARIA States and Properties). [STATES]
<div class=example>
 <p>Since HTML doesn't do namespaces, the only way to express states or properties declaratively in HTML is by using <code>aria-<var>propertyname</var></code> attributes, as in the following example:
 <pre>&lt;div aria-hidden="true">...&lt;/div></pre>
 <p>In XHTML and SVG, the following are allowed:
 <pre>&lt;html xmlns="http://www.w3.org/1999/xhtml"

  <p>UAs must expose the entire value of the attribute as a string to the AT
   using accessibility API specific methods, unless the <a
   href="#role-identifier">role identifier</a> is <code>presentation</code>
   and the element on which the attribute is specified is not focusable. UAs
   should also map the <a href="#role-identifier">role identifier</a> to an
   accessibility API specific role, if there is one. [MAPPING]

  <p class=big-issue>Find out what that actually means and define it.

  <p class=note>When the <a href="#role-identifier">role identifier</a> is
   the empty string, it won't map to anything.

  <h2 id=states><span class=secno>3. </span>States and Properties</h2>

  <h3 id=authoring0><span class=secno>3.1. </span>Authoring requirements</h3>

  <p>Authors may specify a state or property <var>propertyname</var> (as
   defined in WAI-ARIA States and Properties) by specifying an attribute
   <code>aria-<var>propertyname</var></code> in no namespace on an element in
   the <code>http://www.w3.org/1999/xhtml</code> namespace, or by specifying
   an attribute <code><var>propertyname</var></code> in the
   <code>http://www.w3.org/2005/07/aaa</code> namespace on an element in any
   namespace, unless that element is in the
   <code>http://www.w3.org/1999/xhtml</code> namespace and it has an
   <code>aria-<var>propertyname</var></code> attribute in no namespace
   specified. [STATES]

  <p>The value of these attributes must be one of the allowed values of the
   state or property <var>propertyname</var> (as defined in WAI-ARIA States
   and Properties). [STATES]

  <div class=example>
   <p>Since HTML doesn't do namespaces, the only way to express states or
    properties declaratively in HTML is by using
    <code>aria-<var>propertyname</var></code> attributes, as in the following
    example:

   <pre>&lt;div aria-hidden="true">...&lt;/div></pre>

   <p>In XHTML and SVG, the following are allowed:

   <pre>&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:aaa="http://www.w3.org/2005/07/aaa">
 ...
  &lt;div aria-hidden="true">...&lt;/div>
  &lt;div aaa:hidden="true">...&lt;/div>
  &lt;svg xmlns="http://www.w3.org/2000/svg">
   &lt;g aria-hidden="true">...&lt;/g>
   &lt;g aaa:hidden="true">...&lt;/g></pre>
</div>
<h3>UA requirements</h3>
<p>UAs must process an <code>aria-<var>propertyname</var></code> attribute in no namespace that is part of an element in the <code>http://www.w3.org/1999/xhtml</code> or <code>http://www.w3.org/2000/svg</code> namespace as described below, unless that element has a <code><var>propertyname</var></code> attribute in the <code>http://www.w3.org/2005/07/aaa</code> namespace specified.
<p>UAs must process a <code><var>propertyname</var></code> attribute in the <code>http://www.w3.org/2005/07/aaa</code> namespace that is part of an element in any namespace as described below.
<ol>
 <li class=big-issue><p>Map <var>propertyname</var> to an accessibility API specific attribute, if any, and pass along the value. [MAPPING]
</ol>
<h2>References</h2>
<pre class=big-issue>
  </div>

  <h3 id=ua-requirements0><span class=secno>3.2. </span>UA requirements</h3>

  <p>UAs must process an <code>aria-<var>propertyname</var></code> attribute
   in no namespace that is part of an element in the
   <code>http://www.w3.org/1999/xhtml</code> namespace as described below,
   unless that element has a <code><var>propertyname</var></code> attribute
   in the <code>http://www.w3.org/2005/07/aaa</code> namespace specified.

  <p>UAs must process a <code><var>propertyname</var></code> attribute in the
   <code>http://www.w3.org/2005/07/aaa</code> namespace that is part of an
   element in any namespace as described below.

  <ol>
   <li class=big-issue>
    <p>Map <var>propertyname</var> to an accessibility API specific
     attribute, if any, and pass along the value. [MAPPING]
  </ol>

  <h2 id=references><span class=secno>4. </span>References</h2>

  <pre class=big-issue>
[MODULE]
   http://www.w3.org/MarkUp/2007/ED-xhtml-role-20070606/Overview.html
   http://www.w3.org/TR/2007/WD-xhtml-role-20071004/

[CURIE]
   http://www.w3.org/TR/2007/WD-xhtml-role-20071004/#sec_3.1.1. (for now)

[ROLES]
   http://www.w3.org/WAI/PF/Group/GUI/ (Member-only)
   or http://www.w3.org/TR/2007/WD-aria-role-20070601/

[STATES]
   http://www.w3.org/WAI/PF/Group/adaptable/ (Member-only)
   or http://www.w3.org/TR/2007/WD-aria-state-20070601/

[MAPPING]
   http://developer.mozilla.org/en/docs/ARIA_to_API_mapping

[XMLNS]
   http://www.w3.org/TR/2006/REC-xml-names-20060816/

[HTML5]
   http://www.whatwg.org/specs/web-apps/current-work/multipage/

[DOM3Core]
   http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/

[RFC2119]
   http://www.ietf.org/rfc/rfc2119.txt
</pre>
<h2>Acknowledgements</h2>
<p>Thanks to Al Gilman, Anne van Kesteren, Dave Raggett, Doug Schepers, Henri Sivonen, Maciej Stachowiak, and Richard Schwerdtfeger for their useful and substantial comments.

  <h2 id=acknowledgements><span class=secno>5. </span>Acknowledgements</h2>

  <p>Thanks to Al Gilman, Anne van Kesteren, Dave Raggett, Doug Schepers,
   Henri Sivonen, Maciej Stachowiak, Mark Birbeck, and Richard Schwerdtfeger
   for their useful and substantial comments.

      
Properties
ARIA Proposal (2007-10-04) ARIA Proposal (2007-10-15)
base_uri@:http://simon.html5.org/specs/aria-proposal
charset@:utf-8
content_type@:text/html
derived_from@:digest:4c2de16df11241755702ac43d63e5511
derived_from@:digest:ad808f0b2d428da829534d7260b59a2d
editor@:Simon Pieters
editor_mail@:simonp@opera.com
label@en:ARIA Proposal (2007-10-04)
last_modified@:2007-02-04 16:34:28Z
modified_in_content@:2007-10-04
label@en:ARIA Proposal (2007-10-15)
last_modified@:2007-02-15 18:27:52Z
modified_in_content@:2007-10-15
tag@en:ARIA
tag@en:HTML
tag@en:HTML5
tag@en:Opera
tag@en:Role
tag@en:Specification
tag@en:XHTML
title@en:ARIA Proposal
uri@:http://simon.html5.org/specs/aria-proposal<>2007-10-06 03:38:35Z
uri@:http://simon.html5.org/specs/aria-proposal<>2007-10-16 05:08:01Z
Edit Edit