SVG 可访问性 API 映射

W3C 工作草案

关于本文档的更多详情
此版本:
https://www.w3.org/TR/2026/WD-svg-aam-1.0-20260430/
最新发布版本:
https://www.w3.org/TR/svg-aam-1.0/
最新编辑草案:
https://w3c.github.io/svg-aam/
历史:
https://www.w3.org/standards/history/svg-aam-1.0/
提交历史
编辑:
(受邀专家)
(PowerMapper)
前任编辑:
(受邀专家)
(The Paciello Group, LLC)
作者:
(受邀专家)
(The Paciello Group, LLC)
(Knowbility) (至 2017 年 8 月)
(W3C) (至 2016 年 12 月)
反馈:
GitHub w3c/svg-aam (拉取 请求, 新议题, 开放议题)

摘要

SVG 可访问性 API 映射(SVG-AAM)定义了 用户代理如何将可缩放矢量图形(SVG)[SVG2] 标记映射到平台 可访问性应用程序编程 接口(API。它面向负责其用户代理中 SVG 可访问性的 SVG 用户 代理开发者。

本规范允许 SVG 作者创建可访问的 富互联网应用,包括图表、图形和其他绘图。它通过为用户代理扩展 核心可访问性 API 映射 1.1(CORE-AAM) [CORE-AAM] 和 可访问名称和描述:计算与 API 映射 1.1(ACCNAME-AAM) [ACCNAME-AAM] 规范来实现这一点。它 利用这些核心映射,并提供 SVG 专用 指导,以定义 SVG 用户代理必须如何响应 键盘焦点,以及 Web 内容中通过 WAI-ARIA [WAI-ARIA] 提供的 角色状态属性属性。 SVG-AAM 还调整了 ACCNAME-AAM,使其能够利用用于计算可访问名称和描述 信息的标准 SVG 特性,并将这些信息暴露给平台可访问性 API

SVG-AAM 是 WAI-ARIA 套件的一部分,该套件见 WAI-ARIA 概述

本文档状态

本节描述了本文档在发布时的状态。当前 W3C 出版物列表以及本技术报告的最新修订版可在 W3C 标准和草案 索引中找到。

我们正在更新本规范,以使其与 SVG 2.0 中的变更保持一致。这是一份早期草案,其中包含过时 信息和错误。请不要基于本草案进行实现。

若要评论,请SVG AAM GitHub 仓库中提交议题。请为每个主题创建单独的 GitHub 议题,而不要在一个议题中评论 多个主题。创建 GitHub 账户以提交议题是免费的。在评论之前, 请先查看 SVG AAM GitHub 仓库中是否已有相关 评论。如果无法在 GitHub 中提交 议题,请发送邮件至 public-svg-a11y@w3.org以往评论的邮件归档)。

本文档中特别有问题的开放议题会被高亮显示,并附有指向 GitHub 讨论的链接。 我们特别欢迎对这些议题发表评论。

相对于上一份已发布的工作草案(2018 年 5 月 10 日),已作出以下变更:

相对于此前发布的工作草案(2016 年 9 月 8 日),已作出以下主要变更:

此外,还进行了大量澄清性编辑。

本文档最初由 可访问 富互联网应用工作组SVG 工作 组通过 SVG 可访问性任务组共同开发。它现在由 ARIA 工作组与 ARIA 和 SVG 工作组开发的其他规范协作产出。

本文档由 可访问富互联网 应用工作组作为 工作草案发布,并使用 推荐标准 轨道

作为 工作草案发布并不意味着 W3C 及其成员的认可。

这是一份草案文档,可能随时被其他 文档更新、替换或废止。除作为进行中的工作之外, 不宜引用本文档。

本文档由一个依据 W3C 专利 政策运作的工作组产出。 W3C 维护了一份与该组交付成果相关的 公开专利披露列表; 该页面还包含 披露专利的说明。任何实际 知晓某项专利且认为该专利包含 必要权利要求 的个人,必须按照 W3C 专利政策第 6 节披露相关信息。

本文档受 2025 年 8 月 18 日 W3C 流程文档约束。

1. 简介

本节为非规范性内容。

本规范定义了 SVG 宿主语言元素和 内容——无论是否应用了 WAI-ARIA 角色、状态 和属性——如何映射到可访问性 API。各节给出 关于计算文本替代、将动作映射到 事件、事件处理、特殊文档 处理过程以及错误处理的指导。

本简介提供了一些背景,说明本规范为何存在,以及它与其他 WAI-ARIA 规范的关系。它包括对可访问性 API 以及称为 可访问对象层级结构的总体 概述,该层级结构称为 可访问性树

1.1 历史和目的

在传统图形用户界面(GUI) 应用中,用户界面(UI)的组件会根据用户交互 在需要时显示,在不需要时隐藏。 可访问性 API 用于向 残障人士所使用的 辅助 技术 传达关于用户界面的 语义

这些 API 构成了 应用与辅助技术(例如屏幕阅读器、放大器、替代输入 设备以及语音命令和控制)之间的契约,使它们能够访问生成交互式应用或复杂文档 可用替代形式所需的适当语义。例如, 面向盲人用户的屏幕阅读软件可以确定某个特定 UI 组件是菜单、按钮、文本字段、列表框等。它还可以 以为每段文本提供上下文的方式呈现表格或列表中的信息。

对于 Web 文档和应用,基本语义信息封装在 文档对象模型(DOM)中。辅助 技术从 用户代理(Web 浏览器)获取此信息,用户代理将元素 和属性映射到平台可访问性 API

在可缩放矢量图形(SVG)文档中,大多数 SVG 元素 不提供对辅助技术有价值的语义信息。相反,它们表示 低级矢量图形绘制指令。只有在作者提供了替代文本、描述或 WAI-ARIA 语义时,该元素对辅助 技术才具有意义。

SVG 规范的版本 1 [SVG1] 和版本 1.1 [SVG11] 都包含了用于定义可访问 名称描述 的元素(<title><desc>)。然而,在本规范之前,并没有规范性指导说明 用户代理应如何向辅助技术暴露这些信息,或如何将其与支持 WAI-ARIA 的宿主语言和验证器集成。同样,也没有关于 用户代理应如何使交互式 SVG 键盘 可访问的指导。

SVG 2 现在纳入了基于 HTML 5 既有模型的键盘导航。用户代理向 默认交互式的 SVG 元素(链接以及带控件的 音频/视频元素),或作者已指示可接收焦点的元素 (通过使用 tabindex 属性)提供顺序焦点导航。焦点也可以由脚本以编程方式 设置或移除,以便作者实现更复杂的键盘焦点模式。

SVG 与核心 DOM 标准 [DOM] 紧密保持一致,支持在 交互式环境中使用 JavaScript 操作图形。通过使用 JavaScript、 CSS 以及相关 API,作者可以使 SVG 看起来并表现得像交互式应用,从而 生成丰富的交互式图表和绘图。

为了允许作者在静态和交互式图形中表达并动态更新其预期语义, SVG 2 支持使用 WAI-ARIA 角色、状态和属性。 作者可以在其标记中包含 WAI-ARIA 属性,用户 代理会将其转换为平台可访问性 API

WAI-ARIA 使丰富的、由 SVG 绘制的互联网应用能够具有与 安装在其操作系统上的 GUI 应用相同的 可访问性特性。在复杂静态图形中,WAI-ARIA 提供了 HTML 中由语义元素提供的缺失文档结构。

1.2 与其他 规范的关系

关于 WAI-ARIA 的简介,请参见 WAI-ARIA 概述

SVG 可访问性 API 映射规范(本文档)定义了 WAI-ARIA 特性如何与 SVG 语言的原生语义交互。它是一组资源的一部分,这些资源 定义并支持 WAI-ARIA 规范,包括以下 文档:

本指南严重依赖 核心可访问性 API 映射可访问名称和描述 规范([CORE-AAM] 和 [ACCNAME-AAM])中定义的可访问性 API 映射,但定义了由于 SVG 宿主 语言 [SVG2] 中的特性而导致的映射 变更。主要差异源于 SVG 固有的宿主 语言语义:

1.3 可访问性 API

为了提供对 GUI 应用的访问,软件 应用通过 可访问性 API 暴露 辅助 技术与其互操作所需的必要信息。通过 可访问性 API 暴露的可访问性信息 必须在应用生命周期内得到维护。

在 Web 页面中,文档对象模型(DOM)用于 表示由 用户代理渲染的文档中 元素的结构和状态。文档中的元素被组织成称为 DOM 树的节点层级。用户代理将 DOM 映射到可访问性 API,方式与桌面应用映射 UI 组件相同。提供给可访问性 API 的信息用于支持 辅助技术,并期望从 DOM 传递的信息与作者的语义意图相匹配。作者可以 通过使用文档语言的原生特性,或在原生特性不可用时使用 WAI-ARIA,来传达这种语义意图。

作者使用 SVG 创建广泛的应用 和绘图。在 SVG 中支持可访问性 API 所需的信息,来自元素自身的 语义,以及由 WAI-ARIA 和本 规范所支持的 WAI-ARIA 模块化扩展 所提供的附加语义的组合。

屏幕阅读器或其他辅助技术使用通过 可访问性 API 暴露的语义信息,为用户提供有意义的应用替代呈现。

本文档(以及它所扩展的其他规范)支持的可访问性 API 包括:

如果用户代理开发者需要使用其他可访问性 API 暴露信息,建议他们与 该 API 所运行平台的开发者以及 该平台上的辅助技术开发者密切合作。

1.4 可访问性 树和 DOM

可访问性树DOM 树是并行结构。粗略地说, 可访问性树是扁平化 DOM 树的子集, 随后会对其进行扩充,以包含用户代理的用户界面 对象 以及文档的对象。

对于每个应暴露给 辅助 技术DOM 元素, 都会在可访问性树中创建 可访问对象。某个元素可能会被暴露,是因为它可能触发可访问性 事件,或因为它具有需要暴露的属性、关系或特性。

通常,如果某个 DOM 元素可以从 可访问性树中省略而不影响含义,则出于性能和简化原因会省略它。例如,一个 <span> 如果只有样式变化而没有语义, 可能不会获得自己的可访问对象,但该样式变化会通过其他方式暴露。

2. 一致性

除标记为非规范性的章节外,本规范中的所有编写指南、图表、示例和注释 均为非规范性内容。本规范中的其他所有内容均为规范性内容。

本文档中的关键词 MAYMUSTMUST NOTOPTIONALRECOMMENDEDREQUIREDSHALLSHALL NOTSHOULDSHOULD NOT 应按照 BCP 14 [RFC2119] [RFC8174] 中的说明解释,但只有在它们像此处所示那样全部 大写出现时才如此。

2.1 SVG 的规范性用户代理实现要求

本规范将某些章节标记为非规范性,也称为资料性。该分类 适用于整个章节。所有其他章节均提供规范性要求。除非另有说明, 声明“本节为非规范性内容”适用于其所有子章节。 此外,所有标记为“注”的文本框都是资料性的。

规范性章节提供了用户代理必须遵循的要求,以使某个实现 符合本规范。本文档中的关键词 MUSTMUST NOTREQUIREDSHALLSHALL NOTSHOULDRECOMMENDEDMAYOPTIONAL 应按照 用于在 RFC 中指明 要求级别的关键词 [rfc2119] 中的说明解释。RFC-2119 关键词以大写格式显示,并 包含在带有 class="rfc2119" 的元素中。当上面显示的关键词被使用,但 不具有该格式时,它们不传达 RFC 2119 意义上的正式信息, 而只是解释性的,即资料性的。本规范尽可能避免此类 用法。

资料性章节和注释提供有助于理解本规范的信息。此类 章节可能包含推荐实践的示例,但为了符合本规范,并不要求遵循这些 建议。

3. 支持键盘导航

在 Web 应用中启用键盘导航,是使可访问 Web 应用成为可能的必要步骤。键盘不仅是许多用户的主要输入设备, 其他可访问输入设备也使用键盘事件与用户代理通信。

可缩放矢量图形(SVG)1 [SVG1] 和 1.1 [SVG11] 规范 仅包含非常有限的键盘支持(动画的访问键)。许多用户代理实现了 针对链接的 Tab 焦点,但没有声明式或脚本化的方式让作者控制此行为。 可缩放矢量图形(SVG)2 [SVG2] 引入了基于 HTML tabindex 模型的键盘导航和焦点控制。

符合要求的用户代理 MUST 符合 核心可访问性 API 映射 [CORE-AAM] 中的 支持键盘 导航 要求。

SVG 可访问性任务组打算 为作者和用户代理制定关于图形文档中导航的更详细指南。

4. WAI-ARIA 映射到可访问性 API

WAI-ARIA 支持已在可缩放矢量图形(SVG)2 [SVG2] 中正式引入到 SVG,该版本允许 ARIA 属性在默认命名空间中使用。本节定义了如何通过平台可访问性 APIWAI-ARIA 语义暴露给辅助 技术,以及如何基于 WAI-ARIASVG 元素映射到可访问性 API

4.1 暴露 WAI-ARIA 语义的一般规则

SVG 用户代理 MUST 符合核心 可访问性 API 映射 [CORE-AAM] 中的暴露 WAI-ARIA 语义的一般规则,并包含以下小节中描述的补充内容。

4.1.1 从可访问性树中排除元素

DOM 中的某些元素不会通过 可访问性 API 暴露。核心可访问性 API 映射 [CORE-AAM] 的从可访问性树中排除 元素一节概述了排除元素的一般规则。 其中一个因素是宿主语言语义是否规定该元素不应 显示。

SVG 语言定义了许多符合 此条件的元素。许多 SVG 元素从不直接 渲染到屏幕,而另一些元素是否被渲染或显示, 取决于上下文或 CSS 样式。既不可感知也不可交互的元素 不应包含在暴露给可访问性 API 的可访问性树中。本节详述了对 SVG 宿主语言语义的预期 解释。

核心可访问性 API 映射中描述的、用于排除元素的其他因素可概括 如下:

  • 如果作者提供的第一个可映射角色是 nonepresentation, 则不得暴露该元素。
  • 如果该元素或其某个祖先具有值为 truearia-hidden ,则不应暴露它。
  • 如果该元素的祖先具有一个使用角色,而该角色在 WAI-ARIA 规范 [WAI-ARIA] 中具有“子级 为表现性:True”这一特征, 则不应暴露该子元素。例如,角色 buttonimg 会排除所有子内容,避免其被直接纳入可访问性树。

但请注意,元素的若干特性(例如交互性)可能导致 作者提供或继承的 nonepresentation 角色 因错误而被忽略。 如果某个元素当前可基于用户交互接收焦点,则不会将其排除。

请查阅原始文档 ([CORE-AAM])以获取规范性 文本。

从不直接渲染到屏幕,也不由图形中的交互区域表示的元素, 不需要对应的可访问对象。用户代理 MUST NOTSVG 元素映射 表中标明为 no accessible object created 的任何元素或其 后代内容作为可访问 对象包含在 可访问性树中。用户代理 SHOULD 还应 排除过去或未来 SVG 规范或模块定义的、明确指出该元素从不直接 渲染的任何其他元素。

例如,表示滤镜、渐变或渐变停止点的元素永远不会创建 可访问对象。包含在 SVG 定义 节中或作为图案一部分的形状元素或图像元素也不会有可访问对象,因为祖先 defspattern 元素的语义排除了整个 DOM 子树在可访问性 树中的表示。

可访问性 树中排除的元素,仍可能用于另一个元素的名称和描述计算, 如名称和描述一节中所定义。非渲染 元素也可用作由 use 元素创建的渲染元素实例的模板,如Use 元素影子树一节所述。

虽然动画元素和视图元素不会直接包含在可访问性树中, 但它们可能影响表示其目标元素的可访问对象,如 需要额外计算的特殊处理中所述。

此外,SVG 1.1 [SVG11] 定义了 条件处理属性 systemLanguagerequiredExtensionsrequiredFeatures。 这些属性可单独使用,也可与 switch 元素组合使用, 以在特定条件下阻止内容被渲染,或在内容的替代 版本之间进行选择。

SVG 用户代理 MUST NOT 向可访问性 API 暴露任何因该元素上的条件处理属性 或因该元素在 switch 构造中的位置 而未被渲染的元素。switch 元素本身 SHOULD 应像具有 nonepresentation 角色一样被省略。

SVG 元素的渲染也受 CSS 样式属性影响,这些属性可通过 样式表规则、内联样式、表现属性或动画指定。无论 样式属性如何指定,其效果都取决于 CSS 级联所确定的最终计算值 [CSS-CASCADE-3]。用户代理 MUST NOT 向可访问性 API 暴露任何因其计算样式中 display 属性值为 none 而未被渲染的元素。

其他样式属性可能阻止一个原本属于渲染树的元素 在渲染图形中创建任何可见表示。此类元素仍可能是 交互式的;它们可能接收键盘焦点,或可能与图形中响应指针输入事件的区域 关联。

SVG 而言,如果一个元素根据 visibility 属性的计算值既不可见,又根据 pointer-events 属性对指针用户不可交互,则认为它是隐藏的。用户代理 SHOULD NOT 向可访问性 API 暴露在此意义上隐藏的任何元素, 除非作者通过将 aria-hidden 属性设置为 false 来显式覆盖该隐藏。

对于容器元素(例如 gsvg),如果其后代内容中任何部分可见可 接收用户事件,则不认为该元素是隐藏的,而不管该元素自身的 visibility 计算值如何。 类似地,use 元素可能包含可见或交互式组件 图形,即使其样式属性会使单个形状元素被隐藏。 如果其影子树中的任何元素 可见或可交互,则 use 元素 MUST 被视为可见或可交互。(不过,如果容器或 use 元素 没有其他理由将其包含在可访问性树中,它仍可能被视为表现性的。) 带有 marker 的形状元素,如果其任何 marker 可见或可交互,则它是可见或可交互的。

在 HTML 和其他使用 CSS 样式的文档中, 使用 visibility: hidden 使其不可见的元素,对于可访问性目的而言始终是隐藏元素, 等同于未渲染的 元素(例如具有 display: none 的元素)。

对于 SVG,由于它与 pointer-events 属性的交互, 这并不总是合适。

在许多情况下,不可见元素具有语义重要性(因为它们是 交互式的),而可见元素只是表现性的。例如,大型不可见 元素通常用于为地图或数据图表中的点提供易于命中的目标。由于这些 元素会响应指针事件,因此它们实际上可被指针用户感知,并且也应 可被辅助技术用户感知和交互。

对于以下 pointer-events 属性值,具有 visibility: hidden 计算值的 SVG 元素 可以对指针用户交互:

  • painted,适用于任何渲染元素,但不包括形状或文本中 fillstroke 属性的计算值均为 none 的情况
  • fill
  • stroke
  • all
  • bounding-box

当前位于屏幕外,或被其他元素遮挡的元素,不被视为 隐藏。用户代理应通过其他方式暴露此状态,如核心可访问性 API 映射 [CORE-AAM] 的状态和属性 映射 一节中所述。

其他各种样式属性和几何属性(属于元素本身或其祖先 元素)可能使元素不可见。出于简化、灵活性和性能 原因,这些属性不被视为一种会从可访问性树中排除元素的隐藏方法。

当使用 displayvisibility 以外的属性来隐藏 非活动内容时,作者可以使用 aria-hidden 属性指示辅助技术应忽略该元素及其 后代。

编辑注

本规范的早期草案也曾将 fillstroke 属性在二者均设置为 none 值时,视为隐藏元素的一种有效方式。由于这引入了过度 复杂性,现已将其移除。某些 SVG 元素(例如嵌入式 图像)不受 stroke 和 fill 影响;即使是受其影响的元素,也可能在没有它们的情况下可见, 因为存在 marker 或滤镜效果。 此外,它可能导致外观相同的图形(例如:一个使用 fill: transparent 而不是 fill: none 的图形)具有明显不同的 可访问性树。

不过请注意,fillstroke 属性仍可能 根据 pointer-events 属性的值,对元素的纳入产生 间接影响。

议题 6:结构化 描述是否应暴露在可访问性树中? 需要 ARIA WG 输入需要实现者输入

将非渲染元数据元素(包括 desc)严格排除在 可访问性树之外,意味着其内容将只能作为纯文本可用,而不能作为 用户可在浏览模式中导航的结构化替代表示。

这与 SVG 规范的原始意图相矛盾,该规范允许这些元素 包含结构化内容,包括 HTML 命名空间内容。SVG 1 规范曾 建议这些内容也可以作为 CSS 格式化的 XML 文本替代呈现,但目前使用中的 用户代理/辅助技术组合并不支持这一点。

编辑欢迎就如何以与用户代理和可访问性 API 实现一致的方式表示这种隐藏的替代内容,提供反馈和建议 (见 GitHub Issue #6)。

4.1.2 将元素纳入可访问性树

许多 SVG 元素虽然会渲染到屏幕上,却 没有内在的语义含义。相反,它们表示文档视觉 呈现的组成部分。为 简化文档的可访问表示,这些纯表现性元素通常 应从可访问性树中省略,除非作者显式提供 语义内容。

但是,任何渲染的 SVG 元素都可能具有语义 含义。作者通过包含替代文本内容或 WAI-ARIA 属性来指示该元素的重要性。本节定义了 将通常被省略的元素纳入可访问性树的规则。

SVG 命名空间中的以下图形元素和容器元素 SHOULD NOT 被纳入 可访问性树,除非本节另有说明:

  • 形状元素(circleellipselinepathpolygonpolylinerect
  • use 元素
  • 分组(g)元素
  • image 元素
  • mesh 元素
  • 文本格式化元素(textPathtspan
  • foreignObject 元素

虽然这些元素会从可访问性树中省略,但其子内容 仍会被处理,如同它是 DOM 树中最近的、已包含在可访问性树中的祖先节点的直接子节点一样。 换言之,这些标记元素会被视为 具有 nonepresentation 角色。

对于 use 元素,其关联影子树中的元素和文本 MUST 按照需要额外计算的处理 中指定的条件,被处理为 use 元素的子内容。 这意味着影子树中的元素可以被纳入可访问性树, 即使 use 元素本身具有(默认或作者提供的) presentation 角色。

SVG 用户代理 MUST 为满足以下任一条件的渲染 SVG 元素 在可访问性树中提供可访问对象, 除非它们依据从可访问性树中排除元素中的规则被排除在可访问性树之外:

  • 它至少有一个直接子 title 元素或 desc' 元素,且在修剪空白后不为空。用户代理 MAY 在不检查有效文本内容的情况下,纳入具有这些子元素的元素。
  • 它具有非空(修剪空白后) aria-label 属性或 aria-roledescription 属性。
  • 它具有 aria-labelledby 属性或 aria-describedby 属性,且包含有效的 IDREF 标记。用户代理 MAY 在不检查有效性的情况下纳入 具有这些属性的元素。
  • 它具有有效整数 'tabindex' 属性。
  • 作者提供了一个允许的、非抽象的 WAI-ARIA 角色,且该角色不是 nonepresentation
  • 它满足核心可访问性 API 映射 规范 [CORE-AAM] 的将元素纳入可访问性树 一节中列出的任一条件。

在起草本文档时,这些条件如下:

应查阅源文档 [CORE-AAM] 的最新版本 以获取规范性文本。

对隐藏元素的例外意味着 SVG 元数据元素或其他非渲染 内容可用于另一个元素的可访问名称和描述,而其自身 不会被纳入可访问性树。例如,当前用于后备 浏览器支持的最佳实践,是使用 aria-labelledbyaria-describedby 冗余地链接到 titledesc 子元素。将这些元素作为 单独节点纳入树中,会不必要地复杂化呈现给屏幕阅读器 用户的文档。

交互式元素由关于可能触发可访问性 API 事件的元素的要求所涵盖。 具体而言,对于 SVG,以下元素是交互式的,并且 MUST 被纳入可访问性树,不设例外,无论它们在其他情况下是否会被视为 隐藏或表现性:

  • 一个渲染元素 (或 use 元素影子树中的元素实例),其 tabindex 属性具有正整数值, 或者默认可聚焦且未通过负整数 tabindex 属性 从 Tab 顺序中移除,它可能接收键盘焦点并 因而接收键盘输入事件。
  • 一个渲染元素 (或元素实例),当前具有键盘 焦点 (例如,被脚本聚焦后),它可能接收键盘输入事件。

关于会沿 DOM 树冒泡的指针事件,接收事件的确切元素可能没有语义含义(也就是说,它仍可能 是表现性的)。但是, 接收指针事件的能力会覆盖任何基于 visibility: hidden 样式属性的排除。

tabindex 属性和 pointer-events 属性对因 display: none 属性或宿主语言语义而根本未被渲染的元素没有影响。

4.2 原生标记语义与 WAI-ARIA 之间的冲突

在宿主语言为 SVG,且原生语义如 SVG 元素映射 表状态和属性映射一节以及需要额外计算的特殊处理一节所述的情况下, SVG 用户代理 MUST 符合核心可访问性 API 映射 [CORE-AAM] 中的 原生标记语义与 WAI-ARIA 之间的冲突

对于根据SVG 元素映射 表定义不会创建可访问对象且不得应用任何角色的元素,它们没有隐式角色 语义aria-roledescription 属性 MUST NOT 暴露在这些元素上。所有其他 SVG 元素在与全局 WAI-ARIA 属性一起使用时, 都具有隐式角色语义,包括 aria-roledescription

4.3 暴露未直接映射到可访问性 API 属性的属性

SVG 用户代理 MUST 符合 核心可访问性 API 映射 [CORE-AAM] 中的 暴露 未直接映射到可访问性 API 属性的属性

5. 角色映射

平台可访问性 API传统上具有一组有限的 预定义 角色,这些角色是该平台上的辅助 技术 所期望的,并且可能只暴露一个或两个角色。

WAI-ARIA 一次仅支持一个活动角色。不过,可以将多个角色指定为一组有序的、 以空格分隔的有效角色标记。附加角色是后备角色,类似于 在首选字体不受支持时指定多个字体族的概念。这允许 角色分类法在未来为专门应用进行扩展。只要可能,整个 角色字符串都会暴露给可访问性技术,使其即使在平台 API 中没有等效角色时,也能作出适当响应。

5.1 一般规则

SVG 用户代理 MUST 必须符合核心可访问性 API 映射 [CORE-AAM] 中角色映射一般规则的可访问性 API 计算要求。

5.2 SVG 元素映射表

本节定义了 SVG2 中的元素如何基于其原生宿主语言 语义,映射到 WAI-ARIA 角色和平台可访问性 API,包括可以应用哪些 WAI-ARIA 角色。 本节直接引用核心可访问性 API 映射 [CORE-AAM] 规范中的 角色映射 ,以及图形可访问性 API 映射 [GRAPHICS-AAM] 规范中的 角色映射,这些规范定义了 如何将 WAI-ARIA 角色映射到平台 可访问性 API

5.2.1 a

SVG 规范 a
默认平台 WAI-ARIA 角色映射 如果该元素具有有效的 hrefxlink:href 属性,则为 link 角色。 对于 不是链接的 a 元素,如果 a 元素 是 text 的后代,则使用 tspan 的映射,否则使用 g 的映射。
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.2 animate

SVG 规范 animate
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.3 animateMotion

SVG 规范 animateMotion
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.4 animateTransform

SVG 规范 animateTransform
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.5 audio

SVG 规范 audio
默认平台 WAI-ARIA 角色映射 遵循 HTML 可访问性 API 映射规范 [HTML-AAM] 中HTML audio 元素的建议。
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 application 角色

5.2.6 canvas

SVG 规范 canvas
默认平台 WAI-ARIA 角色映射 遵循 HTML 可访问性 API 映射规范 [HTML-AAM] 中HTML canvas 元素的建议。
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.7 circle

SVG 规范 circle
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-symbol 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.8 clipPath

SVG 规范 clipPath
默认平台 WAI-ARIA 角色映射 未为此元素或任何子内容创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.9 defs

SVG 规范 defs
默认平台 WAI-ARIA 角色映射 未为此元素或任何子内容创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.10 desc

SVG 规范 desc
默认平台 WAI-ARIA 角色映射 未为此元素或任何子内容创建可访问对象;参见 名称和描述映射
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.11 ellipse

SVG 规范 ellipse
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-symbol 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.12 feBlend

SVG 规范 feBlend
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.13 feColorMatrix

SVG 规范 feColorMatrix
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.14 feComponentTransfer

SVG 规范 feComponentTransfer
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.15 feComposite

SVG 规范 feComposite
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.16 feConvolveMatrix

SVG 规范 feConvolveMatrix
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.17 feDiffuseLighting

SVG 规范 feDiffuseLighting
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.18 feDisplacementMap

SVG 规范 feDisplacementMap
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.19 feDistantLight

SVG 规范 feDistantLight
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.20 feDropShadow

SVG 规范 feDropShadow
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.21 feFlood

SVG 规范 feFlood
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.22 feFuncA

SVG 规范 feFuncA
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.23 feFuncB

SVG 规范 feFuncB
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.24 feFuncG

SVG 规范 feFuncG
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.25 feFuncR

SVG 规范 feFuncR
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.26 feGaussianBlur

SVG 规范 feGaussianBlur
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.27 feImage

SVG 规范 feImage
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.28 feMerge

SVG 规范 feMerge
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.29 feMergeNode

SVG 规范 feMergeNode
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.30 feMorphology

SVG 规范 feMorphology
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.31 feOffset

SVG 规范 feOffset
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.32 fePointLight

SVG 规范 fePointLight
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.33 feSpecularLighting

SVG 规范 feSpecularLighting
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.34 feSpotLight

SVG 规范 feSpotLight
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.35 feTile

SVG 规范 feTile
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.36 feTurbulence

SVG 规范 feTurbulence
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.37 filter

SVG 规范 filter
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.38 foreignObject

SVG 规范 foreignObject
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 group 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.39 g

SVG 规范 g
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 group 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.40 iframe

SVG 规范 iframe
默认平台 WAI-ARIA 角色映射 遵循 HTML 可访问性 API 映射规范 [HTML-AAM] 中HTML iframe 元素的建议。
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 applicationdocumentimg

5.2.41 image

SVG 规范 image
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 img 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.42 line

SVG 规范 line
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-symbol 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.43 linearGradient

SVG 规范 linearGradient
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.44 marker

SVG 规范 marker
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.45 mask

SVG 规范 mask
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.46 metadata

SVG 规范 metadata
默认平台 WAI-ARIA 角色映射 未为此元素或任何子内容创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.47 mpath

SVG 规范 mpath
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.48 path

SVG 规范 path
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-symbol 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.49 pattern

SVG 规范 pattern
默认平台 WAI-ARIA 角色映射 未为此元素或任何子内容创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.50 polygon

SVG 规范 polygon
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-symbol 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.51 polyline

SVG 规范 polyline
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-symbol 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.52 radialGradient

SVG 规范 radialGradient
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.53 rect

SVG 规范 rect
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-symbol 角色映射;否则, 不创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.54 script

SVG 规范 script
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.55 set

SVG 规范 set
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.56 source

SVG 规范 source
默认平台 WAI-ARIA 角色映射 遵循 HTML 可访问性 API 映射规范 [HTML-AAM] 中HTML source 元素的建议。
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.57 stop

SVG 规范 stop
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.58 style

SVG 规范 style
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.59 svg

SVG 规范 svg
默认平台 WAI-ARIA 角色映射 graphics-document
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.60 switch

SVG 规范 switch
默认平台 WAI-ARIA 角色映射 未创建可访问对象
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.61 symbol

SVG 规范 symbol
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-object 角色映射;否则, 不创建可访问对象

symbol 元素不会被直接渲染,因此不会 直接暴露在可访问性树中。不过,该元素的角色(默认角色或 作者提供的角色) 将用于 use 元素影子树中 symbol 的渲染实例。 根据作者在何处提供名称、描述、角色或交互性, symbol 元素或 use 元素,或二者, 都可能具有关联的 可访问对象。

允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.62 text

SVG 规范 text
默认平台 WAI-ARIA 角色映射 group 角色,但具有以下 平台专用 API 映射:
MSAA + IAccessible2
角色: IA2_ROLE_PARAGRAPH
接口: IAccessibleText2; IAccessibleHypertext2
UIA
控件类型: Text
ATK
角色: ATK_ROLE_SECTION
接口: AtkText; AtkHypertext
AX
AXRole: AXGroup
AXSubrole: (nil)
AXRoleDescription: "group"

上述平台映射类似于 HTML 可访问性 API 映射规范 [HTML-AAM] 中为HTML p 元素推荐的映射。目前没有可用的 WAI-ARIA 角色 能够定义不同的文本块。不过,此类角色(表示 段落或不同文本区域)存在于许多平台可访问性 API 中,因此 使用它们,而不是使用通用的 group 角色。

允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.63 textPath

SVG 规范 textPath
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 group 角色映射;否则, 不创建可访问对象 ,但文本样式的变化在受支持时 SHOULD 通过父文本元素的属性暴露
议题

textPathtspan 的角色映射是 一个开放议题

允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.64 title

SVG 规范 title
默认平台 WAI-ARIA 角色映射 未创建可访问对象 ;参见名称和描述映射
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.65 track

SVG 规范 track
默认平台 WAI-ARIA 角色映射 遵循 HTML 可访问性 API 映射规范 [HTML-AAM] 中HTML track 元素的建议。
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色

5.2.66 tspan

SVG 规范 tspan
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 group 角色映射;否则, 不创建可访问对象 ,但文本样式的变化在受支持时 SHOULD 通过父文本元素的属性暴露
议题

textPathtspan 的角色映射是 一个开放议题

允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.67 use

SVG 规范 use
默认平台 WAI-ARIA 角色映射 如果该元素满足 将元素纳入可访问性树的条件,则为 graphics-object 角色映射;否则, 不创建可访问对象

注意,即使宿主元素没有被纳入,use 元素影子 树中的重用图形仍可能被纳入可访问性树。

编辑注

本规范此前的草案并不要求直接暴露重用的 图形元素;use 元素曾被 视为原子对象。这 与重用图形中可能包含交互式内容或文本的情况不一致。

随着改为直接暴露重用图形,针对 use 元素 可访问名称和描述的特殊规则 已不再需要。

允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 任何角色;参见 核心可访问性 API 角色映射图形可访问性 API 角色映射

5.2.68 video

SVG 规范 video
默认平台 WAI-ARIA 角色映射 遵循 HTML 可访问性 API 映射规范 [HTML-AAM] 中HTML video 元素的建议。
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 application 角色

5.2.69 view

SVG 规范 view
默认平台 WAI-ARIA 角色映射 未创建可访问对象 ;特殊处理要求见 SVG 视图一节
允许的 WAI-ARIA 角色和 平台 WAI-ARIA 角色 映射 不得应用任何角色
议题 2:textPath 和 tspan 需要平台专用 映射 需要实现者输入

textPathtspan 使用 group 角色,是将其作为一段文本内容的通用容器,该文本内容形成一个不同对象 (可能是因为它具有补充的替代文本标签或描述,或因为它 是 交互式的)。ARIA 1.1 没有用于非交互式文本片段的任何角色。

还需要开展更多工作,以解决文本专用的平台可访问性 API 角色是否能够更有效地服务于 此功能。特别是对于 ATK, ATK_ROLE_STATIC 角色可能比 group 的通常映射 更合适。

欢迎在 GitHub Issue #2 中提出改进映射的建议)

6. 状态和属性映射

本节描述如何暴露 WAI-ARIA 状态属性SVG 用户代理 MUST 符合核心可访问性 API 映射 [CORE-AAM] 中 状态和属性 映射的可访问性 API 计算 要求。

此外,SVG 元素上的以下属性需要 特殊处理:

此处使用 xlink 前缀来指代 XLink 命名空间 http://www.w3.org/1999/xlink。给定名称在该命名空间中的属性, 应按照此处的描述进行处理,而不管该命名空间在标记中或通过脚本是如何应用的。 XLink 命名空间属性已在 SVG 2 [SVG2] 中废弃, 但仍期望用户代理处理 它们,以维持向后兼容。尽管如此,SVG 2 要求,如果在给定元素上二者均已设置, 默认命名空间中的 href 属性优先于 XLink 等效属性。在这种情况下,XLink 版本对于名称和描述计算而言无效。

给定元素的有效属性,以及由此产生的状态和属性映射,可能会受到 声明式动画的影响,如 动画一节所述。

7. 需要额外计算的特殊 处理

7.1 名称和描述

在计算可访问名称可访问描述时,用户代理 MUST 符合可访问名称和描述规范 [ACCNAME-AAM] 中标题为 文本替代 计算一节的要求,并针对 SVG 宿主语言作出以下 修改:

  1. 隐藏且未被引用: 替换为以下内容:
    如果当前节点遍历不是由跟随 aria-labelledbyaria-describedby 引用而产生,并且当前节点 根据 从可访问性树中排除元素将元素纳入可访问性树中的规则未被纳入 可访问性树,则返回空字符串。
  2. 步骤 2D 替换为 以下内容:

    否则,如果正在为可访问名称执行文本替代计算:

    • 如果当前节点至少有一个直接子 title 元素,则根据 SVG 规范的语言规则选择 适当的 title,并将 title 文本替代作为扁平字符串返回。
    • 如果当前节点是链接,并且没有子 title 元素,但它具有 xlink:title 属性,则返回该属性的值。

    如果正在为可访问描述执行文本替代计算:

    • 如果当前节点至少有一个直接子 desc 元素,则根据 SVG 规范的语言规则选择 适当的描述,并返回该描述的拼接文本内容。
  3. 步骤 2F 中,通过将 步骤 iii 中的:

    对于当前节点的每个子节点:

    替换为:

    如果该元素是文本容器元素,则对于当前节点的每个子节点:

    来修改该步骤
  4. 步骤 2H 替换为 以下内容:

    否则,如果正在为可访问描述执行文本替代计算,并且 当前节点至少有一个直接子 title 元素,但在为该节点生成 可访问名称时使用 title 元素,则根据 SVG 规范的语言规则选择适当的 title,并返回 title 文本内容作为描述。

    否则,如果当前节点是链接,并且它具有未用于可访问名称的 xlink:title 属性,则返回该属性的值。

在确定某个元素是否具有直接子元素时,只考虑实际的 DOM 子元素,而不管父元素是否具有关联的 影子树。

这些变更的净效果,是为可访问名称建立以下替代文本值优先级:

  1. aria-labelledby
  2. aria-label
  3. 直接子 title 元素
  4. 链接上的 xlink:title 属性
  5. 对于文本容器元素,文本内容

可访问描述的替代文本值具有以下优先级:

  1. aria-describedby
  2. 直接子 desc 元素
  3. 对于文本容器元素,文本内容
  4. 当使用 ARIA 标签属性提供可访问名称时,提供工具提示的直接子 title 元素
  5. 链接上的 xlink:title 属性,如果未用于提供可访问名称

aria-labelledbyaria-describedby 属性可以引用 其所在的元素,以便将其他某个文本替代与来自单独元素的文本 拼接起来。

7.2 控件值

SVG 用户代理 MUST 符合 核心可访问性 API 映射 [CORE-AAM] 中 控件值 的可访问性 API 计算要求。

7.3 关系

SVG 用户代理 MUST 符合 核心可访问性 API 映射 [CORE-AAM] 中 关系 的可访问性 API 计算要求。

议题

CORE-AAM 中关于关系的章节要求,辅助技术 SHOULD 提供一种方法,用于导航到由 aria-describedby 引用的结构化内容(以及在其中导航)。 这与当前不将非渲染描述性内容纳入 可访问性树的方法相冲突。

参见该 规范的议题讨论,以及 关于暴露 SVG desc 内容的相关议题

7.4 组位置

SVG 用户代理 MUST 符合 核心可访问性 API 映射 [CORE-AAM] 中 组 位置 的可访问性 API 计算要求。

7.5 Use 元素影子树

本规范使用 影子树宿主 这两个由 DOM 标准 [DOM] 定义的术语,以及 use 元素影子树元素实例 这两个由 SVG 2 [SVG2] 定义的术语。

SVG 用户代理 MUST 处理为 use 元素影子树生成的元素实例,就像这些元素是 use 元素自身的子元素一样,并满足以下 条件:

议题 7:协调 use 元素 行为与其他 shadow DOM 行为 需要 ARIA WG 输入需要实现者输入

编辑将努力使这些指南与对影子树 元素进行 WAI-ARIA 处理的一般规则保持一致,例如 Web 组件中的规则。 希望实现者就以这种方式封装 IDREF 匹配的实际可行性 提供反馈。

关于 shadow DOM 和 ARIA 的一般反馈应在 Core-AAM 议题中讨论。SVG 专有的反馈可提交到本规范的 Issue #7

7.6 SVG 视图

SVG 为作者提供了指定文档某个特定 视图的方法。视图通过文档 URL 的目标片段应用,可以是引用 view 元素的 id,也可以是 使用 SVG 视图规范片段标识符 指定自定义视图。

SVG 视图的视觉效果等同于修改父 svg 元素(对于 view 元素)或根元素(对于 SVG 视图 规范片段)上的属性。因此,用户代理 SHOULD 在视图生效时修改表示该 svg可访问对象

具体而言,应作出以下变更:

指向包含 SVG 视图 规范或 view 元素 id 的 URL 的导航动作 SHOULD 被视为目标 svg 元素上的一系列属性变更 事件,随后导航到该元素。用户代理 MAY 将属性变更表示为删除现有 节点后再插入已修改节点。

议题 8:向可访问性 API 暴露 SVG 视图 行为和 viewTarget 需要实现者输入

SVG 视图提供了 SVG 独有的功能,在 HTML 文档中没有直接等价物。 它们可用作导航动作的终点,但其自身并不是目标内容的容器。 它们也可在嵌入 SVG 文档时使用,以便将视觉 内容裁剪为仅包含文件的一部分。

编辑非常希望看到 SVG 视图实际使用的示例,以便我们确定上述 要求是否足够。需要特别考虑的问题包括: 是否需要用于管理键盘焦点的特殊规则,或者是否需要在视图生效时排除渲染到屏幕外的内容。

此外,viewTarget 属性,以及 SVG 视图片段的对应参数,已在 SVG 2 中废弃。它们的预期用途是触发目标元素中的视觉样式 变化,但用户代理从未很好地实现这一点。没有 viewTarget 时,SVG 中将没有原生方式来指示 给定视图的语义目标。对于 view 元素(但不包括视图片段),一个可能的替代方案是 鼓励作者直接指定 aria-flowsto 属性。随后这些属性 需要映射到相关的 svg 元素。

这引出了一个问题:在视图生效期间,是否还应将任何其他(或全部)ARIA 属性 从 view 元素映射到 svg 元素的可访问对象上。 这需要仔细考虑所有可能的后果和 冲突。例如,视图是否应该能够改变 SVG 元素的角色?

aria-flowsto 属性在辅助工具中支持并不好;曾有提案建议在未来版本中将其废弃。 用户代理是否还有其他方式可以暴露已变更的视图,使辅助技术用户能够快速理解 图形的哪些部分是可见的?

关于这些问题的反馈可在 issue #8 中提供。

7.7 声明式动画

SVG 动画元素可以修改元素属性和 样式属性。CSS 动画可以修改样式 属性。这两种动画都可以由用户交互触发,或 按固定计划运行。

如果动画改变了 WAI-ARIA 状态或属性特性的有效值,或改变了 状态和属性映射一节中描述的 SVG 属性,则用户代理 MUST 以与实际属性值被 更改时相同的方式暴露该变更。

role 属性不可动画化。

如果动画变更影响某个元素是否被渲染,或以会导致其从可访问性树中排除的方式 改变其可见性,则用户代理 SHOULD 按照核心可访问性 API 映射 [CORE-AAM] 中 文档内容或节点可见性 的变更一节的指南暴露该变更。

8. 动作

SVG 用户代理 MUST 符合 核心可访问性 API 映射 [CORE-AAM] 中 动作 的可访问性 API 计算要求。

9. 事件

用户代理会为用户动作、 WAI-ARIA 状态变更、文档内容或节点可见性的变更、选择变更以及菜单操作触发事件。符合要求的用户代理 MUST 支持 [CORE-AAM] 的事件映射。

10. 特殊文档处理 过程

SVG 用户代理 MUST 符合 核心可访问性 API 映射 [CORE-AAM] 中的 特殊文档 处理过程

11. 安全和隐私 考虑

相对于分别实现 SVG([SVG2])和 WAI-ARIA ([WAI-ARIA])而言, 实现本规范预计不会为 Web 平台增加任何新的安全或隐私考虑。

编辑注

如果你认为本规范造成了潜在的新安全或隐私风险,请在本规范的 GitHub 仓库中 提出议题

A. 附录

A.1 致谢

本节为非规范性内容。

除列明的作者和编辑外,SVG 可访问性任务组的参与者也为本文档的开发作出了贡献。 也感谢 Joanmarie Diggs 以及其他实现者,他们对草案提供了反馈并协助测试。

A.1.1 发布时的 ARIA WG 参与者

  • Rahim Abdi (Apple Inc.)
  • NAVYA AGARWAL (Adobe)
  • Joey Arhar (Google LLC)
  • Benjamin Beaudry (Microsoft Corporation)
  • Curt Bellew (Oracle Corporation)
  • Zoë Bijl (W3C Invited Experts)
  • Gautier Chomel (EDRLab)
  • Aleksandar Cindrikj (Netcetera)
  • Keith Cirkel (Mozilla Foundation)
  • Daniel Clark (Microsoft Corporation)
  • Sydney Coleman (Google LLC)
  • James Craig (Apple Inc.)
  • Chris Cuellar (Bocoup)
  • Diego Della Rossa (UsableNet)
  • Joanmarie Diggs (Igalia)
  • Tamsin Ewing (W3C)
  • Mayuri Faldu (Navy Federal Credit Union)
  • Betsy Fanning (PDF Association)
  • Steve Faulkner (TetraLogical Services Ltd)
  • Patrick Foster (axes4 GmbH)
  • Jane Fulton (Cisco)
  • Bryan Garaventa (W3C Invited Experts)
  • Matt Garrish (DAISY Consortium)
  • Doug Geoffray (Microsoft Corporation)
  • Ariella Gilmore (IBM Corporation)
  • Taylore Givens (Microsoft Corporation)
  • David Grogan (Google LLC)
  • Shirisha Gubba (Google LLC)
  • Jon Gunderson (University of Illinois)
  • Oliver Habersetzer (SAP SE)
  • Sunny Hardasani (Adobe)
  • Matthew Hardy (Adobe)
  • Chris Harrelson (Google LLC)
  • Sarah Higley (Microsoft Corporation)
  • Hans Hillen (TPGi)
  • Isabel Holdsworth (TPGi)
  • Stanley Hon (Microsoft Corporation)
  • Michael Jackson (Microsoft Corporation)
  • Jilin Jiang (Ant Group Co., Ltd.)
  • Duff Johnson (PDF Association)
  • Summer Jones (Thomson Reuters Corp.)
  • Yuki Kamahori (Cybozu)
  • William Kilian (Kilian Codes LLC)
  • Matthew King (Meta)
  • Zachary Kinsey (TargetStream Technologies)
  • Daisuke Kobayashi (Cybozu)
  • Peter Krautzberger (krautzource UG)
  • Nina Krauß (SAP SE)
  • JaEun Jemma Ku (University of Illinois)
  • Joe Lamyman (TetraLogical Services Ltd)
  • Christopher Land (Oracle Corporation)
  • Charles LaPierre (Benetech)
  • Patrick Lauke (TetraLogical Services Ltd)
  • Philip Lazarevic (Level Access)
  • Leo Lee (Microsoft Corporation)
  • Brett Lewis (TPGi)
  • Alison Maher (Microsoft Corporation)
  • Gurpreet Kaur Mangera (Rakuten Group, Inc.)
  • Mark McCarthy (University of Illinois)
  • Eduardo Meza Etienne (Navy Federal Credit Union)
  • Clay Miller (Microsoft Corporation)
  • Hirotaka Minamida (Cybozu)
  • Daniel Montalvo (W3C)
  • Baldino Morelli (UsableNet)
  • Jacques Newman (Microsoft Corporation)
  • James Nurthen (Evinced Inc.)
  • Scott O'Hara (Microsoft Corporation)
  • Lola Odelola (W3C Invited Experts)
  • Neil Osman (Evinced Inc.)
  • Yusuke Oyama (Cybozu)
  • Adam Page (Hilton)
  • Michael Pennisi (Bocoup)
  • Giacomo Petri (UsableNet)
  • Noah Praskins (TPGi)
  • Lucas Radaelli (Google LLC)
  • Paul Rayius (PDFix-US)
  • Mark Rogers (Powermapper Software)
  • Priti Rohra (BarrierBreak Solutions Private Limited)
  • Adrian Roselli (W3C Invited Experts)
  • Marco Sabidussi (UsableNet)
  • Trisha Salas (Level Access)
  • Stefan Schnabel (SAP SE)
  • Harris Schneiderman (Deque Systems, Inc.)
  • Raymond Schwartz (Navy Federal Credit Union)
  • Davis Shaver (The Washington Post)
  • Cynthia Shelly (W3C Invited Experts)
  • Tzviya Siegman (W3C)
  • Avneesh Singh (DAISY Consortium)
  • Michael[tm] Smith (sideshowbarker) (W3C)
  • Francis Storr (Intel Corporation)
  • Nobukiyo Sugisaki (Cybozu)
  • Melanie Sumner (IBM Corporation)
  • Alexander Surkov (Igalia)
  • James Teh (Mozilla Foundation)
  • Roman Toda (Foxit software)
  • David Tseng (Google LLC)
  • Cybozu W3C (Cybozu)
  • Jan Williams (TPGi)
  • Peter Wyatt (PDF Association)
  • Valerie Young (Igalia)

A.1.2 SVG 可访问性 任务组的过往参与者

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

A.1.3 支持资金方

本出版物的部分资金来自美国教育部、国家残障、独立生活与康复研究所(NIDILRR)的美国联邦资金, 最初合同号为 ED-OSE-10-C-0067,随后合同号为 HHSP23301500054C, 现在合同号为 HHS75P00120P00168。本出版物的内容不一定反映美国教育部的观点 或政策,提及商品名、商业 产品或组织也不意味着美国政府的认可。

A.2 议题摘要

B. 参考文献

B.1 规范性参考文献

[ACCNAME-AAM]
可访问名称和描述计算 1.1. Joanmarie Diggs; Bryan Garaventa; Michael Cooper. W3C. 18 December 2018. W3C Recommendation. URL: https://www.w3.org/TR/accname-1.1/
[CORE-AAM]
核心可访问性 API 映射 1.1. Joanmarie Diggs; Joseph Scheuhammer; Richard Schwerdtfeger; Michael Cooper; Andi Snow-Weaver; Aaron Leventhal. W3C. 14 December 2017. W3C Recommendation. URL: https://www.w3.org/TR/core-aam-1.1/
[CSS-CASCADE-3]
CSS 层叠与继承 Level 3. Elika Etemad; Tab Atkins Jr. W3C. 11 February 2021. W3C Recommendation. URL: https://www.w3.org/TR/css-cascade-3/
[DOM]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[GRAPHICS-AAM]
图形可访问性 API 映射. Amelia Bellamy-Royds; Joanmarie Diggs; Michael Cooper. W3C. 2 October 2018. W3C Recommendation. URL: https://www.w3.org/TR/graphics-aam-1.0/
[HTML-AAM]
HTML 可访问性 API 映射 1.0. Scott O'Hara; Rahim Abdi. W3C. 24 April 2026. W3C Working Draft. URL: https://www.w3.org/TR/html-aam-1.0/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[rfc2119]
用于在 RFC 中指明 要求级别的关键词. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[RFC8174]
RFC 2119 关键词中大小写的歧义. B. Leiba. IETF. May 2017. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc8174
[SVG1]
可缩放矢量图形(SVG)1.0 规范. Jon Ferraiolo. W3C. 4 September 2001. W3C Recommendation. URL: https://www.w3.org/TR/SVG/
[SVG11]
可缩放矢量图形(SVG)1.1(第二 版). Erik Dahlström; Patrick Dengler; Anthony Grasso; Chris Lilley; Cameron McCormack; Doug Schepers; Jonathan Watt; Jon Ferraiolo; Jun Fujisawa; Dean Jackson et al. W3C. 16 August 2011. W3C Recommendation. URL: https://www.w3.org/TR/SVG11/
[SVG2]
可缩放矢量图形(SVG)2. Amelia Bellamy-Royds; Bogdan Brinza; Chris Lilley; Dirk Schulze; David Storey; Eric Willigers. W3C. 4 October 2018. W3C Candidate Recommendation. URL: https://www.w3.org/TR/SVG2/
[WAI-ARIA]
可访问富互联网应用(WAI-ARIA) 1.1. Joanmarie Diggs; Shane McCarron; Michael Cooper; Richard Schwerdtfeger; James Craig. W3C. 14 December 2017. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria-1.1/

B.2 资料性参考文献

[accname]
可访问名称和描述计算 1.1. Joanmarie Diggs; Bryan Garaventa; Michael Cooper. W3C. 18 December 2018. W3C Recommendation. URL: https://www.w3.org/TR/accname-1.1/
[AT-SPI]
辅助技术 服务提供者接口. The GNOME Project. URL: https://gnome.pages.gitlab.gnome.org/at-spi2-core/libatspi/
[ATK]
ATK - 可访问性工具包. The GNOME Project. URL: https://developer.gnome.org/atk/stable/
[AXAPI]
macOS 的 NSAccessibility 协议. Apple, Inc. URL: https://developer.apple.com/documentation/appkit/nsaccessibility
[GRAPHICS-ARIA]
WAI-ARIA 图形模块. Amelia Bellamy-Royds; Joanmarie Diggs; Michael Cooper. W3C. 2 October 2018. W3C Recommendation. URL: https://www.w3.org/TR/graphics-aria-1.0/
[IAccessible2]
IAccessible2. Linux Foundation. URL: https://wiki.linuxfoundation.org/accessibility/iaccessible2/
[MSAA]
Microsoft Active Accessibility (MSAA). Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/microsoft-active-accessibility
[UI-AUTOMATION]
UI Automation. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/ui-automation-specification
[WAI-ARIA-10]
可访问富互联网应用(WAI-ARIA) 1.0. James Craig; Michael Cooper et al. W3C. 20 March 2014. W3C Recommendation. URL: https://www.w3.org/TR/wai-aria/