Role Attribute 1.0

An attribute to support the role classification of elements

W3C Working Draft 13 January 2011

This version:
Latest published version:
Previous version:
Shane McCarron, Applied Testing and Technology, Inc. shane@aptest.com
Ben Adida, Creative Commons
Mark Birbeck, webBackplane
T. V. Raman, Google, Inc.
Richard Schwerdtfeger, IBM Corporation


The Role Attribute defined in this specification allows the author to annotate markup languages with machine-extractable semantic information about the purpose of an element. Use cases include accessibility, device adaptation, server-side processing, and complex data description. This attribute can be integrated into any markup language. In particular, schema implementations are provided to facilitate with languages based upon XHTML Modularization [XHTML-MODULARIZATION11-2e].

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.

This is a Last Call Working Draft by the Protocols & Formats Working Group of the Web Accessibility Initiative. This version incorporates changes in response to public comments received on the previous version. A history of changes to Role Attribute 1.0 is available.

Feedback on the information provided here is essential to the ultimate success of the Role attribute. The PFWG asks in particular:

Start with the instructions for commenting page to submit comments (preferred), or send email to public-pfwg-comments@w3.org (comment archive). Comments should be made by 25 February 2011. In-progress updates to the document may be viewed in the publicly visible editors' draft.

This document was published by the Protocols and Formats Working Group as a Last Call Working Draft. This document is intended to become a W3C Recommendation. If you wish to make comments regarding this document, please send them to public-pfwg-comments@w3.org (subscribe, archives). The Last Call period ends 25 February 2011. All feedback is welcome.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This is a Last Call Working Draft and thus the Working Group has determined that this document has satisfied the relevant technical requirements and is sufficiently stable to advance through the Technical Recommendation process.

This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.

Table of Contents

1. Introduction

This section is non-normative.

This document defines an attribute designed be used to help improve the accessibility and semantic markup of documents. It has been developed in conjunction with the accessibility community and other groups to make it easier to describe the semantic meaning of document content.

2. Conformance

As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

The key words must, must not, required, should, should not, recommended, may, and optional in this specification are to be interpreted as described in [RFC2119].

2.1 Document Conformance

The Role Attribute does not represent a stand-alone document type. It is intended to be integrated into other host languages such as HTML or XHTML. A conforming Role Attribute document is a document that requires only the facilities described as mandatory in this specification and the facilities described as mandatory in its host language. Such a document must meet all the following criteria:

  1. The document must conform to the constraints expressed in its host language implementation.

  2. If the host language is an XML [XML10-4e] markup language and is in the XHTML Namespace http://www.w3.org/1999/xhtml), there are no additional requirements. If the host language is an XML markup language and is not in the XHTML namespace, and the host language does not incorporate this attribute in 'no namespace', then the document must contain an XML namespace declaration for the Role Attribute Module namespace [XML-NAMES11]. The namespace for Role Attribute Module is defined to be http://www.w3.org/1999/xhtml. An example start tag of a root element might look like:

    <mylang xmlns="http://www.example.com/dtd/mylang" 
            xmlns:xh="http://www.w3.org/1999/xhtml" xml:lang="en" >

2.2 Host Language Conformance

When the Role Attribute is included in a host language, all of the facilities required in this specification must be included in the host language. In addition, the attribute defined in this specification must be included in the content model of the host language.

3. The Role Attribute

This specification defines the role attribute. The role attribute takes as its value one or more whitespace separated TERMorCURIEorAbsURIs as defined in [RDFA-CORE]. Each element of the value maps to a URI that corresponds to a vocabulary term that should be defined using RDF.

The datatype used for @role permits the use of a TERM, a CURIE, or a full URI. RDFa defines a TERM as an item from a vocabulary, and defines how a vocabulary is constructed. The default vocabulary for use with @role is defined in [XHTML-VOCAB]. A host language may define a different default vocabulary.

The specific vocabulary terms from the default vocabulary are not included in this document. They are defined in [XHTML-VOCAB] to ease maintenance. The terms are drawn from [WAI-ARIA] and from the original work on this document by the XHTML2 Working Group.

The attribute describes the role(s) the current element plays in the context of the document. This can be used, for example, by applications and assistive technologies to determine the purpose of an element. This could allow a user to make informed decisions on which actions may be taken on an element and activate the selected action in a device independent way. It could also be used as a mechanism for annotating portions of a document in a domain specific way (e.g., a legal term taxonomy). Although the role attribute may be used to add semantics to an element, authors should use elements with inherent semantics, such as p, rather than layering semantics on semantically neutral elements, such as div role="paragraph".

The following is an example of a good, appropriate use of the role attribute:

<ul role="navigation">
    <li href="downloads">Downloads</li>
    <li href="docs">Documentation</li>
    <li href="news">News</li>

3.1 Extending the collection of roles

It is possible to define additional role values. Such values must be defined in their own vocabulary. The URI associated with that vocabulary should resolve to a resource that allows for the machine and human discovery of the definition of the roles in the vocabulary. One format that achieves this is the RDFa Profile as defined in [RDFA-CORE].

If this attribute is used in conjunction with RDFa (see Appendix A), then the vocabulary definition must be the same as that required by RDFa.

A. Using Role in conjunction with RDFa

If a Host Language contains the @role attribute, then an RDFa processor processing a document written in that Host Language according to the rules of that Host Language may generate additional triples for role attributes. If these additional triples are being generated, then they must be generated as follows:

B. XHTML Role Attribute Module

B.1 DTD Implementation

The DTD implementation of XHTML Role Attribute Module conforms to the requirements defined in [XHTML-MODULARIZATION11-2e]. Consequently, it provides a Qualified Names declaration module.

B.1.1 Qualified Names Module

Note that this module defines the parameter entity %xhtml-role-attrs.qname;. This entity is intended to be used in the attribute lists of elements in any host language that permits the use of the role attribute on elements in its own namespace. If a host language does not permit role in its namespace, then the host language driver should set a parameter entity %XHTML-ROLE.prefixed; to INCLUDE and a parameter entity %XHTML-ROLE.prefix; to a value that is the prefix for the XHTML Role Attribute Module attribute.

<!-- ....................................................................... -->
<!-- XHTML Role Qname Module  ............................................ -->
<!-- file: xhtml-role-qname-1.mod

     This is XHTML Role - the Role Attribute Module for XHTML.

     Copyright 2006 W3C (MIT, ERCIM, Keio), All Rights Reserved.

     This DTD module is identified by the PUBLIC and SYSTEM identifiers:

       PUBLIC "-//W3C//ENTITIES XHTML Role Attribute Qnames 1.0//EN"
       SYSTEM "http://www.w3.org/MarkUp/DTD/xhtml-role-qname-1.mod"

     ....................................................................... -->

<!-- XHTML Role Attribute Qname (Qualified Name) Module

     This module is contained in two parts, labeled Section 'A' and 'B':

       Section A declares parameter entities to support namespace-
       qualified names, namespace declarations, and name prefixing
       for XHTML Role and extensions.

       Section B declares parameter entities used to provide
       namespace-qualified names for the XHTML role attribute:

         %role.qname;   the xmlns-qualified name for @role

     XHTML Role extensions would create a module similar to this one.

<!-- Section A: XHTML Role Attribute XML Namespace Framework ::::::::::::::: -->

<!-- 1. Declare a %XHTML-ROLE.prefixed; conditional section keyword, used
        to activate namespace prefixing. The default value should
        inherit '%NS.prefixed;' from the DTD driver, so that unless
        overridden, the default behavior follows the overall DTD
        prefixing scheme.
<!ENTITY % NS.prefixed "IGNORE" >
<!ENTITY % XHTML-ROLE.prefixed "%NS.prefixed;" >

<!-- 2. Declare a parameter entity (eg., %XHTML-ROLE.xmlns;) containing
        the URI reference used to identify the XHTML Role Attribute namespace
<!ENTITY % XHTML-ROLE.xmlns  "http://www.w3.org/1999/xhtml" >

<!-- 3. Declare parameter entities (eg., %XML.prefix;) containing
        the default namespace prefix string(s) to use when prefixing
        is enabled. This may be overridden in the DTD driver or the
        internal subset of an document instance. If no default prefix
        is desired, this may be declared as an empty string.

     NOTE: As specified in [XMLNAMES], the namespace prefix serves
     as a proxy for the URI reference, and is not in itself significant.
<!ENTITY % XHTML-ROLE.prefix  "" >

<!-- 4. Declare parameter entities (eg., %XHTML-ROLE.pfx;) containing the
        colonized prefix(es) (eg., '%XHTML-ROLE.prefix;:') used when
        prefixing is active, an empty string when it is not.
<!ENTITY % XHTML-ROLE.pfx  "%XHTML-ROLE.prefix;:" >
<!ENTITY % XHTML-ROLE.pfx  "" >

<!-- declare qualified name extensions here ............ -->
<!ENTITY % xhtml-role-qname-extra.mod "" >

<!-- 5. The parameter entity %XHTML-ROLE.xmlns.extra.attrib; may be
        redeclared to contain any non-XHTML Role Attribute namespace 
        declaration attributes for namespaces embedded in XML. The default
        is an empty string.  XLink should be included here if used
        in the DTD.
<!ENTITY % XHTML-ROLE.xmlns.extra.attrib "" >

<!-- Section B: XML Qualified Names ::::::::::::::::::::::::::::: -->

<!-- 6. This section declares parameter entities used to provide
        namespace-qualified names for the XHTML role attribute.

<!ENTITY % xhtml-role.role.qname  "%XHTML-ROLE.pfx;role" >

<!-- The following defines a PE for use in the attribute sets of elements in
     other namespaces that want to incorporate the XHTML role attribute. Note
     that in this case the XHTML-ROLE.pfx should be defined. -->

<!ENTITY % xhtml-role.attrs.qname
   "%XHTML-ROLE.pfx;role             CDATA        #IMPLIED"

<!-- end of xhtml-role-qname-1.mod -->

B.2 Schema Implementation

The schema implementation of XHTML Role Attribute Module conforms to the requirements defined in [XHTML-MODULARIZATION11-2e]. It is included here as an example implementation.

B.2.1 Attributes Module

<?xml version="1.0" encoding="UTF-8"?>
    <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" 
               schemaLocation="xhtml-datatypes-1.xsd" />

      This is the XML Schema attribute module for XHTML Role
      $Id: Overview.html,v 1.3 2011/01/12 19:57:11 cooper Exp $
        <xs:documentation source="xhtml-copyright-1.xsd"/>
        <xs:documentation source="http://www.w3.org/TR/role-attribute#A_role"/>
    <xs:attribute name="role" type="xh11d:TERMorURIorCURIEs"/>

C. Acknowledgments

This section is non-normative.

At the time of publication, the participants in the W3C WAI Protocol and Formats Working Group were:

D. References

D.1 Normative references

Shane McCarron; et al. RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes.26 October 2010. W3C Working Draft. URL: http://www.w3.org/TR/2010/WD-rdfa-core-20101026/
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Internet RFC 2119. URL: http://www.ietf.org/rfc/rfc2119.txt
Shane McCarron. XHTML™ Modularization 1.1 Second Edition. 29 July 2010. W3C Recommendation. URL: http://www.w3.org/TR/2010/REC-xhtml-modularization-20100729
XHTML 2 Working Group. XHTML Vocabulary. URL: http://www.w3.org/1999/xhtml/vocab
C. M. Sperberg-McQueen; et al. Extensible Markup Language (XML) 1.0 (Fourth Edition). 16 August 2006. W3C Recommendation. URL: http://www.w3.org/TR/2006/REC-xml-20060816/

D.2 Informative references

Lisa Pappas; et al. Accessible Rich Internet Applications (WAI-ARIA) 1.0. 24 February 2009. W3C Working Draft. (Work in progress.) URL: http://www.w3.org/TR/2010/WD-wai-aria-20100916/
Andrew Layman; et al. Namespaces in XML 1.1 (Second Edition). 16 August 2006. W3C Recommendation. URL: http://www.w3.org/TR/2006/REC-xml-names11-20060816/