What is XHTML role attribute? What do you use it for? What is XHTML role attribute? What do you use it for? javascript javascript

What is XHTML role attribute? What do you use it for?


The Short Version:

The Role Attribute may give future browsers a way to work intelligently with certain XML elements in a device-independent way. For example, an unordered list that is marked with the role attribute of "navigation" can be interpreted intelligently on browsers in both desktop and handheld environments, allowing it to be displayed clearly in both environments.

The Long Version:

The XHTML Role Attribute defined in this specification allows the author to annotate XML 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.

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).

Example:

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

Given that the XHTML2 Working Group will cease to exist at the end of this year, there's no chance of this specification ever reaching release status in anything resembling its current form. http://www.w3.org/News/2009#entry-6601


The document you refer to is part of the work of the now discontinued XHTML 2 working group. It is effectively obsolete.

HTML5/XHTML5 also has a role attribute. Its definition is similar but somewhat more limited - its purpose is to indicate Accessible Rich Internet Applications (ARIA) roles, so that assistive technology such as screen readers can better inform users about the purpose of UI components (widgets), and also help them navigate the web page more easily.

The list of valid roles for ARIA is available at http://www.w3.org/TR/wai-aria/#roles


role can be used for accessibility. My understanding is that the role attribute should be avoided where the semantics make it clear. Using <nav role="navigation">...</nav> for example is discouraged because the nav semantic element already implies navigation.

But there are cases where it is useful. An image that is a link, for example, can have role="link" tabindex="0" to help screen readers and other assistive technology understand that it is acting as a link (make sure to listen on bother keydown event for enter key and on click event).

Or on an image you can have role="button" to indicate the image is acting as a button.

The role attribute allows the web application to add semantics to the web application that are meaningful to browsers but may not be conveyed in the markup without specifying it.

Often times there is a semantically correct way to do it without resorting to the attribute, but it is there when you need it.