惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
雷峰网
雷峰网
Recent Announcements
Recent Announcements
月光博客
月光博客
G
Google Developers Blog
腾讯CDC
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
T
Tenable Blog
云风的 BLOG
云风的 BLOG
W
WeLiveSecurity
博客园 - 【当耐特】
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 聂微东
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
P
Privacy International News Feed
MyScale Blog
MyScale Blog
K
Kaspersky official blog
T
The Blog of Author Tim Ferriss
Attack and Defense Labs
Attack and Defense Labs
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
aimingoo的专栏
aimingoo的专栏
I
Intezer
Vercel News
Vercel News
小众软件
小众软件
Simon Willison's Weblog
Simon Willison's Weblog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
Netflix TechBlog - Medium
P
Proofpoint News Feed
Latest news
Latest news
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
S
Security Affairs
P
Proofpoint News Feed
博客园 - 三生石上(FineUI控件)
博客园 - Franky
C
Cyber Attacks, Cyber Crime and Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
美团技术团队
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
Security @ Cisco Blogs
L
LINUX DO - 热门话题
Know Your Adversary
Know Your Adversary
Project Zero
Project Zero
D
Docker
L
Lohrmann on Cybersecurity
F
Full Disclosure

Henri Sivonen’s pages

Parin vuoden tutkimattomuus crates.io: Rust Package Registry Asiakirjatonta toimintaa It’s not wrong that "🤦🏼‍♂️".length == 7 Koulutartuntojen tilastointimenettely Perusteasiakirjoja hallussapitämättä ikärajoitettu Asiantuntijat ja nukkuva vallan vahtikoira Koronapassilausunto Suppealla tietopohjalla ohimeneväksi väitetty Text Encoding Menu in 2021 The Text Encoding Submenu Is Gone An HTML5 Conformance Checker Not Part of the Technology Stack Browser Technology Stack Bogo-XML Declaration Returns to Gecko A Look at Encoding Detection and Encoding Menu Telemetry from Firefox 86 Why Supporting Unlabeled UTF-8 in HTML on the Web Would Be Problematic Rust Target Names Aren’t Passed to LLVM Toimintamalli Activating Browser Modes with Doctype Johtopäätöksiä mallin rakenteesta Tehtävänmäärittelyä kirjoittamatta ja kuolemia laskematta laumasuojamallinnettu Character Encoding Menu in 2014 Erillissuosituksen tarpeettomuudesta yleissuosituksen poikkeukseksi? STM:n maskiaikajana Rust 2021 Oma-aloitteisesti mallinnettu Kokopinovaatimuksin kilpailutettu chardetng: A More Compact Character Encoding Detector for the Legacy Web Varauksia paisutellen tiedotettu Perusteasiakirjoitta tiedotettu Always Use UTF-8 & Always Label Your HTML Saying So IME Smoke Testing The Validator.nu HTML Parser About the Hiragino Fonts with CSS It’s Time to Stop Adding New Features for Non-Unicode Execution Encodings in C++ Rust 2020 The Last of the Parsing Quirks About about:blank Rust 2019 a Web-Compatible Character Encoding Library in Rust How I Wrote a Modern C++ Library in Rust Using cargo-fuzz to Transfer Code Review of Simple Safe Code to Complex Code that Uses unsafe A Rust Crate that Also Quacks Like a Modern C++ Library #Rust2018 No Namespaces in JSON, Please A Lecture about HTML5 Julkisesti luotettu varmenne ikidomainille TLS:ää (SSL:ää) varten -webkit-HTML5 Lists in Attribute Values The Sad Story of PNG Gamma “Correction” If You Want Software Freedom on Phones, You Should Work on Firefox OS, Custom Hardware and Web App Self-Hostablility HTML5 Parser Improvements Schema.org and Pre-Existing Communities Lowering memory requirements by replacing Schematron HTML5 Parsing in Gecko: A Build Introducing SAX Tree NVDL Support in Validator.nu HOWTO Avoid Being Called a Bozo When Producing XML An Unofficial Q&A about the Discontinuation of the XHTML2 WG Thoughts on HTML5 Becoming a W3C Recommendation Four Finnish Banks Training Users to Give Banking Credentials to Another Site Unimpressed by Leopard Sergeant Semantics The Content Sink Inheritance Diagram – 2006-06-30 What is EME? About Points and Pixels as Units The Performance Cost of the HTML Tree Builder Social Media Impression Management The spacer Element Is Gone Openmind 2006 Performance Mistake XHTML and Mobile Devices WebM-Enabled Browser Usage Share Exceeds H.264-Enabled Browser Usage Share on Desktop (in StatCounter Numbers) HTML5 Parser-Based View Source Syntax Highlighting Vendor Prefixes Are Hurting the Web Accept-Charset Is No More Dualroids Writing Structural Stylable Document in Mozilla Editor ISO-8859-15 on haitallinen Hourglass The Scientific Method According to Hixie Maemo Source Code Karpelan lukkovertaus ontuu Digitaalisesta arkistoinnista ARIA in HTML5 Integration: Document Conformance (Draft) XHTML—What’s the Point? (Draft, incomplete) Mac OS X Browser Comparison HOWTO Spot a Wannabe Web Standards Advocate An Idea About Intermediate Language Trees and Web UI Generation Thoughts on Using SSL/TLS Certificates as the Solution to Phishing Bureaucracy Meets the Web Europe Day HOWTO Establish a 100% Literacy Rate What to Do with All These Photos? Charmod Norm Checking Validator Web Service Interface Ideas DTDs Don’t Work on the Web EFFI’s Day in Court Speaking at XTech
ARIA in HTML5 Integration: Document Conformance (Draft, Take Two)
Henri Sivonen · 2014-11-21 · via Henri Sivonen’s pages

This is not a spec and has not been endorsed by anyone.

Introduction

A week ago, I wrote a draft document and an accompanying email about integrating ARIA into HTML5 from the point of view of document conformance. I have gotten only one reply so far (almost Warnocked), so I figured I’d go ahead and implement my suggestions in order to produce something people can actually try. This document describes the implementation deployed at Validator.nu as of 2008-03-31.

The implementation is based on schemas written in RELAX NG and Schematron. DTDs, XSD, OWL or RDF Schema are not involved in any way.

HTML-isms in Attribute Values

When an attribute takes one of enumerated possible valid values, whitespace around the token is not allowed. The role attribute is considered to take an enumerated token value. (Now is not the time to cross the ARIA 2.0 extensibility bridge on the validation side.)

Enumerated values are not case-insensitive, however. They must be in lower case.

Numeric values use HTML5 microsyntaxes instead of XSD datatypes.

State and Property Groups for Implicit Roles

I identified the following implicit roles.

aria.implicit.button
aria-controls
aria.implicit.input
aria-controls, aria-invalid, aria-required
aria.implicit.region
aria-atomic, aria-busy, aria-channel, aria-controls, aria-expanded, aria-live, aria-relevant
aria.implicit.group
aria-atomic, aria-busy, aria-channel, aria-controls, aria-expanded, aria-live, aria-relevant, aria-activedescendant
aria.implicit.th
aria-sort, aria-atomic, aria-busy, aria-channel, aria-controls, aria-disabled, aria-expanded, aria-live, aria-readonly, aria-relevant, aria-selected
aria.implicit.structure
aria-atomic, aria-busy, aria-channel, aria-live, aria-relevant
aria.implicit.link
aria-controls, aria-disabled
aria.implicit.listitem
aria-posinset, aria-setsize, aria-atomic, aria-busy, aria-channel, aria-live, aria-relevant
aria.implicit.img
aria-atomic, aria-busy, aria-channel, aria-controls, aria-live, aria-relevant
aria.implicit.select
aria-invalid, aria-required, aria-atomic, aria-busy, aria-channel, aria-controls, aria-live, aria-relevant

Unsupported Roles

The following roles are unsupported. The first four duplicate ancient HTML 4.01 built-in semantics. Landmarks mostly duplicate HTML5 container elements.

  • rowheader
  • columnheader
  • document
  • heading
  • Landmarks

Unsupported States and Properties

The following states and properties are not supported. (Links to rationale.)

Unsupported Requirements

The use of the group role is not properly specified. Moreover, an informative example in the spec and sample code from the University of Illinois disagree. Using group in trees or lists is not supported.

tab and tablist containment lacks reciprocity in the spec, so the validator only checks that the parent of a tab is tablist but checking for non-tab children of tablist is not supported.

Some grid-related containment rules are not checked, because I’m hopeful that the spec will change to use the natural structure of an HTML table.

The containment relationship of directory and link seems too strict and is not checked.

“Accessible Name Required” rules are not supported, because I didn’t get around to reviewing and implementing them yet.

Special—No Role Allowed

These elements do not accept a role attribute due to being special in some way.

  • area
  • base
  • bdo
  • br
  • col
  • colgroup
  • datatemplate
  • embed (plug-in should be itself accessible)
  • event-source
  • head
  • input type=hidden
  • link
  • map
  • meta
  • nest
  • noscript
  • param
  • rule
  • script
  • source
  • style
  • thead
  • tfoot
  • tbody
  • title
  • html

Strong Native Role—No Override

The following elements have strong native semantics and to dissuade authors from overriding these native semantics, the following elements do not accept a role attribute. However, some of them accept states and properties according to the implicit role.

Handling button analogously with button input.

Element Implicit role Permitted States and Properties
address contentinfo aria.implicit.region
article ~main aria.implicit.region
aside note aria.implicit.region
audio
caption ~description aria.implicit.region
command type=radio menuitemradio
command type=checkbox menuitemcheckbox
datagrid treegrid
del
details region aria.implicit.region
dialog region aria.implicit.region
fieldset group aria.implicit.group
figure ~img aria.implicit.img
footer contentinfo aria.implicit.region
form region aria.implicit.region
h1—h6 heading aria.implicit.structure
header ~banner aria.implicit.region
hr separator Region properties make no sense for a canonically empty separator
input type=add button aria.implicit.button
input type=checkbox checkbox aria.implicit.button
input type=date spinbox+datatype aria.implicit.input
input type=datetime spinbox+datatype aria.implicit.input
input type=datetime-local spinbox+datatype aria.implicit.input
input type=email textbox+datatype aria.implicit.input
input type=file input aria.implicit.input
input type=month spinbox+datatype aria.implicit.input
input type=move-down button aria.implicit.button
input type=move-up button aria.implicit.button
input type=number spinbox aria.implicit.input
input type=password textbox+secret aria.implicit.input
input type=radio radio aria.implicit.input
input type=range slider aria.implicit.input
input type=remove button aria.implicit.button
input type=reset button aria.implicit.button
input type=submit button aria.implicit.button
input type=time spinbox+datatype aria.implicit.input
input type=url textbox+datatype aria.implicit.input
input type=week spinbox+datatype aria.implicit.input
ins
label ~description aria.implicit.region
legend ~description aria.implicit.region
li (in menu) menuitem not sure
mark
menu menu not sure
meter
nav navigation aria.implicit.region
option option aria.implicit.input
output region aria.implicit.region
progress progressbar
section region aria.implicit.region
select select aria.implicit.select
textarea textbox aria.implicit.input
th scope=row rowheader aria.implicit.th
th scope=col columnheader aria.implicit.th
time
video

Weak Native Role—Override Allowed

The following elements have an implicit role and accept states and properties according to that role. However, the native role can be overridden with the role attribute.

Element Implicit role Permitted States and Properties
body document aria.implicit.structure
a link aria.implicit.link
iframe region aria.implicit.region
input type=button button aria.implicit.button
input type=image button aria.implicit.button
input type=text textbox aria.implicit.input
ol list aria.implicit.region
ul list aria.implicit.region
li (in ol or ul) listitem aria.implicit.listitem

No Native Role—Any Role Allowed

The following elements have no states and properties by default but can accept any role using the role attribute.

  • abbr
  • b
  • blockquote
  • canvas
  • cite
  • code
  • dd
  • dfn
  • div
  • dl
  • dt
  • em
  • font
  • i
  • img
  • kbd
  • object
  • p
  • pre
  • q
  • samp
  • small
  • span
  • strong
  • table
  • td
  • tr
  • var

Findings So Far

To find out how far out these made-up rules are from what people expect to do with ARIA, I validated the University of Illinois ARIA examples.

  • A grid example turns table headers into buttons. This is problematic, because the aria-sort property does not apply to buttons. It seems to be it would make more sense not to override the native semantics of th and indicate that the headers can be clicked to sort by setting focusability with tabindex.

  • The live region states and properties are used without an explicit role on span. Perhaps it would make sense to move the live region states and properties to global states and properties.

  • The parent—child requirements (from the ARIA spec—not made up by me) are not always followed. Here menuitems do not have a menu parent. Also, validating seems potentially useful by revealing an accidental aria- prefix in a role value. (This demo does not work for me visually in Firefox 3b4, by the way.)

  • Another case where a validator could help. Is “descendant” too prone to get misspelt? “labelled” is even noted as problematic in the spec.

  • Of the states and properties I opted not to support in this draft, aria-hidden is actually used by the demos. Is it too late for irrelevant? On the other hand, the other states and properties that I opted to support are ones that were not used in the demos.

  • Leaving group partially unsupported did hit a demo case, though.

Changelog

  1. Made input type=image overridable
  2. Swapped the specialness of html and body