diff --git a/svg-aam/.gitattributes b/svg-aam/.gitattributes new file mode 100644 index 000000000..e5237fb0f --- /dev/null +++ b/svg-aam/.gitattributes @@ -0,0 +1,12 @@ +# Ensure all text files do not accidentally become a CRLF file. +# Agreed upon during 5 August 2015 PF Editors concall. +# To override or prevent this behavior see the following sections. +* text eol=lf + +# Files that will always have CRLF line endings. Example: +# my-special-spec.html eol=crlf + +# Ensure non-text files don't get accidentally swept up by above. +*.png binary +*.jpg binary +*.zargo binary diff --git a/svg-aam/.gitignore b/svg-aam/.gitignore new file mode 100644 index 000000000..f91ff2b91 --- /dev/null +++ b/svg-aam/.gitignore @@ -0,0 +1,216 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml +*.publishproj + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +############# +## Windows detritus +############# + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + + +############# +## Python +############# + +*.py[cod] + +# Packages +*.egg +*.egg-info +dist/ +build/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg diff --git a/svg-aam/README.md b/svg-aam/README.md new file mode 100644 index 000000000..c013afa6c --- /dev/null +++ b/svg-aam/README.md @@ -0,0 +1,10 @@ + +# Specification 'svg-aam' + +This is the repository for SVG Accessibility API Mappings (svg-aam). It is the basis of the [Editor's Draft version of the specification](https://w3c.github.io/svg-aam/). + +You can also compare against [the most recent published version](https://www.w3.org/TR/svg-aam-1.0/). + +This specification is part of the [ARIA suite](https://www.w3.org/WAI/ARIA/deliverables), and uses the same code structure and build tools as other ARIA suites. General information about editing specifications is in the [main ARIA repository readme](https://github.com/w3c/aria/). + +Publication of the specification is now the responsibility of the SVG working group. The best way to comment on the specification is by filing an issue in this repository. \ No newline at end of file diff --git a/svg-aam/index.html b/svg-aam/index.html new file mode 100644 index 000000000..e5425a627 --- /dev/null +++ b/svg-aam/index.html @@ -0,0 +1,4095 @@ + + + +SVG Accessibility API Mappings + + + + + + + + + + + +
+

+ SVG Accessibility API Mappings (SVG-AAM) defines how + user agents map + Scalable Vector Graphics (SVG) [[!SVG2]] markup + to platform accessibility + application programming interfaces (APIs). + It is intended for SVG user agent developers + responsible for SVG accessibility in their user agent. +

+

+ This specification allows SVG authors to create accessible rich internet applications, + including charts, graphs, and other drawings. + It does this by extending the + Core Accessibility API Mappings 1.1 (CORE-AAM) [[!CORE-AAM]] + and the Accessible Name and Description: Computation and API Mappings 1.1 (ACCNAME-AAM) [[!ACCNAME-AAM]] specifications + for user agents. + It leverages those core mappings and provides SVG-specific guidance + to define how the SVG user agent must respond to keyboard focus + and role, state, and property attributes + provided in Web content via WAI-ARIA [[!WAI-ARIA]]. + The SVG-AAM also adapts the ACCNAME-AAM + to make use of standard SVG features + used to compute accessible names and description information + exposed by platform accessibility APIs. +

+

+ The SVG-AAM is part of the + WAI-ARIA suite + described in the WAI-ARIA Overview. +

+
+
+

+ This document is a work in progress. +

+

+ To provide feedback, please create or comment on an issue in the W3C SVG Accessibility API Mappings GitHub repository. + If this is not feasible, send email to www-svg@w3.org (email archive). + In-progress updates to the document may be viewed in the publicly visible editors' draft. +

+

+ Particularly problematic open issues + are highlighted in this document, + with links to the GitHub discussion. + Comments on these issues would be particularly appreciated. +

+

+ Relative to the last published working draft (8 September 2016), + the following major changes have been made: +

+ +

+ In addition, there have been numerous clarifying edits. +

+

+ This document was initially developed jointly by + the Accessible Rich Internet Applications Working Group + and the SVG Working Group, + through the SVG Accessibility Task Force. + It continues to be produced in coordination with other specifications + developed by the ARIA Working Group. +

+
+
+

Introduction

+

+ This specification defines how SVG host language elements and content — + with or without WAI-ARIA + roles, states, and properties applied — + map to accessibility APIs. + Sections give guidance on calculating text alternatives, + mapping actions to events, + event processing, special document handling procedures, and error handling. +

+

+ This introduction provides + some background on why this specification exists, + and how it relates to other WAI-ARIA specifications. + It includes + a general overview of accessibility APIs + and the hierarchy of accessible objects + known as the accessibility tree. +

+
+

History and Purpose

+

+ In traditional Graphical User Interface (GUI) applications, + components of the User Interface (UI) are + displayed when needed and hidden when not needed + based on user interactions. + Accessibility APIs are used to communicate + semantics + about the user interface to + assistive technologies + used by people with disabilities. +

+

+ These APIs constitute + a contract between applications and assistive technologies, + such as screen readers, magnifiers, alternate input devices, and speech command and control, + to enable them to access the appropriate semantics needed to produce + a usable alternative to interactive applications or complex documents. + For example, screen-reading software for blind users can determine + whether a particular UI component + is a menu, button, text field, list box, etc. + It can also present the information in tables or lists + in a way that provides context for each piece of text. +

+

+ For web documents and applications, + the essential semantic information is encapsulated + within the Document Object Model (DOM). + Assistive technologies obtain this information from the user agent (web browser), + which maps elements and attributes + to the platform Accessibility API. +

+

+ In Scalable Vector Graphics (SVG) documents, + most SVG elements + do not provide semantic information of value to assistive technologies. + Instead, they represent low-level vector graphics drawing directives. + That element only has meaning to assistive technologies + if the author provides alternative text, descriptions, or WAI-ARIA semantics. +

+

+ Both version 1 [[SVG1]] and version 1.1 [[SVG11]] of the SVG specifications + included elements for defining accessible names and descriptions + (<title> and <desc>). + However, prior to this specification, there was no normative guidance + as to how user agents should expose this information to assistive technologies, + or how to integrate it with host languages and validators that support WAI-ARIA. + There was similarly no guidance on how user agents should make interactive SVG keyboard accessible. +

+

+ SVG 2 now incorporates keyboard navigation based on the established model from HTML 5. + The user agent + provides sequential focus navigation to SVG elements + that are interactive by default (links and audio/video elements with controls), + or that the author has indicated may receive focus + (through the use of tabindex attribute). + Focus may also be set or removed programmatically by scripts, + so that authors may implement + more complex keyboard focus patterns. +

+

+ SVG closely aligns with the core DOM Standard [[DOM]], + supporting JavaScript manipulation of the graphic in interactive environments. + Through the use of JavaScript, CSS, and related APIs, + authors can make SVG look and behave as an interactive application, + to produce rich interactive charts and drawings. +

+

+ To allow the author to express and dynamically update their intended semantics + in both static and interactive graphics, + SVG 2 supports the use of + WAI-ARIA roles, states, and properties. + Authors may include + WAI-ARIA attributes in their markup + and user agents will translate it + to the platform accessibility APIs. +

+

+ WAI-ARIA enables rich SVG-drawn Internet applications + to have the same accessibility features as + GUI applications installed on their operating system. + In complex static graphics, + WAI-ARIA provides the missing document structure that is provided in HTML by semantic elements. +

+
+
+

Relationship to Other Specifications

+

+ For an introduction to WAI-ARIA, + see the WAI-ARIA Overview. +

+

+ The SVG Accessibility API Mappings specification (this document) + defines how WAI-ARIA features + interact with the native semantics of the SVG language. + It is part of a set of resources that define and support + the WAI-ARIA specification, + including the following documents: +

+ +

+ This guide relies heavily on the + accessibility API mappings + defined in the + Core Accessibility API Mappings + and + Accessible Name and Description + specifications + ([[CORE-AAM]] and [[ACCNAME-AAM]]) + but defines changes in mappings due to features in the SVG host language [[SVG2]]. + Key areas of difference stem from the intrinsic host language semantics of SVG: +

+ +
+
+

Accessibility APIs

+

+ To provide access to GUI applications, + software applications expose the necessary information needed by assistive technologies to interoperate with it through accessibility APIs. The accessibility information exposed through the accessibility APIs must be maintained throughout the applications lifecycle. +

+

+ In Web pages the Document Object Model (DOM) + is used to represent the structure and state + of the elements in the document + being rendered by a user agent. + The elements of the document are organized into a hierarchy of nodes + known as the DOM tree. + User agents map DOM + to accessibility APIs, + in the same way desktop applications map UI components. + The information provided to the accessibility API is used to + support assistive technologies, with the expectation + that the information passed from the DOM + matches the semantic intent of the author. + The author may communicate this semantic intent + by using native features of the document language + or by using WAI-ARIA, if native features are not available. +

+

+ Authors use SVG to create a broad range of + applications and drawings. The information needed to support accessibility APIs in SVG comes from + a combination of semantics from the elements themselves but also the additional semantics provided by + WAI-ARIA and the modular extensions to WAI-ARIA supported by this specification. +

+

+ A screen reader or other assistive technology + uses the semantic information exposed via + the accessibility API + to provide an alternative rendering of an application + that is meaningful to a user. +

+

+ Accessibility APIs + supported by this document (and the other specifications it extends) are: +

+ +

+ If user agent developers need to expose information + using other accessibility APIs, + it is recommended that they work closely + with the developer of the platform where + the API runs, + and assistive technology developers on that platform. +

+
+
+

The Accessibility Tree and the DOM Tree

+

+ The accessibility tree + and the DOM tree are parallel structures. + Roughly speaking, the accessibility tree is a subset + of the flattened DOM tree, + which is then augmented to + include the user interface objects + of the user agent + as well as the objects of the document. +

+

+ Accessible objects are created + in the accessibility tree for every + DOM element + that should be exposed to an + assistive technology. + An element could be exposed because it may fire an accessibility event + or because it has a property, + relationship or feature which needs to be exposed. +

+

+ Generally, if a DOM element can be omitted from the accessibility tree + without affecting meaning, it will be, + for reasons of performance and simplicity. + For example, a <span> with just a style change + and no semantics + may not get its own accessible object, + but the style change will be exposed by other means. +

+
+
+
+

Normative User Agent Implementation Requirements for SVG

+

+ This specification marks certain sections + as non-normative, also called informative. + The classification applies to the entire section. + All other sections provide normative requirements. + A statement "This section is non-normative" + applies to all its sub-sections, unless otherwise indicated. + In addition, all text boxes labelled "Note" are informative. +

+

+ Normative sections provide requirements that + user agents must follow + for an implementation to conform to this specification. + The keywords MUST, + MUST NOT, + REQUIRED, + SHALL, + SHALL NOT, + SHOULD, + RECOMMENDED, + MAY, and + OPTIONAL + in this document are to be interpreted as described + in Keywords for use in RFCs to indicate requirement levels [[rfc2119]]. + RFC-2119 keywords are formatted in uppercase and contained in an + element with class="rfc2119". + When the keywords shown above are used, but do not share this format, + they do not convey formal information in the RFC 2119 sense, + and are merely explanatory, i.e., informative. + As much as possible, such usages are avoided in this specification. +

+

+ Informative sections and notes provide information useful + to understanding the specification. + Such sections may contain examples of recommended practice, + but it is not required to follow such recommendations + in order to conform to this specification. +

+
+
+

Important Terms

+
Placeholder for glossary
+
+
+

Supporting Keyboard Navigation

+

+ Enabling keyboard navigation in web applications + is a necessary step toward making accessible web applications possible. + Not only is the keyboard the primary input device for many users, + but other accessibile input devices use keyboard events + to communicate with the user agent. +

+

+ The Scalable Vector Graphics (SVG) 1 [[SVG1]] and + 1.1 [[SVG11]] specifications included only very limited keyboard support + (access keys for animations). + Many user agents implemented tabbed focus for links, + but there was no declarative or scripted means + for authors to control this behavior. + Scalable Vector Graphics (SVG) 2 [[SVG2]] introduces keyboard navigation + and focus control + based on the HTML tabindex model. +

+

+ Conforming user agents MUST conform to + Supporting Keyboard Navigation + requirements in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+ +

+ The SVG Accessibility Task Force intends to develop + more detailed guidelines for authors and user agents + regarding navigation in graphical documents. +

+ +
+
+

Mapping WAI-ARIA to Accessibility APIs

+

+ WAI-ARIA support + was formally introduced to SVG in Scalable Vector Graphics (SVG) 2 [[SVG2]], + which allows ARIA attributes to be used in the default namespace. + This section defines how WAI-ARIA semantics are exposed to assistive technologies + through platform Accessibility APIs + and how SVG elements are mapped to + Accessibility APIs based on WAI-ARIA. +

+ +
+

General rules for exposing WAI-ARIA semantics

+

+ SVG user agents MUST conform to General rules for exposing WAI-ARIA semantics in the Core Accessibility API Mappings [[!CORE-AAM]], + with the additions described in the following sub-sections. +

+ +
+

Excluding Elements from the Accessibility Tree

+

+ Certain elements in the DOM + are not exposed via the accessibility API. + The section Excluding Elements from the Accessibility Tree + of the Core Accessibility API Mappings [[CORE-AAM]] + outlines the general rules for excluding elements. + One factor is whether host language semantics specify + that the element should not be displayed. +

+

+ The SVG language defines numerous elements + that fit this criteria. + Many SVG elements are never directly rendered to the screen, + while others may or may not be rendered or displayed, + depending on context or CSS styling. + Elements which are neither perceivable nor interactive + should not be included in the accessibility tree + exposed to accessibility APIs. + This section details the expected interpretation + of SVG host language semantics. +

+
+

The other factors for excluding elements, + as described in the Core Accessibility API Mappings, + can be summarized as follows: +

+
    +
  • If the first mappable role provided by the author + is none or presentation, the element must not be exposed.
  • +
  • If the element or an ancestor has an + aria-hidden value of true, + it should not be exposed.
  • +
  • If an ancestor of the element has a used role + which has the characteristic "Children Presentational: True" + in the WAI-ARIA specifications [[WAI-ARIA]], + the child element should not be exposed. + For example, the roles + button and + img + exclude all child content from being directly included + in the accessibility tree. +
  • +
+

+ However, note that a number of features of an element, such as interactivity, can cause an author-supplied or inherited role of none or presentation to be ignored as an error. + An element will not be excluded if it can currently receive focus based on user interaction. +

+

+ Consult the original document ([[CORE-AAM]]) for the normative text. +

+
+ +

+ Elements which are never directly rendered to screen, + nor represented by an interactive region in a graphic, + do not need a corresponding accessible object. + User agents MUST NOT include any elements, or their descendant content, as an accessible object in the accessibility tree that are indicated as no accessible object created in the SVG Element Mapping Tables. + User agents SHOULD also exclude + any other element defined by past or future SVG specifications or modules + that specifically indicate the element is never directly rendered. +

+

+ For example, elements that represent + filters, gradients, or gradient stops + will never create an accessible object. + Shape elements or image elements that are included + in an SVG definitions section or as part of a pattern + will also not have accessible objects, + because the semantics of the ancestor + defs or pattern element + preclude that entire DOM subtree from being represented + in the accessibility tree. +

+

+ Elements that are excluded from the accessibility tree might still be used in the name and description computation of another element, as defined in the Name and Description section. + Non-rendered elements may also be used as the templates + for rendered element instances created by a use element, + as described in the section on Use-Element Shadow Trees. +

+

+ Although they are not directly included in the accessibility tree, + animation and view elements can affect + the accessible objects representing their target elements, + as described under Special Processing Requiring Additional Computation. +

+

+ In addition, SVG 1.1 [[SVG11]] defines the conditional processing attributes + systemLanguage, + requiredExtensions, and + requiredFeatures. + These may be used individually + or in combination with the switch element + to prevent content from being rendered under certain conditions, + or to select between alternate versions of content. +

+

+ SVG user agents MUST NOT + expose to accessibility APIs + any elements that are not rendered + because of conditional processing attributes on that element + or because of the position of that element within a switch construct. + The switch element itself SHOULD + be omitted as if it had a role of none or presentation. +

+ +

+ The rendering of SVG elements is also affected by CSS styling properties, + which may be specified using stylesheet rules, inline styles, presentation attributes, or animations. + Regardless of how the style property is specified, + the effect depends on the final computed value + determined by the CSS cascade [[CSS-CASCADE-3]]. + User agents MUST NOT + expose to accessibility APIs + any element that is not rendered + because its computed style includes + a value of none + for the display property. +

+

+ Other style properties can prevent an element, + which is otherwise part of the rendering tree, + from creating any visible representation in the rendered graphic. + Such elements may still be interactive; + they may receive keyboard focus + or they may be associated with a region of the graphic + that is responsive to pointer input events. +

+

+ For the purpose of SVG, + an element is considered hidden + if it is neither visible, + according to the computed value of the visibility property, + nor interactive to pointer users. + according to the pointer-events property. + User agents SHOULD NOT + expose to accessibility APIs + any element that is hidden in this sense, + unless the author explicitly overrides the hiding + by setting the aria-hidden attribute to false. +

+

+ In the case of container elements (such as g or svg), + the element is not considered hidden + if any of its descendent content is visible + or can receive user events, + regardless of the computed value of visibility on the element itself. + Similarly, a use element may include + visible or interactive component graphics, + despite having style properties that would cause + an individual shape element to be hidden. + The use element MUST be considered visible or interactive + if any elements within its shadow tree are visible or interactive. + (The container or the use element may, however, still be considered presentational if it does not have any other reason to include it in the accessibility tree.) + A shape element with markers is visible or interactive + if any of its markers are visible or interactive. +

+
+

+ In HTML and in other CSS-styled documents, + elements made invisible with visibility: hidden + are always hidden elements for accessibility purposes, + equivalent to un-rendered elements (such as those with display: none). +

+

+ For SVG, this is not always appropriate, + because of the interaction with the pointer-events property. +

+

+ In many cases, the invisible elements are of semantic importance + (because they are interactive) + while visible elements are presentational only. + For example, large invisible elements are often used + to provide easy-to-hit targets for points in a map or datachart. + Because these elements react to pointer events, + they are effectively perceivable to pointer users, + and should be perceivable and interactive to + users of assistive technologies as well. +

+

+ An SVG element with a computed value of visibility: hidden + can be interactive to pointer users + for the following values of the + pointer-events property: +

+
    +
  • painted, for any rendered element except shape or a text where both the fill and stroke properties have a computed value of none
  • +
  • fill
  • +
  • stroke
  • +
  • all
  • +
  • bounding-box
  • +
+
+

+ An element that is currently positioned off-screen, + or that is obscured by other elements, + is not considered hidden. + User agents should expose this state through other means, + as described in the State and Property Mapping + section of the Core Accessibility API Mappings [[CORE-AAM]]. + +

+ +
+

+ Various other style properties and geometric attributes (of an element itself or an ancestor element) can make an element invisible. For simplicity, flexibility, and performance reasons, these are not considered a hiding method that excludes elements from the accessibility tree. +

+

+ When using properties other than display or visibility to hide inactive content, authors can use the aria-hidden attribute to indicate that assistive technologies should ignore the element and its descendents. +

+
+
+

+ Previous drafts of this specification also considered the + fill and stroke properties, + when both set to a value of none, + as a valid way to hide an element. + This has been removed as it introduced excessive complexity. + Some SVG elements (e.g., embedded images) are not affected by stroke and fill; + even those that are can be visible without it, because of markers or filter effects. + Furthermore, it could result in identical-looking graphics + (for example: one that used fill: transparent instead of fill: none) + having markedly different accessibility trees. +

+

+ Note, however, that the fill and stroke properties + may still have an indirect effect on the inclusion of an element, + depending on the value of the pointer-events property. +

+
+
+

+ The strict exclusion of non-rendered metadata elements, including desc, + from the accessibility tree + means that their content will only be available as plain text, + not as structured alternative representations + that a user can navigate in browsing mode. +

+

+ This contradicts the original intent of the SVG specifications, + which allows these elements to include structured content, + including HTML-namespaced content. + The SVG 1 specifications had suggested that this could + be alternatively presented as CSS-formated XML text, + but this is not supported by the + user agent/assistive technology combinations + currently in use. +

+

+ The editors welcome feedback and suggestions + (in GitHub Issue #6) + on alternative ways to represent + this hidden alternative content + in a way consistent with user agent and accessibility API implementations. +

+
+
+ +
+

Including Elements in the Accessibility Tree

+ +

+ Many SVG elements—although rendered to the screen—do not have an intrinsic semantic meaning. + Instead, they represent components of the visual presentation of the document. + To simplify the accessible representation of the document, + these purely presentational elements should normally be omitted + from the accessibility tree, + unless the author explicitly provides semantic content. +

+

+ However, any rendered SVG element may have semantic meaning. + Authors indicate the significance of the element by including + alternative text content or + WAI-ARIA attributes. + This section defines the rules for including + normally-omitted elements in the accessibility tree. +

+

+ The following graphical and container elements in the SVG namespace + SHOULD NOT be included in the accessibility tree, + except as described in this section: +

+
    +
  • + shape elements + (circle, + ellipse, + line, + path, + polygon, + polyline, + rect) +
  • +
  • + the use element +
  • +
  • + the grouping (g) element +
  • +
  • + the image element +
  • +
  • + the mesh element +
  • +
  • + text formatting elements + (textPath, + tspan) +
  • +
  • + the foreignObject element +
  • + +
+

+ Although these elements are omitted from the accessibility tree, + their child content + + is still processed, + as if it was a direct child of the nearest ancestor node in the DOM tree that is included in the accessibility tree. + In other words, the markup elements are treated + as if they had a role of none or presentation. +

+

+ For use elements, + the elements and text in their associated shadow tree MUST be processed + as if it was child content of the use element, + following the conditions specified in processing requiring additional computation. + This means that elements from the shadow tree can be included in the accessibility tree + even if the use element itself has a + (default or author-supplied) + role of presentation. +

+ +

+ SVG user agents MUST provide + an accessible object in the accessibility tree + for rendered SVG elements that meet any of the following criteria, + unless they are excluded from the accessibility tree per the rules + in Excluding Elements from the Accessibility Tree: +

+
    +
  • + It has at least one direct child + title element + or + desc' element that is not empty after trimming whitespace. User agents MAY include elements with these child elements without checking for valid text content. +
  • +
  • + It has a non-empty + (after trimming whitespace) + aria-label attribute or + aria-roledescription attribute. +
  • +
  • + It has an + aria-labelledby attribute + or + aria-describedby attribute containing valid IDREF tokens. User agents MAY include elements with these attributes without checking for validity. +
  • +
  • + It has a valid integer + 'tabindex' attribute. +
  • +
  • + The author has provided an allowed, non-abstract + WAI-ARIA role + other than none + or presentation. +
  • +
  • + It meets any of the criteria listed in the section + Including Elements in the Accessibility Tree + of the Core Accessibility API Mappings specification [[!CORE-AAM]]. +
  • +
+
+

+ At the time of drafting this document, + those criteria are as follows: + +

+ +

+ The latest version of the source document [[CORE-AAM]] + should be consulted for the normative text. +

+

+ The exception for hidden elements means that + SVG metadata elements or other non-rendered content + may be used in the accessible name and description + of another element without themselves being included + in the accessiblity tree. + For example, current best practice + for fallback browser support + is to use aria-labelledby and aria-describedby + to redundantly link to + title and desc child elements. + Including these elements as separate nodes in the tree + would unnecessarily complicate the document + presented to screen reader users. +

+
+

+ Interactive elements are covered by the requirement + regarding elements that may fire an Accessibility API event. + Specifically, for SVG the following elements are interactive + and MUST be included in the accessibility tree, without exception, + regardless of whether they would otherwise be considered hidden or presentational: +

+
    +
  • + A rendered element + (or instance of an element in a use-element shadow tree) + with a positive integer value + for the tabindex attribute, + or which is focusable by default + and has not been removed from the tab order with a negative integer tabindex attribute, + which may receive keyboard focus and therefore keyboard input events. +
  • +
  • + A rendered element + (or instance of an element) + that currently has keyboard focus + (e.g., after being focused from a script), + which may receive keyboard input events. +
  • +
+

+ With regards to pointer events, which bubble up the DOM tree, + the exact element that receives the event may not have semantic meaning + (that is, it may still be presentational). + However, the ability to receive pointer events overrides any exclusion + based on the visibility: hidden style property. +

+

+ The tabindex attribute + and the pointer-events property + have no impact on elements which are not rendered at all, + because of the display: none property + or because of host language semantics. +

+
+
+ +
+

Conflicts between native markup semantics and WAI-ARIA

+

+ SVG user agents + MUST conform to + Conflicts between native markup semantics and WAI-ARIA in the Core Accessibility API Mappings [[!CORE-AAM]] + where the host language is SVG + and the native semantics are as described in + the SVG Element Mapping Tables, + the State and Property Mapping section, + and the Special Processing Requiring Additional Computation section. +

+

+ Elements for which no accessible object is created and no role may be applied, + as defined in + the SVG Element Mapping Tables, + have no implicit role semantics. + The aria-roledescription attribute + MUST NOT be exposed on these elements. + All other SVG elements have implicit role semantics + when used with global WAI-ARIA attributes, + including aria-roledescription. +

+
+ +
+

Exposing attributes that do not directly map to accessibility API properties

+

+ SVG user agents MUST conform to Exposing attributes that do not directly map to accessibility API properties in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+
+
+ +
+

Role mapping

+

+ Platform accessibility APIs + traditionally have had a finite set of + predefined roles that are expected + by assistive technologies + on that platform and only one or two roles may be exposed. +

+

+ WAI-ARIA + only supports one active role at a time. + However, multiple roles may be specified + as an ordered set of space-separated valid role tokens. + The additional roles are fallback roles, + similar to the concept of specifying multiple font families + in case the first choice font is not supported. + This allows the role taxonomy to be extended + in future for specialized applications. + The entire role string is exposed to accessibility technologies + where possible, + so they can respond appropriately + even if there is no equivalent role in the platform API. +

+ +
+

General Rules

+

+ SVG user agents MUST conform to the Role Mapping General Rules accessibility API computational requirements in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+
+ +
+

SVG Element Mapping Tables

+

+ This section defines how elements in SVG2 + map to WAI-ARIA roles and platform accessibility APIs + based on their native host language semantics, + including which WAI-ARIA roles may be applied. + This section refers directly to both the + Role Mappings + in the Core Accessibility API Mappings [[!CORE-AAM]] specification and the Role Mappings in the Graphics Accessibility API Mappings [[!GRAPHICS-AAM]] specification, + which define how WAI-ARIA roles are mapped to platform accessibility APIs. +

+

a

+ + + + + + + + + + + + + + + +
SVG Specification + a +
+ Default Platform + WAI-ARIA Role Mappings + + link role + if the element has a valid href or xlink:href attribute. + For a elements that are not links, use the mapping for + tspan if the a element is a descendent of text, + or the mapping for g otherwise. +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings + and the Graphics Accessibility API Role Mappings +
+

animate

+ + + + + + + + + + + + + + + +
SVG Specification + animate +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

animateMotion

+ + + + + + + + + + + + + + + +
SVG Specification + animateMotion +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

animateTransform

+ + + + + + + + + + + + + + + +
SVG Specification + animateTransform +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

audio

+ + + + + + + + + + + + + + + +
SVG Specification + audio +
+ Default Platform + WAI-ARIA Role Mappings + + Follow the recommendations for the HTML audio element + in the HTML Accessibility API Mappings specification [[!HTML-AAM]]. +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + application role +
+

canvas

+ + + + + + + + + + + + + + + +
SVG Specification + canvas +
+ Default Platform + WAI-ARIA Role Mappings + + Follow the recommendations for the HTML canvas element + in the HTML Accessibility API Mappings specification [[!HTML-AAM]]. +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

circle

+ + + + + + + + + + + + + + + +
SVG Specification + circle +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-symbol role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

clipPath

+ + + + + + + + + + + + + + + +
SVG Specification + clipPath +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created, + for this element or any child content +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

cursor

+ + + + + + + + + + + + + + + +
SVG Specification + cursor +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created, + for this element or any child content +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

defs

+ + + + + + + + + + + + + + + +
SVG Specification + defs +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created, + for this element or any child content +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

desc

+ + + + + + + + + + + + + + + +
SVG Specification + desc +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created, + for this element or any child content; + see Name and Description mapping +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

discard

+ + + + + + + + + + + + + + + +
SVG Specification + discard +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

ellipse

+ + + + + + + + + + + + + + + +
SVG Specification + ellipse +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-symbol role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

feBlend

+ + + + + + + + + + + + + + + +
SVG Specification + feBlend +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feColorMatrix

+ + + + + + + + + + + + + + + +
SVG Specification + feColorMatrix +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feComponentTransfer

+ + + + + + + + + + + + + + + +
SVG Specification + feComponentTransfer +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feComposite

+ + + + + + + + + + + + + + + +
SVG Specification + feComposite +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feConvolveMatrix

+ + + + + + + + + + + + + + + +
SVG Specification + feConvolveMatrix +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feDiffuseLighting

+ + + + + + + + + + + + + + + +
SVG Specification + feDiffuseLighting +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feDisplacementMap

+ + + + + + + + + + + + + + + +
SVG Specification + feDisplacementMap +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feDistantLight

+ + + + + + + + + + + + + + + +
SVG Specification + feDistantLight +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feDropShadow

+ + + + + + + + + + + + + + + +
SVG Specification + feDropShadow +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feFlood

+ + + + + + + + + + + + + + + +
SVG Specification + feFlood +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feFuncA

+ + + + + + + + + + + + + + + +
SVG Specification + feFuncA +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feFuncB

+ + + + + + + + + + + + + + + +
SVG Specification + feFuncB +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feFuncG

+ + + + + + + + + + + + + + + +
SVG Specification + feFuncG +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feFuncR

+ + + + + + + + + + + + + + + +
SVG Specification + feFuncR +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feGaussianBlur

+ + + + + + + + + + + + + + + +
SVG Specification + feGaussianBlur +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feImage

+ + + + + + + + + + + + + + + +
SVG Specification + feImage +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feMerge

+ + + + + + + + + + + + + + + +
SVG Specification + feMerge +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feMergeNode

+ + + + + + + + + + + + + + + +
SVG Specification + feMergeNode +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feMorphology

+ + + + + + + + + + + + + + + +
SVG Specification + feMorphology +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feOffset

+ + + + + + + + + + + + + + + +
SVG Specification + feOffset +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

fePointLight

+ + + + + + + + + + + + + + + +
SVG Specification + fePointLight +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feSpecularLighting

+ + + + + + + + + + + + + + + +
SVG Specification + feSpecularLighting +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feSpotLight

+ + + + + + + + + + + + + + + +
SVG Specification + feSpotLight +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feTile

+ + + + + + + + + + + + + + + +
SVG Specification + feTile +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

feTurbulence

+ + + + + + + + + + + + + + + +
SVG Specification + feTurbulence +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

filter

+ + + + + + + + + + + + + + + +
SVG Specification + filter +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

foreignObject

+ + + + + + + + + + + + + + + +
SVG Specification + foreignObject +
+ Default Platform + WAI-ARIA Role Mappings + + group role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

g

+ + + + + + + + + + + + + + + +
SVG Specification + g +
+ Default Platform + WAI-ARIA Role Mappings + + group role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

hatch

+ + + + + + + + + + + + + + + +
SVG Specification + hatch +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

hatchPath

+ + + + + + + + + + + + + + + +
SVG Specification + hatchPath +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

iframe

+ + + + + + + + + + + + + + + +
SVG Specification + iframe +
+ Default Platform + WAI-ARIA Role Mappings + + Follow the recommendations for the HTML iframe element + in the HTML Accessibility API Mappings specification [[!HTML-AAM]]. +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + application, document, img +
+

image

+ + + + + + + + + + + + + + + +
SVG Specification + image +
+ Default Platform + WAI-ARIA Role Mappings + + img role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

line

+ + + + + + + + + + + + + + + +
SVG Specification + line +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-symbol role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

linearGradient

+ + + + + + + + + + + + + + + +
SVG Specification + linearGradient +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

marker

+ + + + + + + + + + + + + + + +
SVG Specification + marker +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

mask

+ + + + + + + + + + + + + + + +
SVG Specification + mask +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

mesh

+ + + + + + + + + + + + + + + +
SVG Specification + mesh +
+ Default Platform + WAI-ARIA Role Mappings + + img role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

meshPatch

+ + + + + + + + + + + + + + + +
SVG Specification + meshPatch +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

meshRow

+ + + + + + + + + + + + + + + +
SVG Specification + meshRow +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

metadata

+ + + + + + + + + + + + + + + +
SVG Specification + metadata +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created, + for this element or any child content +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

mpath

+ + + + + + + + + + + + + + + +
SVG Specification + mpath +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

path

+ + + + + + + + + + + + + + + +
SVG Specification + path +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-symbol role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

pattern

+ + + + + + + + + + + + + + + +
SVG Specification + pattern +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created, + for this element or any child content +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

polygon

+ + + + + + + + + + + + + + + +
SVG Specification + polygon +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-symbol role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

polyline

+ + + + + + + + + + + + + + + +
SVG Specification + polyline +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-symbol role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

radialGradient

+ + + + + + + + + + + + + + + +
SVG Specification + radialGradient +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

rect

+ + + + + + + + + + + + + + + +
SVG Specification + rect +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-symbol role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

script

+ + + + + + + + + + + + + + + +
SVG Specification + script +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

set

+ + + + + + + + + + + + + + + +
SVG Specification + set +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

solidColor

+ + + + + + + + + + + + + + + +
SVG Specification + solidColor +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

source

+ + + + + + + + + + + + + + + +
SVG Specification + source +
+ Default Platform + WAI-ARIA Role Mappings + + Follow the recommendations for the HTML source element + in the HTML Accessibility API Mappings specification [[!HTML-AAM]]. +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

stop

+ + + + + + + + + + + + + + + +
SVG Specification + stop +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

style

+ + + + + + + + + + + + + + + +
SVG Specification + style +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

svg

+ + + + + + + + + + + + + + + +
SVG Specification + svg +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-document +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

switch

+ + + + + + + + + + + + + + + +
SVG Specification + switch +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

symbol

+ + + + + + + + + + + + + + + +
SVG Specification + symbol +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-object role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +

+ A symbol element is not directly rendered, + and therefore not directly exposed in the accessibility tree. + However, the role (default or author-supplied) for the element + will be used for the rendered instance of the symbol + in the use-element shadow tree. + Either the symbol or the use element, + or both, + may have an associated accessible object, + depending on where the author has provided names, descriptions, roles, or interactivity. +

+
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

text

+ + + + + + + + + + + + + + + +
SVG Specification + text +
+ Default Platform + WAI-ARIA Role Mappings + + group role, + but with the following platform-specific API mappings: +
+
MSAA + IAccessible2
+
+ Role: + IA2_ROLE_PARAGRAPH +
+
+ Interfaces: + IAccessibleText2; IAccessibleHypertext2 +
+
UIA
+
+ Control Type: Text +
+
ATK
+
+ Role: + ATK_ROLE_SECTION +
+
+ Interfaces: + AtkText; AtkHypertext +
+
AX
+
+ AXRole: AXGroup +
+
+ AXSubrole: (nil) +
+
+ AXRoleDescription: "group" +
+
+

+ The platform mappings given above are similar to + those recommended for the HTML p element + in the HTML Accessibility API Mappings specification [[HTML-AAM]]. + There is currently no WAI-ARIA role available + that defines a distinct text block. + However, such roles (denoting paragraphs or distinct text regions) exist in many platform accessibility APIs + and are therefore used instead of a generic group role. +

+
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

textPath

+ + + + + + + + + + + + + + + +
SVG Specification + textPath +
+ Default Platform + WAI-ARIA Role Mappings + + group role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created, + but changes in text styling SHOULD be exposed through + properties of the parent text element where supported +

+ The role mappings for textPath and tspan + are an open issue. +

+
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

title

+ + + + + + + + + + + + + + + +
SVG Specification + title +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created; see Name and Description mapping +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

track

+ + + + + + + + + + + + + + + +
SVG Specification + track +
+ Default Platform + WAI-ARIA Role Mappings + + Follow the recommendations for the HTML track element + in the HTML Accessibility API Mappings specification [[!HTML-AAM]]. +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+

tspan

+ + + + + + + + + + + + + + + +
SVG Specification + tspan +
+ Default Platform + WAI-ARIA Role Mappings + + group role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created, + but changes in text styling SHOULD be exposed through + properties of the parent text element where supported +

+ The role mappings for textPath and tspan + are an open issue. +

+
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

use

+ + + + + + + + + + + + + + + +
SVG Specification + use +
+ Default Platform + WAI-ARIA Role Mappings + + graphics-object role mapping + if the element meets the criteria for Including Elements in the Accessibility Tree; + otherwise, no accessible object created +

+ Note that the re-used graphics + in the use element's shadow tree + may still be included in the accessibility tree, + even if the host element is not. +

+
+

+ Previous drafts of this specification did not require that + the re-used graphical elements + be exposed directly; + The use element was treated as an atomic object. + This was not consistent with the potential for interactive content or text + within the re-used graphics. +

+

+ Corresponding with the change to directly expose re-used graphics, + special rules for the accessible name and description of use elements + are no longer required. +

+
+
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + any role; + see the Core Accessibility API Role Mappings and the Graphics Accessibility API Role Mappings +
+

video

+ + + + + + + + + + + + + + + +
SVG Specification + video +
+ Default Platform + WAI-ARIA Role Mappings + + Follow the recommendations for the HTML video element + in the HTML Accessibility API Mappings specification [[!HTML-AAM]]. +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + application role +
+

view

+ + + + + + + + + + + + + + + +
SVG Specification + view +
+ Default Platform + WAI-ARIA Role Mappings + + no accessible object created; + see the section SVG views + for special processing requirements +
+ Allowed WAI-ARIA Roles + and Platform WAI-ARIA Role Mappings + + no role may be applied +
+
+

+ The use of the group role for + textPath + and tspan + is that of generic container + for a span of text content which forms a distinct object + (either because it + has supplementary alternative text labels or descriptions + or because it is interactive). + ARIA 1.1 does not have any roles for non-interactive spans of text. +

+

+ More work is required to address whether + text-specific platform accessibility API roles + can more effectively serve this function. + In particular, for ATK, the ATK_ROLE_STATIC role + is probably more appropriate than the usual mappings for group. +

+

+ Suggestions for improved mappings would be welcome, + in GitHub Issue #2) +

+
+
+
+ +
+

State and Property Mapping

+

+ This section describes how to expose WAI-ARIA states and properties. SVG user agents MUST conform to the State and Property Mapping accessibility API computational requirements in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+

+ In addition, the following attributes on SVG elements + require special processing: +

+ +

+ The xlink prefix is used here to refer to the + XLink namespace, http://www.w3.org/1999/xlink. + Attributes of the given names in that namespace should be + processed as described here, + regardless of how the namespace is applied in markup or via script. + XLink-namespaced attributes are deprecated in SVG 2 [[SVG2]], + but user agents are still expected to process them, + to maintain backwards compatibility. + Nonetheless, SVG 2 requires that the href attribute in the default namespace + takes precedence over the XLink equivalent + if both are set on a given element. + In that case, the XLink version is not valid + for the purpose of the name and description computation. +

+ +

+ The effective attribute for a given element, + and therefore the state and property mapping, + may be affected by declarative animation + as described in the Animation section. +

+
+ +
+

Special Processing Requiring Additional Computation

+
+

Name and Description

+

+ When computing an accessible name or + accessible description, + user agents MUST conform + to the section titled + Text Alternative Computation of the Accessible Name and Description specification [[!ACCNAME-AAM]], + with the following modifications for the SVG host language: +

+
    +
  1. + Replace step 2A with the following: +
    + If the current node traversal is not + a result of following a aria-labelledby or aria-describedby reference, + and the current node is not included in the accessibility tree + according to the rules in + Excluding Elements from the Accessibility Tree + and Including Elements in the Accessibility Tree, + return the empty string. +
    +
  2. +
  3. + Replace step 2D with the following: +
    +

    + Otherwise, if performing a text alternative computation for an accessible name: +

    +
      +
    • + If the current node has at least one direct child title element, + select the appropriate title + based on the language rules for the SVG specification, + and return the title text alternative as a flat string. +
    • +
    • + If the current node is a link, + and there was no child title element, + but it has an xlink:title attribute, + return the value of that attribute. +
    • +
    +

    + If performing a text alternative computation for an accessible description: +

    +
      +
    • + If the current node has at least one direct child desc element, + select the appropriate description + based on the language rules for the SVG specification, + and return the concatenated text content of the description. +
    • +
    +
    +
  4. +
  5. + In step 2F, + modify step iii + by replacing: +
    +

    For each child node of the current node:

    +
    + with +
    +

    If the element is a text container element, + for each child node of the current node: +

    +
    +
  6. +
  7. + Replace step 2H with the following: +
    +

    + Otherwise, if performing a text alternative computation for an accessible description, + and the current node has at least one direct child title element, + but the title elements were not used + when generating the accessible name for the node, + then select the appropriate title + based on the language rules for the SVG specification, + and return the title text content as the description. +

    +

    + Otherwise, if the current node is a link, + and it has an xlink:title attribute that was not used for the accessible name, + return the value of that attribute. +

    +
    +
  8. +
+ +

When determining whether an element has a direct child element, + only actual DOM child elements are considered, + regardless of whether or not the parent element has an associated shadow tree.

+ +
+

+ The net effect of these changes is to establish the following priority + of alternative text values for the accessible name: +

+
    +
  1. aria-labelledby
  2. +
  3. aria-label
  4. +
  5. a direct child title element
  6. +
  7. xlink:title attribute on a link
  8. +
  9. + for text container elements, + the text content +
  10. +
+

+ The alternative text values for the accessible description + have the following priority: +

+
    +
  1. aria-describedby
  2. +
  3. a direct child desc element
  4. +
  5. + for text container elements, + the text content +
  6. +
  7. + a direct child title element + that provides a tooltip, + when ARIA label attributes are used + to provide the accessible name +
  8. +
  9. xlink:title attribute on a link, + if not used to provide the accessible name +
  10. +
+

+ The aria-labelledby and aria-describedby properties + can reference the element on which they are given, + in order to concatenate one of the other text alternatives + with text from a separate element. +

+
+ +
+ +
+

Widget Values

+

+ SVG user agents MUST conform to the + Widget Values + accessibility API computational requirements in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+
+ +
+

Relations

+

+ SVG user agents MUST conform to the + Relations + accessibility API computational requirements in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+ +
+

+ The CORE-AAM section on Relations requires that + assistive technologies SHOULD provide a method to navigate to (and within) + structured content referenced by aria-describedby. + This conflicts with the current approach of not including + non-rendered descriptive content in the accessibility tree. +

+

+ See the issue discussion for that specification, + and the related issue about exposing SVG desc content. +

+
+
+ +
+

Group Position

+

SVG user agents MUST conform to the + Group Position + accessibility API computational requirements in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+
+ +
+

Use-Element Shadow Trees

+ +

This specification uses the terms + shadow tree + and host + as defined by the DOM standard [[!DOM]], + and the terms + use-element shadow tree + and element instance + as defined by SVG 2 [[!SVG2]]. +

+ +

+ SVG user agents MUST process the element instances + generated for the use-element shadow tree + as if those elements were children of the use element itself, + with the following conditions: +

+ + +
+

+ The editors will be working to harmonize these guidelines + with general rules for WAI-ARIA processing of shadow tree elements, + such as in web components. + Feedback from implementers is requested + on the practical feasibility of encapsulating IDREF matching in this manner. +

+

+ General feedback on shadow DOM and ARIA should be discussed + in the Core-AAM issue. + Feedback unique to SVG can be submitted + to Issue #7 on this specification. +

+
+ +
+ +
+

SVG Views

+

+ SVG provides authors with the means of specifying a particular + view of the document. + A view is applied through the target fragment of the document URL, + either by referencing the id of + a view element, + or by specifying a custom view using the SVG view specification fragment identifier. +

+

+ The visual effect of an SVG view + is equivalent to modifying attributes + on the parent svg element (for a view element) + or the root element (for an SVG view specification fragment). + User agents SHOULD therefore + modify the accessible object representing that svg + when a view is in effect. +

+

+ In particular, the following changes should be made: +

+ +

+ A navigation action towards a URL including an SVG view specification + or the id of a view element + SHOULD be treated as a series of + property change events on the target svg element + followed by navigation to that element. + User agents MAY represent the property changes + as the deletion of existing nodes followed by the insertion of modified nodes. +

+ +
+

+ SVG Views provide a functionality unique to SVG, + with no direct equivalent in HTML documents. + They may be used as the end-point of a navigation action, + but are not themeselves a container for the targetted content. + They may also be used at the time an SVG document is embedded, + to subset the visual content to only include a portion of the file. +

+

+ The editors would be very interested in practical examples + of SVG views in use, + so that we may determine if the above requirements are sufficient. + Particular issues to consider include whether special rules are required + for managing keyboard focus, + or for excluding content that is rendered offscreen + when a view is in effect. +

+

+ In addition, + the viewTarget attribute, + and the corresponding parameter for SVG view fragments, + has been deprecated in SVG 2. + Their intended use, + to trigger visual styling changes in the target element, + has never been well implemented by user agents. + Without viewTarget, there would be no native way in SVG to indicate + the semantic target of a given view. + For view elements + (but not view fragments), + a possible alternative is to encourage + authors to directly specify aria-flowsto attributes. + These would then need to be mapped to the relevant svg element. +

+

+ This raises the question of whether any other (or all) ARIA attributes + should be mapped from the view element + onto the accessible object for the svg element + while the view is in effect. + This would require careful consideration + of all possible consequences and conflicts. + For example, + should a view be able to change the role of the SVG element? +

+

+ The aria-flowsto attribute is not well supported in assistive tools; + there have been proposals to deprecate it in a future version. + Are there other ways in which user agents could expose the changed view, + so that users of assistive technologies can quickly understand + which parts of the graphic are visible? +

+

+ Feedback on any of these points can be provided + on issue #8. +

+
+
+ +
+

Declarative Animation

+

+ SVG animation elements may modify element attributes and style properties. + CSS animations may modify style properties. + Either type of animation may be triggered by user interaction, + or may run on a fixed schedule. +

+

+ If an animation changes the effective value of a WAI-ARIA state or property attribute, + or an SVG attribute that is described in the State and Property Mapping section, + the User Agent MUST expose the change + in the same way as if the actual attribute value was changed. +

+

+ The role attribute is not animatable. +

+

+ If an animated change affects whether an element is rendered, + or change whether it is visible + in a way that would cause it to be excluded from the accessibility tree, + user agents SHOULD expose the change + according to the guidelines in the + Changes to document content or node visibility section + of the Core Accessibility API Mappings [[!CORE-AAM]]. +

+ +
+
+ +
+

Actions

+

+ SVG user agents MUST conform to the + Actions + accessibility API computational requirements in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+
+ +
+

Events

+

+ User agents fire + events for user actions, + WAI-ARIA + state changes, + changes to document content or node visibility, + changes in selection, and operation of menus. + Conforming user agents MUST support the + [[!CORE-AAM]] Events mappings. +

+
+ +
+

Special Document Handling Procedures

+

+ SVG user agents MUST conform to the + Special Document Handling Procedures + in the Core Accessibility API Mappings [[!CORE-AAM]]. +

+
+ +
+

Security and Privacy Considerations

+

+ Implementation of this specification is not expected to add + any new security or privacy considerations to the web platform, + relative to implementation of SVG ([[SVG2]]) and WAI-ARIA ([[WAI-ARIA]]) separately. +

+

+ If you believe there is a potential new security or privacy risk + created by this specification, + please raise an issue + in the specification's GitHub repository. +

+
+ +
+

Appendices

+ + +
+

Acknowledgments

+

In addition to the credited authors and editors, + the participants in the SVG Accessibility Task Force + contributed to the development of this document. + Appreciation also goes to Joanmarie Diggs and other implementers + who have offered feedback on the drafts and helped with testing. +

+
+

Past participants in the SVG Accessibility Task Force

+
    +
  • Amelia Bellamy-Royds
  • +
  • Michael Cooper (W3C)
  • +
  • Erik Dahlström (Opera)
  • +
  • Amy Dai (Oracle Corporation)
  • +
  • Fred Esch (IBM Corporation)
  • +
  • Charles McCathie Nevile (Yandex)
  • +
  • Cameron McCormack (Mozilla Foundation)
  • +
  • Brian McNeily (SSB BART Group)
  • +
  • Heather Migliorisi
  • +
  • Charu Pandhi (IBM Corporation)
  • +
  • Janina Sajka
  • +
  • Doug Schepers (W3C)
  • +
  • Rich Schwerdtfeger (Knowbility)
  • +
  • Léonie Watson (The Paciello Group, LLC)
  • +
  • Jason White (Educational Testing Service)
  • +
+
+
+
+ +
+ +
+ +
+ +