Accessibility/Datatypes

From MozillaWiki
Jump to: navigation, search

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" <thead> </thead> <tbody> </tbody>
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
}