Accessibility/Datatypes
From MozillaWiki
Proposal
- Allow aaa:datatype attribute to point to any schema, e.g. type="my:phonenumber"
- The user agent will parse the data type pointed to and provide the following information via ATK/AT-SPI/IAccessible2 object attributes (which can expose arbitrary string values)
- Each element on the page can utilize a simple type, and the schema can define the xs:restrictions as well as the xs:use attribute
- If a complex type is used, it makes the most sense to map this to multiple elements on the page, each with its own simple type
- Note that this means HTML will *not* be usable for author defined types, because it does not support xmlns, and thus the actualy datatype would not be reachable by the user agent.
Type information | Object attribute or state | Notes |
---|---|---|
aaa:datatype | "datatype" | |
xs:base | "datatypebase" | What the type is derived from. Must be one of the built-in types such as xs:integer. If original aaa:datatype is one of the built-in types, then this will be the same. |
xs:minLength | "value-minlength" | |
xs:maxLength | "value-maxlength" | |
xs:length | "valueminlength" and "valuemaxlength" | Expose these two attributes with the same value |
xs:totalDigits | "value-total-digits" | |
xs:fractionDigits | "value-fraction-digits" | |
xs:use="fixed" | "valuenow" | Also sets readonly state (overrides aaa:readonly). Author should also set aaa:valuenow to the same value, and not allow changes. In the case of a difference, the schema will override aaa:valuenow. |
xs:use="default" | Not mapped, because author should be responsible to fill in aaa:valuenow on element initialization | |
xs:use="required" | required state | same as aaa:required. aaa true, required state will be set |
xs:whiteSpace | "value-whitespace" | |
xs:pattern | "value-pattern" | |
xs:enumeration | "value-pattern" (must be built by in the format "string1|string2|string3"), with appropriate characters escaped with a backslash | same functionality as xs:pattern, so to simplify we expose the same way |
xs:minInclusive | "valuemin" | When aaa:valuemin is also set, the schema minimum value will be used |
xs:maxInclusive | "valuemax" | When aaa:valuemax is also set, the schema maximum value will be used |
xs:minExclusive | "valuemin" + "valuemin-exclude"="true" | |
xs:maxExclusive | "valuemax" + "valuemax-exclude"="true" | |
xs:union | "value-pattern" | This must be generated as a fixup to "value-pattern" using the OR operator |
xs:list | "value-list"="true" and change "datatypebase" to the specified xs:itemType for the list |