This document provides guidelines for designing Extensible Markup Language
(XML) applications that lower barriers to Web accessibility for people with
disabilities (visual, hearing, physical, cognitive, and neurological). XML, used to design applications such as XHTML, SMIL, and SVG,
provides no intrinsic guarantee of the accessibility of those applications.
This document explains how to include features in XML applications that
promote accessibility.
This document is a Working Draft of the XML Accessibility
Guidelines made available by the Protocols and Formats Working Group (PFWG). The PFWG operates as part
of the WAI Technical Activity. The
PFWG maintains
a page about issues, errata and corrigenda for this
specification, and feedback is particularly invited on those.
This document is a W3C Working Draft made available for public review as
per the W3C Process.
This draft is expected to be updated or made obsolete within three months of
its publication (3 October 2002). Intermediate updates (publicly archived
mailing list<EMAIL_ADDRESS>Translations of this specification, or of
previous working drafts, are made available by volunteers. The PFWG thanks people who
have provided translations, but notes that the original English version of
any draft is the only authoritative version
Patent disclosures relevant to this specification may be found on the
Working Group's patent disclosure page, in conformance with W3C policy.
At the time of publication, there are no declarations specific to this
document.
Publication of this document does not imply endorsement by the W3C, its
membership or its staff. This is a draft document and may be updated,
replaced, or obsoleted by other documents at any time. It is inappropriate to
use W3C Working Drafts as reference material or to cite them as other than
"work in progress". A list of current W3C technical reports and publications,
including working drafts and notes, can be found at http://www.w3.org/TR/.
Introduction
This document specifies requirements that, if satisfied by designers of
XML applications, will lower barriers to accessibility. This document
includes:
- This introduction, which provides context for understanding the
requirements listed in section 2.
- Section 2 explains four general principles of accessible design, called
"guidelines". Each guideline consists of a list of requirements, called
"checkpoints", which must be satisfied in order to conform to this
document.
- Section 3 explains how to make claims that XML Applications satisfy the
requirements of section 2.
- An appendix lists all the checkpoints for convenient reference (e.g.,
as a tool for application developers to evaluate software for
conformance)
XML (Extensible Markup Language) is a meta-syntax,
used to create new languages. It can be seen as a simplification of SGML
(Standard Generalized Markup Language), designed to promote a wider
acceptance in Web markets, but serving the same functionality of
extensibility and new language design. HTML (HyperText
Markup Language), on the other hand, is one particular application of SGML,
which covers one set of needs ("simple" hypertext documents) and one set of
element and attributes.
For instance, in HTML, authors can write elements like:
<
title
>XML and Accessibility</
title
> ...
<
address
lang="fr">Mas St Christophe</
address
> ...

Background

and they can only use elements (title
, h1
, etc.)
defined by the HTML specification (which defines about a hundred), and their
attributes.
In SGML and XML, authors can define their own set of elements, and end up
with documents like:
<
menu
>New England Restaurant</
menu
>
<
appetizer
>Clam Chowder
<
photo
url="clam.jpg">A large creamy bowl of clam chowder, with
bread crumbs on top</
photo
>
</
appetizer
>
which may fit more closely the needs of their information system.
Within W3C, the HTML language is now being recast as XML - this is called
XHTML - including a modularization of HTML to suit
the needs of a larger community (mobile users, Web TV, etc).
XML is therefore not to be seen as a replacement of HTML, but as a new
building layer on top of which HTML is to be placed, next to other languages
designed by W3C, such as MathML (for representing mathematical formula), SMIL
(for synchronizing multimedia), SVG (for scalable graphics), etc., and other
new languages designed by other organizations (such as Open EBook, etc.).
Furthermore, it is important to understand that XML is not only a User
Interface technology (like HTML), but can and is often used in protocol
communication, to serialize and encode data to be sent from one machine to
another.
The XML grammars (often called schema in this document) can be classified
along different axes:
- End-user-oriented:
- Where the dialect is used to describe user-oriented data, such as
structured textual oriented content in Docbook, HTML, MenuML, OEB,
etc.; or specialized content - such as MathML, Scalable Vector Graphics
(SVG), MusicML, Synchronized Multimedia Integration Language (SMIL); or
any document storage format. An informal definition is 'anything for
which the question "is there a textual equivalent of all rich media
data bits?" makes sense'.
- Process-oriented:
- When the content being marked up is closer to a program than a
document. Examples: For expressing data processing (for example XSL -
Extensible Style Language), metadata, such as RDF (Resource Description
Framework), XML Schema languages, etc.
According to this taxonomy, these guidelines only address
End-user-oriented schema. This does not imply that there are not
accessibility issues or features in a Process-oriented schema - see, for
example, how XSL can assist in Braille formatting, but
they are out of the scope of this particular document.
"XML Accessibility Guidelines 1.0" is part of a series of accessibility
guidelines published by the Web Accessibility Initiative (WAI). The documents
in this series reflect an accessibility model in which Web content authors,
format designers, and software developers have roles in ensuring that users
with disabilities have access to the Web. In this model:
- Format specifications (e.g., XHTML, SVG, SMIL, MathML) include features
that support accessibility, such as elements and attributes for
alternative text, navigation tools, semantics that respect user control
over presentation, etc. The current document (XAG 1.0) explains how to
design XML formats that include features to benefit accessibility. The
principles of this document apply for the most part to non-XML formats as
well.
- Authors make use of these features when creating Web pages and Web
applications. The "Web Content Accessibility Guidelines 1.0" [WCAG10]
explains how to create more accessible content through features offered
by formats, and also through consistent design, clear writing, use of
multimedia, and more.
- Authoring tools help authors create more accessible content through
support of formats with accessibility features, and through interactive
and automatic assistance (e.g., prompts for accessibility features,
validity checking, reuse of accessible content, etc.). The "Authoring
Tool Accessibility Guidelines 1.0" [ATAG10] explains the responsibilities
of authoring tool developers. ATAG 1.0 addresses the accessibility of
authored content but also the accessibility of the tool's user
interface.
- User agents promote accessibility by implementing formats with
accessibility features, and by providing an accessible user interface,
allowing communication with assistive technologies, documenting
accessibility features, following operating environment conventions, etc.
The "User Agent Accessibility Guidelines 1.0 [UAAG10] explains to user
agent developers how to create more accessible browsers, multimedia
players, and other user agents.
Formats that conform to XAG 1.0 will support the features of the other WAI
Guidelines. For instance, this document requires that formats include
elements and attributes that:
- Will allow authors to associate text alternatives with non-text
content;
- Will allow user agent developers to recognize these alternatives and
provide easy access to them in a reliable manner;
- Will allow authoring tool developers to design tools that reuse
recognized alternatives when the same non-text content (e.g., a corporate
logo) is reused by the author.
The requirements of making the Web accessible to actual users do not
always match this model perfectly. In all the guidelines there are cases
where there is a need for overlapping requirements to ensure that people can
in fact use the Web. These are sometimes due to particular problems in widely
implemented and used technology, and sometimes are provided as a "safety
net".
Note: The WAI Guidelines cross-reference one another. XAG 1.0 requirements
to satisfy the requirements of other WAI Guidelines should be interpreted to
mean "Follow the requirements of other guidelines EXCEPT for those that in
turn require conformance to XAG 1.0." Thus, if XAG 1.0 requires that the
documentation of an XML application conform to WCAG 2.0, and WCAG 2.0 states
that conforming content must also conform to XAG, read this as:
"Documentation of an XML application must conform to WCAG 2.0 except for WCAG
2.0 requirements that in turn require conformance to XAG 1.0."
The WAI (Web Accessibility Initiative) has done
extensive work in the HTML area, resulting in lots of new functionalities
being added to the version 4.0 of the language (see the HTML4 Accessibility Improvements
paper [HTML-access]).
These features includes:
- Improved structure (such as fieldset, optgroup in form)
- Support of separate Style Sheets
- Better alternate content (required alt, longdesc, caption, etc)
- Easier navigation (tabindex, link, etc)
One area of concern with the advent of XML is that the freedom of
design it brings has and can result in a loss of
accessibility features, present today because of HTML's pervasive
presence and widely available specification.
For instance, one could design a new XML language that would make it much
more difficult to create accessible documents, by not including in the
element or attribute set a way to attach an alternate textual description for
a photo:
<
menu
>New England Restaurant</
menu
>
<
appetizer
>Clam Chowder
<
photo
url="clam.jpg"/>

</
appetizer
>
In this example, the problem is not that the author of this document
didn't put an alt attribute or textual equivalent attached to the photo
element, it's that the designer of the language didn't put the attribute or
the proper support in the language itself (that is, in the schema or the
DTD). This means that there is no reliable way for a user to find how an
author tried to explain a particular image in text form.
This document specifies requirements for XML languages to ensure that
people can create documents in a given XML language which are as accessible
as possible to people with disabilities, who use a variety of different
techniques and tools to access the Web.
Guidelines for designers of XML dialects
This section provides a list of four guidelines, which are general
principles of accessible design. Guidelines include rationale and
checkpoints. Each checkpoint expresses a requirement, includes some
informative text about the checkpoint and one or several Techniques, where
implementations and examples of the checkpoint are discussed. Note that the
checkpoints are not prioritized at that point.
Guideline 1. Ensure that authors can
associate multiple media objects as alternatives
Web content providers must able to offer alternative versions of their
content if they wish to do so (as the Web Content Accessibility
Guidelines tell them to do so). Textual alternatives, like a caption for
a movie, or a table summary, can be repurposed for many different output
devices, whereas audio content for instance is confined to a certain set
of devices (those that can play sound).
- 1.1 Provide a mechanism
to explicitly associate alternatives for content or content
fragments.
- Authors using the
elements/attributes in your language must have the ability to
provide alternatives for any content, be it images, movies, songs,
running text, whatever.
- Techniques for 1.1
- T1.1.1 In SVG, the
desc
element can be used to describe a graphic.
<svg width="6in" height="4.5in" viewBox="0 0 600 450">
<title>Network</title>
<
desc
>An example of a computer network based on a hub</desc>
</svg>
- T1.1.2 The
summary
and the caption
elements in the
XHTML
table module can be used to provide a rich textual description
of a non-textual media. cf. WCAG 1.0 checkpoint
1.1.

Statistics about fruit flies

	average
red
eyes

height	weight

males	1.9	0.003	40%

females	1.7	0.002	43%

- 1.2 Define
flexible associations, where a given kind of relationship can
link to or from objects of varying types without constraint.
Relationships between alternatives should
be explicit in markup to allow users to select which alternatives
are useful to them, and should allow multiple types of alternative,
not just text as an alternative for an image. For example, the HTML
img
element lets you provide a text alternative in the
alt attribute, but it does not let you explicitly associate images
to text or markup. To do this people have to put up with less
adequate mechanisms, perhaps by adding "see figure 1" at the end of
a paragraph. If the img
element could have content,
like the object
element, this would have solved the
problem to some extent. Another way would have been to add an
"appliesTo
" attribute to the img
element,
allowing you to put the associated image elsewhere in the document.
Satisfying this checkpoint takes a lot of thought due to its
subjective nature, but it is very important.
- Techniques for 1.2
T1.2.1 In technique 1.1.1 we showed that the desc element
in SVG can be used to provide an alternative for a graphic. Using a
different XML dialect it is possible to add any type of information
as part of the desc
.
<svg xmlns="http://www.w3.org/2000/svg" xml:lang="en">
<g>
<
desc
xmlns:mydoc="http://example.org/mydoc">
<mydoc:title id="
title1
">The sales bar chart by region</mydoc:title>
<mydoc:para>This description uses markup from the
<mydoc:emph>mydoc</mydoc:emph> namespace.</mydoc:para>
</
desc
>
</g>
</svg>
- T1.2.2 In the
example below, an imaginary mediaExample element allows for any
kind of content. In the example, those that have been included are
an image, a textual object and a video.
<mediaExample>
<Obj xlink:role="http://example.au/equivalenceTypes/image" xlink:href="imageVersion" />
<Obj xlink:role="http://example.au/equivalenceTypes/shortText" xlink:href="shortText" />
<Obj xlink:role="http://example.au/equivalenceTypes/movie" xlink:href="movie" />
</mediaExample>
Guideline 2. Create semantically-rich
languages
Increased structure in an XML application (i.e., elements and
attributes that correspond to meaningful terms in the chosen domain)
allows authors to encode their knowledge in a manner that user agents can
recognize reliably. XML applications deployed on the Web should include
linking semantics.
- 2.1 Ensure all semantics
are captured in markup in a repurposable form.
- XML languages must be
designed so that they can be presented in a device independent way.
They must be repurposable with respect to input and output devices,
as well as spatially independent (don't make the user have to use a
mouse), temporally independent (don't require input within a finite
time interval), etc.
- Techniques for 2.1
- See SMIL for instance.
- 2.2 Separate presentation
properties using stylesheet technology/styling mechanisms.
- In non Final-form dialect,
authors must be able to mark up documents with proper structural
elements and control presentation with style sheets rather than
with presentation elements and attributes. This separation of
content from presentation facilitates the adaptation to users with
different presentational needs (larger font, better contrast, etc)
and it also facilitates the maintenance of the pages.
- Techniques for 2.2
T2.2.2
Example: Right
Support the inclusion and processing of external style sheets
(note the importance of Guideline 4 on
exporting semantics in this example, so that the user may override
the style)
mystyle.css
: news { text-align: center; font: bold Arial }
<?xml-stylesheet href="
mystyle.css
" type="text/css"?> ...
<news>Story 1</news>
<news>Story 2</news>
TW2.2.1 Example: Wrong
Do not include presentational attributes and elements in your
language.
<news align="center" font="arial" weight="bold">Story 1</news>
<news align="center" font="arial" weight="bold">Story 2</news>
- 2.3 Use the standard XML
linking and pointing mechanisms (XLink and XPointer). [[Note this checkpoint is
under discussion and may change]]
- Xlink [XLINK] and XPointer [XPTR] have been reviewed for accessibility and
their linking/pointing semantics may be recognized with
certainty.
- Techniques for 2.3
T2.3.2
Example: Right
Using links that can be recognized reliably by XLink
applications.
<myxlink
xmlns:xlink
="http://www.w3.org/1999/xlink"
xlink:href="http://mysite/myfile.xml">
Current List of references
</myxlink>
TW2.3.1 Example.
Wrong
User Agents have no way of knowing this is a link.
<mylink linkend="http://mysite/myfile.xml">
Current List of references
</mylink>
- 2.4 Define element types
that allow classification and grouping (header, section, list,
etc).
- Make use of existing
mechanisms (noting checkpoint 1.2), or create
them where necessary, following these guidelines.
- Techniques for 2.4
- T2.4.1 Think in terms of overall
structure of your documents when you design a new dialect.
<-- menu - highest level block element
appetizer - first child of section, major block element
entree - second child of section, major block element
entity meal-sequence - common paragraph level blocks -->
<!ELEMENT menu (title , ((%meal-sequence;)| appetizer)+)>
<!ELEMENT appetizer (title? , ((%meal-sequence;) | entree)+)>
- 2.5 Provide for a full
containment model with chunks of reasonable size.
- If a document instance is
fully contained, i.e. adequate wrapper elements around PCDATA, then
both CSS and XSLT can be used to style content for presentation in
alternate formats. If content is in reasonable sized containers, it
enables the document to be skimmed quickly by non- visual readers.
If a logical hierarchy of elements is used, then a table of
contents or summary may be generated providing logical access to
document content.
- Techniques for 2.5
- T2.5.1 In this
XML Schema example, a document is broken up into a number of
sections, and a sequence of nest-able sections with a consistent
structure may be used for both navigation and the automated
generation of a table of contents to whatever level.
<xsd:schema xmlns="http://www.publishing.org"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xsd:element name="document">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="head"/>
<xsd:element ref="section"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="head" type="xsd:string">
<xsd:annotation>
<xsd:documentation>Section title</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="section">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="head"/>
<xsd:element ref="section"/>
<xsd:element ref="paragraph" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="paragraph" type="xsd:string"/>
</xsd:schema>
- 2.6 Define element types
that identify important text content.
- Within most documents,
certain elements are key to its understanding. If these are both
clear, and identified for machine access, their content can be
presented to a user to gain a swift understanding of the semantics
of the element, section and eventually the whole document. Examples
of such important elements are numbers, dates, titles and
links.
- Techniques for 2.6
- T2.6.1 Mark up
your text with more semantics, such as datatype meaning "this is a
date", or "this is an acronym".
Code example: Using the XML Schema
language [XSCHEMA] to identify data
types, rather than simply leaving them as strings: a fully
constrained ISBN number:
<xsd:simpleType name="
ISBN-Type
">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{5}-\d{5}-\d{5}"/>
<xsd:pattern value="\d{1}-\d{3}-\d{5}-\d{1}"/>
<xsd:pattern value="\d{1}-\d{2}-\d{6}-\d{1}"/>
</xsd:restriction>
</xsd:simpleType>
- 2.7 Provide a mechanism
for identifying summary / abstract / title.
- Knowing how to extract that
information allow User Agents to present it to the end-user, thus
facilitating browsing of the content (e.g. deciding if yes or no
the document is of interest).
- Techniques for 2.7
- T2.7.1 Example:
XML using RDF and Dublin Core
elements [DC-elements].
<someElement xmlns="http://xmlns.com/example">
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc
="http://purl.org/dc/elements/1.1/">
<rdf:Description about="http://www.dlib.org/">
<
dc:Title
>
D-Lib Program - Research in Digital Libraries
</dc:Title>
<
dc:Description
>The D-Lib program supports the community of
people with research interests in digital libraries and
electronic publishing.</dc:Description>
<dc:Publisher>
Corporation For National Research Initiatives
</dc:Publisher>
<dc:Date>1995-01-07</dc:Date>
<dc:Type>World Wide Web Home Page</dc:Type>
<dc:Format>text/html</dc:Format>
<dc:Language>en</dc:Language>
</rdf:Description>
</rdf:RDF>

</someElement>
- 2.8 Don't overload
element and attribute names.
- If an element name may be
confused, within the context of the document instance, then it is
said to be overloaded. If each element name is unique within
context it is easier to access the document semantics. Note the
relation to checkpoint 4.9.
- Techniques for 2.8
T2.8.2
Example: Right
<report>
<invoice>
<
price
>25</
price
>
<currency>Dollar</currency>
....
</invoice>
<description>
<item>Widgets</item>
<
quantity
>25</
quantity
>
</description>
</report>
TW2.8.1
Example: Wrong
<report>
<invoice>
<
amount
>25 dollars</
amount
>
....
</invoice>
<description>
<item>Widgets</item>
<
amount
>25</
amount
>
</description>
</report>
In the example above, the designer of the schema intended the
first occurrence of the element "amount" to mean 'price' of the
products purchased and the second occurrence to mean 'quantity' of
the products purchased.
In the example above, the meaning of all the elements is clear
and none of the individuals elements is overloaded.
- 2.9 Reuse existing accessible modules, as originally
specified / intended. [[Note: This checkpoint is under
discussion, and may be changed to techniques, or may be augmented with
a list of modules that should be re-used]]
- Reusing accessibility
modules has the advantage that materials produced using your
language will be accessible to their clients. No need to create
"new" elements/attributes or re-invent the wheel just to satisfy
some creative fantasy. There's a non negligible cost for authors
(the people using your language) to learn new concepts. When using
modules from other schema, use them with the same semantics as
originally intended.
- Techniques for 2.9
- T1.3.1 This
example shows how to use an existing DTD module: the object from
the XHTML language
<!DOCTYPE document SYSTEM "myDTD.dtd" [
<!ENTITY % qnames
PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
"xhtml-qname-1.mod" >
<!ENTITY % object
PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
"
xhtml-object-1.mod
" >
%qnames;
%object;
]>

etc.
<
xhtml:object
...>
to include a picture or movie of the part.
- T2.9.1 Example:
reusing SMIL switch
...
<par>
<video src="anchor.mpg" ... />
<switch>
<audio src="HiQuality.wav" systemBitrate="56000" ... />
<audio src="MedQuality.wav" systemBitrate="28800" ... />
<audio src="LowQuality.wav" ... />
</switch>
</par>
- 2.10 Allow association
of metadata with distinct elements and groups of elements.
- This permits authors to
make even more semantic associations than what was originally
intended by the language designer.
- Techniques for 2.10
- T2.10.1 In SVG
for instance, there is a
metadata
element where RDF
statements can be declared, pointing at graphical elements and
adding more relational semantics (one object linked to another, or
on top of another) than what is provided by SVG itself. See the SVG Accessibility note [SVG-access] for examples.
Also, by providing ID for all your elements, you allow external
metadata to point to them.
- 2.11 Specific checkpoint
for Final-form applications.
- Languages used only for
presentation to a certain scope of users and media are called,
Final-form and they should adhere to the following
provisions:
- Allow the author to identify by URI the source used to
generate the final form instance.
- In the application documentation, indicate that final form
instances SHOULD NOT be served except upon explicit user
request (e.g., through a configured preference).
- In the application documentation, indicate that final form
instances SHOULD NOT be the only form used to store information
persistently; a semantically rich source should be stored
instead or made available by dereferencing the URI required by
the first provision of this checkpoint.
- Techniques for 2.11
- The XSL
1.0 specification [XSL10] contains the
following example of such wording.
In some implementations of XSL/XSLT, the result of tree
construction can be output as an XML document. This would allow
an XML document which contains formatting objects and formatting
properties to be output. This capability is neither necessary for
an XSL processor nor is it encouraged. There are, however, cases
where this is important, such as a server preparing input for a
known client; for example, the way that a WAP
(http://www.wapforum.org/faqs/index.htm) server prepares
specialized input for a WAP capable hand held device. To preserve
accessibility, designers of Web systems should not develop
architectures that require (or use) the transmission of documents
containing formatting objects and properties unless either the
transmitter knows that the client can accept formatting objects
and properties or the transmitted document contains a reference
to the source document(s) used in the construction of the
document with the formatting objects and properties.
Guideline 3. Design an accessible user
interface.
Web content is rapidly shifting from static pages to dynamic pages,
called Web applications. This is most often done using a scripting
language based on event callback. The language designers must ensure that
the model they chose allows for user control of presentation. Always
ensure that nothing in the presentational aspect of the document attempts
to restrict user control of how the document instance is accessed.
- 3.1 Provide default style
sheets for multiple output modalities.
- The additional effort from
the language designer point of view in providing style sheets which
can represent an XML document instance in alternate modalities is
minimal and will have a multiplier benefit for all the authors
using the language and these style sheets. Readers of your
documents may prefer audio access, so providing an appropriate
stylesheet with your schema which will allow those readers to
utilize synthetic speech to produce a clear rendering of the
content.
- Techniques for 3.1
- T3.1.1 Example:
See the sample
style sheet for HTML 4.0 [HTML-style]
provided with the CSS2 specification.
- 3.2 Define navigable
structures that allow discrete, sequential, structured, and search
navigation functionalities.
- Navigable structures are
the key elements used for navigation around an XML application.
Define element types that allow classification and grouping, or
re-use existing accessible grouping and classification modules.
- Techniques for 3.2
- T3.2.1 Example:
See how the Digital Talking
Book [DTB] provides elements for navigable
structures.
- 3.3 Use CSS or XSLT to
describe a basic outline view.
- The language designer is
the best placed to provide a mapping of the new language constructs
to a basic outline format, which will facilitate the deployment of
content by making it understandable for all classes of users.
- Techniques for 3.3
- T3.3.1 The
following stylesheet provides a transformation to produce an HTML
outline or table of contents listing the title of each section, and
nesting them to match an original document example.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">

<title>Outline of x</title>

<-- This provides the link back to the full source document -->

full source of document

Outline view

 <xsl:for-each select="//section">
<xsl:number level="multiple" count="section" format="1.1.1"/>
<xsl:value-of select="title"/>

</xsl:for-each>

<xsl:apply-templates/>

</xsl:template>
<xsl:template match="*"/>
</xsl:stylesheet>
- 3.4 Use a
device-independent interaction and events model / module.
- Any XML application which
contains user interaction may exclude readership if presumptions
are made about the technology used to access that application. What
happens when the application only support mouse interaction, and
the user is not mouse bound? The result could be lost sales, it
will be a loss of interest and a search for alternatives.
- Techniques for 3.4
- T3.4.1 Using DOM2
event the right way in SVG.

<g onactivate="
DoOnActivate
(evt)">
<rect id="button" x="500" y="500" width="250" height="40"/>
</g>
- 3.5 Allow for user
control of interaction timing - rate of change, external events
triggering document changes, etc.
- If an XML application
presumes that all readers will take in content in a fixed time
period, will read at a certain rate, or access each page in a
certain time, then readers and users of that application will be
lost.
- Techniques for 3.5
- T3.5.1 Ensure and
promote the work the user agent has to do to control - on behalf of
the end-user - the rate of change of content presentation, perhaps
using element attribute for pause facility or settable rate to
allow the user control of all interactions. Fixed time period
time-outs are not popular. See the SMIL-Animation
specification [SMIL-anim] for examples of
such design.
Guideline 4 Document and export
semantics
Make sure that all people can understand your design and map to and
from your elements, and easily make assertions about them. Furthermore,
make sure that you provide your own first party assertions about your
languages: for example, don't make users guess an element's purpose.
- 4.1 Provide explicit
human readable definitions for markup semantics.
- Any schema which is
designed by a single person in a reasonable period will only be
understood by that person designing it. When exposed to document
authors, interpretations will vary. If the schema designer wishes
document authors to utilize the same semantics then those semantics
require documentation. The better the quality of that
documentation, the more likely the shared understanding.
- Techniques for 4.3
- T4.3.1
Example: TREX
<element name="paragraph">
<xsd:annotation>the lowest level block container.</xsd:annotation>
<empty/>
</element>
- 4.2 Ensure that at least
one version of the XML application's documentation conforms to at least
level Double-A of the Web Content Accessibility Guidelines 1.0 [WCAG10].
- Everybody should be able to
read and understand a technical specification, even one that is
purely intended for a particular class of users.
- Techniques for 4.1
- T4.1.1 For
instance, blind users routinely author Web content that is intended
for sighted users, and they can do so because the HTML and the CSS
specifications are accessible (well structured, description of
pictures, etc).
- 4.3 Provide a
machine-understandable means/mechanism to get from a document instance
to the schema.
- This allows programs to
automatically retrieve the documentation of a language.
- Techniques for 4.2
- T4.2.2 Example:
Uses the W3C XML Schema language as the schema, referencing it via
the xsi:schemaLocation attribute.
<?xml version="1.0" encoding="utf-8"?>
<my:doc
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:
schemaLocation
="http://www.example.org/schemas/doc.xsd"
xmlns:my="http://www.jenitennison.com/"
xmlns="http://www.w3.org/1999/xhtml">
- 4.4 Use a schema language
that can support explicit human-readable documentation or annotation of
semantics.
- It is important that the
schema language allows the language designer to explicitly attach
documentation to elements and attributes.
- Techniques for 4.4
- T4.4.1 Example
Right: The need for the head element is clearly
described.
<xsd:element name="head" type="xsd:string">
<xsd:annotation>
<xsd:
documentation
xml:lang="en-US">Title of the section.
Required for table of contents generation.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
- T4.4.2 Example
Wrong: In the following DTD extract there is
documentation available but only by reading the source DTD. It is
possible to reliably extract only some of this and present it to a
user automatically. It is also not possible to provide rich
information here - it is plain text without any of rich media
features necessary to provide high-level conformance to WCAG.

<!ELEMENT IMG - O EMPTY -- Embedded image -->
<!ATTLIST IMG
%attrs; -- %coreattrs, %i18n, %events --
src %URI; #REQUIRED -- URI of image to embed --
alt %Text; #REQUIRED -- short description --
longdesc %URI; #IMPLIED -- link to long description
(complements alt) --
name CDATA #IMPLIED -- name of image for scripting --
height %Length; #IMPLIED -- override height --
width %Length; #IMPLIED -- override width --
usemap %URI; #IMPLIED -- use client-side image map --
ismap (ismap) #IMPLIED -- use server-side image map -- >

- 4.5 Provide semantic
relationships to other schema where appropriate and possible.
- This allows the authors
using the language to reuse their existing knowledge and tools.
- Techniques for 4.5
- T4.5.1 This can
be done implicitly via subclassing/derivation of existing types, by
asserting equivalence of type (e.g. SVG
title
and SMIL
title
) or by mapping to well known semantics.
- Example: mapping the Menu example provided in the Introduction to
XHTML using XSLT:

<title>Mapping of language MenuML to html</title>

Menu of: <xsl:value-of select="menu/"/>

Appetizer: <xsl:value-of select="menu/appetizer/"/>

etc...

- 4.6 Document all features
of the XML application that benefit accessibility.
- This is useful in order to
foster the development of state of the art assistive technologies
to identify all the features of a new language that make it more
accessible.
- Techniques for 4.6
- T4.6.1 SVG has
provided a good example
of this [SVG10-access] being a part
of the recommendation. For W3C Working drafts, include and document
those specific features which positively aid accessibility.
- 4.7 Include accessibility
requirements in conformance requirements.
- This promotes the
development of accessible content in the community caring about
conformance.
- Techniques for 4.7
- T4.7.1 SVG has
specific accessibility requirements as a part [SVG10-access] of the overall requirement
document. When the requirements are drawn up, specific clauses need
to be included which clearly state accessibility requirements
T4.7.2 A more
detailed explanation is given in section
3.3 of the User Agent Accessibility Guidelines [UAAG10]
- 4.8 Document techniques
for WCAG, ATAG, and UAAG with respect to the XML application.
- The WAI suite of
accessibility guidelines [WCAG],[ATAG],[UAAG] contain
detailed descriptions as to how to satisfy each individual
document's requirements. Therefore, it is important to review your
XML application to ensure that you have implemented a relevant
technique for each checkpoint in the WAI suite of accessibility
guidelines. For example, you could show how a (hypothetical)
instance of your application conforms to WCAG, how an authoring
tool which implements your application would enable an author to
create accessible content; how a user agent capable of supporting
your application must conform to UAAG, etc.
- Techniques for 4.8
- T4.8.1 Still
using the MenuML language, here are examples of WCAG
techniques
- WCAG checkpoint 1.1: Provide a text equivalent for
every non-text element
MenuML technique: use the content of the
photo
element to indicate the textual equivalent
of the picture.
- WCAG checkpoint 3.5: Use header elements to convey
document structure and use them according to specification.
MenuML technique: use the appetizer
element to introduce a new appetizer, not a para
and some bigger font
- 4.9 Do not assume that
element or attribute names provide any information about element
semantics.
- An element named may have a
fully contextualized meaning for the schema author, but is unlikely
to mean much to someone who does not speak the language of the
author. Equally, taken out of context, without semantic
explanation, element names often lose their meaning. Simply naming
an element is not enough to assure that document authors will
utilize that element in semantic conformance with the schema
authors intent. It is likely that confusion and misinterpretation
will arise if element or attribute names are relied upon to
document a schema.
- Techniques for 4.9
- TW4.9.1 For
example, using TREX, avoid colloquial element names.
Example: Wrong
<element name="paragraph">
<xsd:annotation>
<xsd:documentation>paragraph</xsd:documentation>
</xsd:annotation>
<empty/>
</element>
Here the element name has been described using the element name
only, which adds no semantic value.
T4.9.2
Example: Right
<element name="paragraph">
<xsd:annotation>
<xsd:documentation>The lowest level block container.
</xsd:documentation>
</xsd:annotation>
<empty/>
</element>
Here the element name has been described in an alternate form to
clarify semantics rather than re-enforce the name by repeating
it.
- 4.10 Document navigable
structures. Describe how discrete, sequential, structured, and search
navigation mechanisms should work.
- In order to navigate
around a significant document, it is helpful to the reader if they
know what elements are available for such navigation.
- Techniques for 4.10
- T4.10.1 Random
access to any part of a document via a detailed table of contents,
numbered headings which may be searched for, a hierarchical view
enabling fast access to sought parts, and a search capability aid
in this.
Appendices
Appendix A: Techniques Rationale
In the presentation of guidelines for XML accessibility, we try to
separate abstract guidelines from implementation techniques. This allows us
to talk about the general guideline principles without spending the time
up-front to solve the implementation issues.
In fact, there are several techniques for achieving the same result and
people's decision will be a function of time and product available and their
own commitment to access.
For instance, if an XML designer want to create some kind of "list"
element in a given markup, this can be implemented using various
techniques:
- using the XHTML namespace and its elements (e.g. xhtml:ul,
xhtml:li)
- invent new constructs but provide an XSLT binding (e.g. to a HTML UL/LI
pair of element)
- using XML/RDF Schema (if a list primitive is available; or through a
new schema if a primitive is unavailable)
- using Architectural forms with support for list semantics
- etc
The source of definitions used is the WAI Glossary [GLOSS]
Appendix C: Acknowledgments
In addition to the editors, the following people have contributed directly
to the content of this document:
Kynn Bartlett , Astrid Callista, Geoff Freed, Al Gilman, Vijay Gummadi,
Katie Haritos-Shea, Ian Jacobs, Chris Lilley, William Loughborough, Jim Ley,
Dave Pawson, Gregory J. Rosmaita, Michael Shaefer, Aaron Swartz and Carlos A.
Velasco.
- [ATAG10]
- "Authoring Tool Accessibility
Guidelines 1.0", J. Treviranus, C. McCathieNevile, I. Jacobs, and
J. Richards, eds., 3 February 2000. This W3C Recommendation is
http://www.w3.org/TR/2000/REC-ATAG10-20000203
- [ATAG10-TECHS]
- "Techniques for Authoring Tool
Accessibility Guidelines 1.0," J. Treviranus, J. Richards, I.
Jacobs, and C. McCathieNevile eds. The latest version is available at
http://www.w3.org/TR/ATAG10-TECHS
- [DC-elements]
- "Dublin Core Metadata
Element Set, Version 1.1: Reference Description" DCMI
Recommendation, 2 July 1999, available at
http://dublincore.org/documents/dces/
- [DTB]
- "Digital Talking
Book" ANSI/NISO specification Z39.86. Available at
http://www.loc.gov/nls/z3986/index.html
- [GLOSS]
- WAI Glossary. An internal
working draft. K Haritos-Shea, C. McCathieNevile, eds. Available at
http://www.w3.org/WAI/GL/Glossary/printable
- [HTML-access]
- "HTML 4.0 Accessibility
Improvements", I. Jacobs, J. Brewer, D. Dardailler. Available at
http://www.w3.org/WAI/References/HTML4-access
- [HTML-style]
- "A sample CSS style sheet for HTML
4.0" provided as an informative appendix to the CSS 2
specification. Available at http://www.w3.org/TR/CSS2/sample
- [SMIL-anim]
- "SMIL Animation", P. Schmitz, A.
Cohen eds. W3C Recommendation 4 September 2001, available at
http://www.w3.org/TR/2001/REC-smil-animation-20010904/
- [SVG-ACCESS]
- "Accessibility of Scalable Vector
Graphics", C. McCathieNevile, M.-R. Koivunen, eds. W3C Note
available at http://www.w3.org/TR/SVG-access. The latest editors'
version is available at http://www.w3.org/1999/09/SVG-access.
- [SVG10]
- "Scalable Vector Graphics 1.0
Specification", J. Ferraiolo, ed., 4 September 2001. This W3C
Recommendation is available at
http://www.w3.org/TR/2001/REC-SVG-20010904/
- [SVG10-access]
- SVG 1.0 Appendix H - Accessibility
Support. An appendix to the SVG 1.0 specification [SVG10] Available at
http://www.w3.org/TR/2001/REC-SVG-20010904/access
- [UAAG10]
- "User Agent Accessibility Guidelines,"
J. Gunderson, I. Jacobs, E. Hansen eds. The latest version of the User
Agent Accessibility Guidelines is available at
http://www.w3.org/WAI/UA/UAAG10.
- [UAAG10-TECHS]
- "Techniques for User Agent Accessibility
Guidelines 1.0," J. Gunderson, I. Jacobs, E. Hansen eds. The latest version of Techniques for User Agent
Accessibility Guidelines 1.0 is available at
http://www.w3.org/TR/UAAG10-TECHS/.
- [WCAG10]
- "Web Content Accessibility
Guidelines 1.0," W. Chisholm, G. Vanderheiden, and I. Jacobs, eds.,
5 May 1999. This Recommendation is
http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505. The latest version
is available at http://www.w3.org/TR/WCAG10/.
- [WCAG10-TECHS]
- "Techniques for Web Content Accessibility
Guidelines 1.0," W. Chisholm, G. Vanderheiden, and I. Jacobs, eds.
The latest version is available at
http://www.w3.org/TR/WCAG10-TECHS/.
- [XLINK]
- "XML Linking Language (XLink) Version 1.0",
S. DeRose, E. Maler, D. Orchard eds. W3C Recommendation 27 June 2001,
available at http://www.w3.org/TR/2001/REC-xlink-20010627/
- [XPTR]
- "XPointer Framework", P. Grosso, E.
Maler, J. Marsh, N. Walsh eds. The latest version of this W3C Working
draft is available at http://www.w3.org/TR/xptr-framework/
- [XSCHEMA]
- "XML Schema", D. Fallside ed. W3C
Recommendation 2 May 2001, available at
http://www.w3.org/TR/xmlschema-0/
- [XSL10]
- "Extensible Stylesheet Language (XSL)Version
1.0", S.Adler et al. W3C Recommendation 15 October 2001, available
at http://www.w3.org/TR/2001/REC-xsl-20011015/
These changes were decided by the PFWG based on the XAG issues list.
- Editorial Changes
- Changes were made to the text of several checkpoints:
- Checkpoint 2.8
- Checkpoint 2.11
- Checkpoint 3.1
- Checkpoint 4.2 (which was checkpoint 4.1)
- Checkpoint 4.6
- Checkpoints 4.1, 4.2 and 4.3 were reordered
- Major issues now noted in document
- The Abstract, Introduction and Problem Statement sections were
substantially rewritten
- New Section in Introduction: relation to other WAI guidelines
- Definition Section changed to reference to WAI glossary
- Change History added
- List of Checkpoints added as an appendix
- New References section
- Substantive Changes
- Checkpoint 2.11 added
- Checkpoint 1.3 merged into checkpoint 2.9
- Guideline 1: Ensure that authors can associate multiple media objects
as alternatives
- 1.1 Provide a mechanism to explicitly associate alternatives for
content or content fragments.
- 1.2 Define flexible associations, where a given kind of
relationship can link to or from objects of varying types without
constraint.
- Guideline 2. Create semantically-rich languages
- 2.1 Ensure all semantics are captured in markup in a
repurposable form.
- 2.2 Separate presentation properties using stylesheet
technology/styling mechanisms.
- 2.3 Use the standard XML linking and pointing mechanisms (XLink
and XPointer).
- 2.4 Define element types that allow classification and grouping
(header, section, list, etc).
- 2.5 Provide for a full containment model with chunks of
reasonable size.
- 2.6 Define element types that identify important text
content.
- 2.7 Provide a mechanism for identifying summary / abstract /
title.
- 2.8 Don't overload element and attribute names.
- 2.9 Reuse existing accessible modules, as originally specified /
intended.
- 2.10 Allow association of metadata with distinct elements and
groups of elements.
- 2.11 Specific checkpoint for Final-form applications.
- Guideline 3. Design an accessible user interface
- 3.1 Provide default style sheets for multiple output
modalities.
- 3.2 Define navigable structures that allow discrete, sequential,
structured, and search navigation functionalities.
- 3.3 Use CSS or XSLT to describe a basic outline view
- 3.4 Use a device-independent interaction and events model /
module.
- 3.5 Allow for user control of interaction timing - rate of
change, external events triggering document changes, etc.
- Guideline 4 Document and export semantics
- 4.1 Provide explicit human readable definitions for markup
semantics.
- 4.2 Ensure that at least one version of the XML application's
documentation conforms to at least level Double-A of the Web
Content Accessibility Guidelines 1.0 [WCAG10].
- 4.3 Provide a machine-understandable means/mechanism to get from
a document instance to the schema.
- 4.4 Use a schema language that can support explicit
human-readable documentation or annotation of semantics.
- 4.5 Provide semantic relationships to other schema where
appropriate and possible.
- 4.6 Document all features of the XML application that benefit
accessibility.
- 4.7 Include accessibility requirements in conformance
requirements.
- 4.8 Document techniques for WCAG, ATAG, and UAAG with respect to
the XML application.
- 4.9 Do not assume that element or attribute names provide any
information about element semantics.
- 4.10 Document navigable structures. Describe how discrete,
sequential, structured, and search navigation mechanisms should
work
[contents]


Enumeration members
AutoTaggingCancelled
AutoTaggingCancelled: = "AutoTaggingCancelled"
AutoTaggingFailed
AutoTaggingFailed: = "AutoTaggingFailed"
AutoTaggingInProgress
AutoTaggingInProgress: = "AutoTaggingInProgress"
AutoTaggingSucceeded
AutoTaggingSucceeded: = "AutoTaggingSucceeded"
AutoTaggingSucceededWithErrors
AutoTaggingSucceededWithErrors: = "AutoTaggingSucceededWithErrors"
BatchRenderingCompleted
BatchRenderingCompleted: = "BatchRenderingCompleted"
BatchRenderingCompletedWithErrors
BatchRenderingCompletedWithErrors: = "BatchRenderingCompletedWithErrors"
BatchRenderingFailed
BatchRenderingFailed: = "BatchRenderingFailed"
BatchRenderingInProgress
BatchRenderingInProgress: = "BatchRenderingInProgress"
BusinessRuleMessage
BusinessRuleMessage: = "BusinessRuleMessage"
ContentBackupRecoveryCancelled
ContentBackupRecoveryCancelled: = "ContentBackupRecoveryCancelled"
ContentBackupRecoveryCompleted
ContentBackupRecoveryCompleted: = "ContentBackupRecoveryCompleted"
ContentBackupRecoveryDraft
ContentBackupRecoveryDraft: = "ContentBackupRecoveryDraft"
ContentBackupRecoveryFailed
ContentBackupRecoveryFailed: = "ContentBackupRecoveryFailed"
ContentBackupRecoveryForcefullyCompleted
ContentBackupRecoveryForcefullyCompleted: = "ContentBackupRecoveryForcefullyCompleted"
ContentBackupRecoveryInProgress
ContentBackupRecoveryInProgress: = "ContentBackupRecoveryInProgress"
ContentBatchEditCompleted
ContentBatchEditCompleted: = "ContentBatchEditCompleted"
ContentBatchEditInProgress
ContentBatchEditInProgress: = "ContentBatchEditInProgress"
ContentBatchEditProgressCompletedWithErrors
ContentBatchEditProgressCompletedWithErrors: = "ContentBatchEditProgressCompletedWithErrors"
ContentBatchEditProgressFailed
ContentBatchEditProgressFailed: = "ContentBatchEditProgressFailed"
ContentDeactivateManyCompleted
ContentDeactivateManyCompleted: = "ContentDeactivateManyCompleted"
ContentDeactivateManyInProgress
ContentDeactivateManyInProgress: = "ContentDeactivateManyInProgress"
ContentDeactivateManyProgressCompletedWithErrors
ContentDeactivateManyProgressCompletedWithErrors: = "ContentDeactivateManyProgressCompletedWithErrors"
ContentDeactivateManyProgressFailed
ContentDeactivateManyProgressFailed: = "ContentDeactivateManyProgressFailed"
ContentOwnershipBatchEditCompleted
ContentOwnershipBatchEditCompleted: = "ContentOwnershipBatchEditCompleted"
ContentOwnershipBatchEditInProgress
ContentOwnershipBatchEditInProgress: = "ContentOwnershipBatchEditInProgress"
ContentOwnershipBatchEditProgressCompletedWithErrors
ContentOwnershipBatchEditProgressCompletedWithErrors: = "ContentOwnershipBatchEditProgressCompletedWithErrors"
ContentOwnershipBatchEditProgressFailed
ContentOwnershipBatchEditProgressFailed: = "ContentOwnershipBatchEditProgressFailed"
ContentPermissionsBatchEditCompleted
ContentPermissionsBatchEditCompleted: = "ContentPermissionsBatchEditCompleted"
ContentPermissionsBatchEditInProgress
ContentPermissionsBatchEditInProgress: = "ContentPermissionsBatchEditInProgress"
ContentPermissionsBatchEditProgressCompletedWithErrors
ContentPermissionsBatchEditProgressCompletedWithErrors: = "ContentPermissionsBatchEditProgressCompletedWithErrors"
ContentPermissionsBatchEditProgressFailed
ContentPermissionsBatchEditProgressFailed: = "ContentPermissionsBatchEditProgressFailed"
ContentUpdateManyCompleted
ContentUpdateManyCompleted: = "ContentUpdateManyCompleted"
ContentUpdateManyCompletedWithErrors
ContentUpdateManyCompletedWithErrors: = "ContentUpdateManyCompletedWithErrors"
ContentUpdateManyFailed
ContentUpdateManyFailed: = "ContentUpdateManyFailed"
ContentUpdateManyInProgress
ContentUpdateManyInProgress: = "ContentUpdateManyInProgress"
ExternalBusinessProcessMessage
ExternalBusinessProcessMessage: = "ExternalBusinessProcessMessage"
ImportCancelledMessage
ImportCancelledMessage: = "ImportCancelledMessage"
ImportCancelledWithFailedMessage
ImportCancelledWithFailedMessage: = "ImportCancelledWithFailedMessage"
ImportCompletedMessage
ImportCompletedMessage: = "ImportCompletedMessage"
ImportCompletedWithFailedMessage
ImportCompletedWithFailedMessage: = "ImportCompletedWithFailedMessage"
ImportFailedMessage
ImportFailedMessage: = "ImportFailedMessage"
ImportInProgressMessage
ImportInProgressMessage: = "ImportInProgressMessage"
ImportInProgressWithFailedMessage
ImportInProgressWithFailedMessage: = "ImportInProgressWithFailedMessage"
IndexActive
IndexActive: = "IndexActive"
IndexCancelled
IndexCancelled: = "IndexCancelled"
IndexClosed
IndexClosed: = "IndexClosed"
IndexCreate
IndexCreate: = "IndexCreate"
IndexDraft
IndexDraft: = "IndexDraft"
IndexInactive
IndexInactive: = "IndexInactive"
IndexReindexInProgress
IndexReindexInProgress: = "IndexReindexInProgress"
ListItemBatchEditCompleted
ListItemBatchEditCompleted: = "ListItemBatchEditCompleted"
ListItemBatchEditInProgress
ListItemBatchEditInProgress: = "ListItemBatchEditInProgress"
ListItemBatchEditProgressCompletedWithErrors
ListItemBatchEditProgressCompletedWithErrors: = "ListItemBatchEditProgressCompletedWithErrors"
ListItemBatchEditProgressFailed
ListItemBatchEditProgressFailed: = "ListItemBatchEditProgressFailed"
ListItemDeactivateManyCompleted
ListItemDeactivateManyCompleted: = "ListItemDeactivateManyCompleted"
ListItemDeactivateManyInProgress
ListItemDeactivateManyInProgress: = "ListItemDeactivateManyInProgress"
ListItemDeactivateManyProgressCompletedWithErrors
ListItemDeactivateManyProgressCompletedWithErrors: = "ListItemDeactivateManyProgressCompletedWithErrors"
ListItemDeactivateManyProgressFailed
ListItemDeactivateManyProgressFailed: = "ListItemDeactivateManyProgressFailed"
MetadataOutdatedItemsUpdateCompleted
MetadataOutdatedItemsUpdateCompleted: = "MetadataOutdatedItemsUpdateCompleted"
MetadataOutdatedItemsUpdateCompletedWithErrors
MetadataOutdatedItemsUpdateCompletedWithErrors: = "MetadataOutdatedItemsUpdateCompletedWithErrors"
MetadataOutdatedItemsUpdateFailed
MetadataOutdatedItemsUpdateFailed: = "MetadataOutdatedItemsUpdateFailed"
MetadataOutdatedItemsUpdateInProgress
MetadataOutdatedItemsUpdateInProgress: = "MetadataOutdatedItemsUpdateInProgress"
MetadataRelatedItemsBySchemaCompleted
MetadataRelatedItemsBySchemaCompleted: = "MetadataRelatedItemsBySchemaCompleted"
MetadataRelatedItemsBySchemaCompletedWithErrors
MetadataRelatedItemsBySchemaCompletedWithErrors: = "MetadataRelatedItemsBySchemaCompletedWithErrors"
MetadataRelatedItemsBySchemaFailed
MetadataRelatedItemsBySchemaFailed: = "MetadataRelatedItemsBySchemaFailed"
MetadataRelatedItemsBySchemaInProgress
MetadataRelatedItemsBySchemaInProgress: = "MetadataRelatedItemsBySchemaInProgress"
MetadataRelatedItemsCompleted
MetadataRelatedItemsCompleted: = "MetadataRelatedItemsCompleted"
MetadataRelatedItemsInProgress
MetadataRelatedItemsInProgress: = "MetadataRelatedItemsInProgress"
MetadataRelatedItemsProgressCompletedWithErrors
MetadataRelatedItemsProgressCompletedWithErrors: = "MetadataRelatedItemsProgressCompletedWithErrors"
MetadataRelatedItemsProgressFailed
MetadataRelatedItemsProgressFailed: = "MetadataRelatedItemsProgressFailed"
ReindexProgressCancelled
ReindexProgressCancelled: = "ReindexProgressCancelled"
ReindexProgressCompleted
ReindexProgressCompleted: = "ReindexProgressCompleted"
ReindexProgressCompletedWithErrors
ReindexProgressCompletedWithErrors: = "ReindexProgressCompletedWithErrors"
ReindexProgressDraft
ReindexProgressDraft: = "ReindexProgressDraft"
ReindexProgressFailed
ReindexProgressFailed: = "ReindexProgressFailed"
ReindexProgressInProgress
ReindexProgressInProgress: = "ReindexProgressInProgress"
SchemaImportCompletedMessage
SchemaImportCompletedMessage: = "SchemaImportCompletedMessage"
SchemaImportFailedMessage
SchemaImportFailedMessage: = "SchemaImportFailedMessage"
SchemaImportInProgressMessage
SchemaImportInProgressMessage: = "SchemaImportInProgressMessage"
ShareNewShareMessage
ShareNewShareMessage: = "ShareNewShareMessage"
StatisticsExportCancelled
StatisticsExportCancelled: = "StatisticsExportCancelled"
StatisticsExportCompleted
StatisticsExportCompleted: = "StatisticsExportCompleted"
StatisticsExportDraft
StatisticsExportDraft: = "StatisticsExportDraft"
StatisticsExportFailed
StatisticsExportFailed: = "StatisticsExportFailed"
StatisticsExportInProgress
StatisticsExportInProgress: = "StatisticsExportInProgress"
TransferCancelledMessage
TransferCancelledMessage: = "TransferCancelledMessage"
TransferCancelledWithFailedMessage
TransferCancelledWithFailedMessage: = "TransferCancelledWithFailedMessage"
TransferCompletedMessage
TransferCompletedMessage: = "TransferCompletedMessage"
TransferCompletedWithFailedMessage
TransferCompletedWithFailedMessage: = "TransferCompletedWithFailedMessage"
TransferInProgressMessage
TransferInProgressMessage: = "TransferInProgressMessage"
TransferInProgressWithFailedMessage
TransferInProgressWithFailedMessage: = "TransferInProgressWithFailedMessage"
UserEmailConflictSolved
UserEmailConflictSolved: = "UserEmailConflictSolved"
UserLockedMessage
UserLockedMessage: = "UserLockedMessage"
UserRegisteredMessage
UserRegisteredMessage: = "UserRegisteredMessage"
UserReviewedMessage
UserReviewedMessage: = "UserReviewedMessage"
UserTriggeredDeactivationRequestMessage
UserTriggeredDeactivationRequestMessage: = "UserTriggeredDeactivationRequestMessage"


Customer Interviews: Don't Let People Lie To You
-
by Anne Twilt
Innovation Consultant
Validation. It sounds easy enough... You have been working on your idea for weeks and you know it like the back of your hand. What you need to do now is go outside, find some people who belong to your target group, describe to them your concept and see how they react. No sweat, right?
Well actually, you’re wrong. There is an entire science behind how to conduct customer interviews. One reason why it isn't as simple as it sounds is because often the way you phrase your questions influences the answers you get, hence providing you with biased information.
It is hard to collect unbiased data. This is a well-known fact, heavily emphasized by numerous academics. And still, many of us tend to conveniently forget the rules of science when we start validating our innovation projects.
During a workshop I participated in some time ago, I learned about The Mom Test: a book about customer interviews and how to circumvent people from (unintentionally) lying to you. It is a small and comprehensive book, which I would recommend to anyone who wants to get busy with customer interviews. Here are a few tips I have found most helpful that you might want to keep in mind for next time (I know I would):
- An interview of 15 minutes should be enough to single out whether there is a real problem or need.
- Make sure to keep your ego out of the conversation. You are most probably very passionate about the idea and convinced that it's great. That doesn't matter now.  If you show your baby to the world, people are not going to tell you it is ugly. They will lie to you to avoid a conversation from becoming awkward.
- Do not start pitching your solution. Keep it more casual, dig for the problem and see if it’s really an issue your target group can relate to.
- Ask questions and genuinely listen. Do not only pay attention to the things you want to hear. You can discover a lot more useful information that you didn't even know to look for.
- Use the 5 Whys technique to get to the core of a need, problem or situation. This technique is remarkably simple: when a problem occurs, you uncover its nature and source by asking "why" no fewer than five times. Although it might feel awkward at first, you'll find that it works when you try it.
- Don't ask "would you do X" or “what would you pay for Y". It's easy for people to say yes, even if in reality they would never. Ask for factual behavior: "When did you last do X?" "Can you run me through an example of a situation in which you struggled with Y. How did you solve it?"
- Ignore compliments (that’s such a great idea; I love it; you are amazing; etc.) and search for forms of actual commitment. This doesn't necessarily have to be a financial commitment. Other forms of commitment can include time (a follow-up meeting or some hours of help) or access to a connection ("you should talk to Pieter, let me introduce you to him").
- Keep in mind that invalidation can save you (and potentially the organization you work for) lots of effort and money. Do not turn a deaf ear to negative feedback.
Remember that validation can take place anywhere. You can ask questions at your aunt's birthday party or while you're having a beer at the local bar. Be genuinely interested and ask a lot of whys. You can learn a lot about your target group interests and problems!


Tutorials for Learning Core Java
Greenfoot Introducting Java using 2d Animation
Princenton On-line Textbook
How To Do It In Java
W3 School Java Tutorial
Udacity Introduction to Java Course
Java Review in 60 Minutes
The Official Java Tutorials
Udemy Java Programming Masterclass for Software Developers (around $10.00)
Udemy Java Tutorial for Complete Beginners (free)
JavaBrains - Java and JavaScript Coverage
Beginners Book Java Tutorial
Good Reference Websites
Survival Guide from Java WEB20
Specific Lambda Java Class Info Done by a Former Student
Official Website for Spring
On Going Glossary for JX (started by Austin Howes)
TutorialsPoint Spring Framework
Geeks for Geeks Java Programming
Kode Java
Jenkov Tutorials
Good Blogs to Search and Follow
Baeldung
Spring Frame Work Guru
Callicoder
DZone
Pivotal Spring Blog
The Clean Coder
Harrison Brock - former student
Good Books
Java Methods - my go to book for Core Java
Code Dated but set the foundation for Java Spring
THE book on writing effective Java Code
Data Structures and Algorithms in Java
Cracking the Coding Interview
14 great Java books you need to read before you die
Other Useful Topics
R!OT - Leading our community in capturing IoT opportunties
An Introduction to Task-Oriented Programming
Top 5 machine learning libraries for Java
Build Your Own First Person Shooter / Survival Game in Unity Udemy (around $10.00)
High Scalability Websites
Telosys: The Simplest and Lightest Code Generator
GitHub
How to Unfork a repo on GitHub
GitHub Learning Lab
Scrum
Learn scrum with Jira Software
Life Cycle SDLC Scrum Step Step/
The Scrum Handbook
Jenkins
Build a Java app with Maven and Jenkins
Centralized Configuration
From Spring.io
Spring Cloud Configuration
Continous Integration
How to Use the Spring Config Server
Baeldung A Guide to Spring Boot Admin


|
Team 302 Robot
|
#include <Mech1IndMotor.h>
Public Member Functions | |
| Mech1IndMotor (MechanismTypes::MECHANISM_TYPE type, std::string controlFileName, std::string networkTableName, std::shared_ptr< IDragonMotorController > motorController) | |
| Create a generic mechanism wiht 1 independent motor. More... | |
| Mech1IndMotor ()=delete | |
| ~Mech1IndMotor () override=default | |
| MechanismTypes::MECHANISM_TYPE | GetType () const override |
| Indicates the type of mechanism this is. More... | |
| std::string | GetControlFileName () const override |
| indicate the file used to get the control parameters from More... | |
| std::string | GetNetworkTableName () const override |
| indicate the Network Table name used to setting tracking parameters More... | |
| void | ActivateLogging (units::second_t millisecondsBetweenLogging) override final |
| Activates logging key values to network table. More... | |
| void | DeactivateLogging () override final |
| Stop updating the key values to network table. More... | |
| void | LogData () override |
| log data to the network table if it is activated and time period has past More... | |
| void | Update () override |
| update the output to the mechanism using the current controller and target value(s) More... | |
| void | UpdateTarget (double target) override |
| double | GetPosition () const override |
| Return the current position of the mechanism. The value is in inches or degrees. More... | |
| double | GetSpeed () const override |
| Get the current speed of the mechanism. The value is in inches per second or degrees per second. More... | |
| void | SetControlConstants (ControlData *pid) override |
| Set the control constants (e.g. PIDF values). More... | |
| Public Member Functions inherited from IMech1IndMotor | |
| IMech1IndMotor ()=default | |
| virtual | ~IMech1IndMotor ()=default |
| Public Member Functions inherited from IMech | |
| IMech ()=default | |
| virtual | ~IMech ()=default |
Definition at line 40 of file Mech1IndMotor.h.
| Mech1IndMotor::Mech1IndMotor | ( | MechanismTypes::MECHANISM_TYPE | type, |
| std::string | controlFileName, | ||
| std::string | networkTableName, | ||
| std::shared_ptr< IDragonMotorController > | motorController | ||
| ) |
Create a generic mechanism wiht 1 independent motor.
| [in] | MechanismTypes::MECHANISM_TYPE | the type of mechansim |
| [in] | std::string | the name of the file that will set control parameters for this mechanism |
| [in] | std::string | the name of the network table for logging information |
| [in] | std::shared_ptr<IDragonMotorController> | motor controller used by this mechanism |
Definition at line 41 of file Mech1IndMotor.cpp.
|
delete |
|
overridedefault |
|
finaloverridevirtual |
Activates logging key values to network table.
| [in] | int | indicate how many millisecondsBetweenLogging updates to the network table |
Implements IMech.
Definition at line 81 of file Mech1IndMotor.cpp.
|
finaloverridevirtual |
Stop updating the key values to network table.
Implements IMech.
Definition at line 104 of file Mech1IndMotor.cpp.
|
overridevirtual |
indicate the file used to get the control parameters from
Implements IMech.
Definition at line 66 of file Mech1IndMotor.cpp.
|
overridevirtual |
indicate the Network Table name used to setting tracking parameters
indicate the network table name used to for logging parameters
Implements IMech.
Definition at line 74 of file Mech1IndMotor.cpp.
|
overridevirtual |
Return the current position of the mechanism. The value is in inches or degrees.
Implements IMech1IndMotor.
Reimplemented in ShooterHood.
Definition at line 127 of file Mech1IndMotor.cpp.
|
overridevirtual |
Get the current speed of the mechanism. The value is in inches per second or degrees per second.
Implements IMech1IndMotor.
Reimplemented in ShooterHood.
Definition at line 135 of file Mech1IndMotor.cpp.
|
overridevirtual |
Indicates the type of mechanism this is.
Implements IMech.
Definition at line 59 of file Mech1IndMotor.cpp.
|
overridevirtual |
log data to the network table if it is activated and time period has past
Implements IMech.
Definition at line 91 of file Mech1IndMotor.cpp.
|
overridevirtual |
Set the control constants (e.g. PIDF values).
| [in] | ControlData* | pid: the control constants |
Implements IMech1IndMotor.
Definition at line 145 of file Mech1IndMotor.cpp.
|
overridevirtual |
update the output to the mechanism using the current controller and target value(s)
Implements IMech1IndMotor.
Definition at line 109 of file Mech1IndMotor.cpp.
|
overridevirtual |
Implements IMech1IndMotor.
Definition at line 117 of file Mech1IndMotor.cpp.


Home
About
Services
Contact Us
Find Us
Contact Us
SEND US A MESSAGE
We would get in touch as soon as possible.
Submit


 Consider upgrading your plan!
Shortcuts
New content
Article
Document
Employee
New page
Single Content
Content List
New Content Type
Pages
5 of 10
Images
90 of 100
Content
20 of 1000
Content Types
3 of 5
Page Name
Page Name
Page Name
Hjem
Stuff


Introduction
I have been writing Raku Advent posts annually
since 2016 and it's always been a struggle for me
to get a reliable transformation of my source file
into the Raku Advent Wordpress (WP) website without something getting changed
by WP. Then, the menus are terrible and editing can
be troublesome. In this article I hope to show how the situation
can be improved.
Background
The great name change to Raku this year unfortunately happened late in the
year and there was not a lot of time to get a new Raku Advent website
ready. Consequently, theme selection and tweaking, confusion
over the actual Raku Advent website link, and unfortunate article
cancellations were wrinkles in the normally
smoother process. However, we plan to improve the website before
the 2020 Advent season, and also get commitments earlier with
concrete drafts available sooner. In the meantime, in this hastily prepared
stand-in article, I will go into a bit of detail on some help
we hope to offer.
Article creation
In past years I've created the articles in Gihub-flavored
markdown, manually (with the assistance of my Emacs editor)
converted each paragraph to single, long lines, and then posted it in a Github gist
After that, I used the tool, developed by Zoffix and modified by ??,
to extract the html from Github's representation of the
markdown which results in a nice highlighting of code
blocks. Finally, that html is copied and pasted into WP and a publishing
schedule set up. That process is outlined here:
- Write the post in Github-favored Markdown text
- Collapse each paragraph to one long line
- Paste the source into a Github gist
- Use the existing Advent tool to extract the resulting
html representation to one's local computer
- Copy the html and paste it into the blank, html
view of the selected WP editor
- View the finished product and check for errors
If errors are found:
- Correct the errors in the WP editor
OR
- correct the errors in the source
- repeat steps 2 through 6 again
That process is not so bad the first time though it, but when, inevitably,
errors are found, one has the choice of manually editing it on WP
or modifying the source and going through the entire process again!
Neither choice is very good. So I created a Raku tool to eliminate
some of the problems. My new steps as of this year:
- write the post in raw html
- run my Advent tool (make-wp-advent) to format the source
into WP-acceptable html
- copy the html and paste it into the blank, html
view of the selected WP editor
- view the finished product and check for errors
If errors are found:
- correct the errors in the WP editor
OR
- correct the errors in the source
- repeat steps 2 through 4 again
So, in my new process, I've eliminated a couple of steps, but
I still have to copy/paste my clean WP source into the WordPress
editor. I addition, I have not taken advantage of the various APIs
to do the heavy lifting.
Summary
This year has seen a lot of changes in the Raku community, especially
with the name change, and not all
are done yet. One area that still needs work is improving the new Raku
Advent website. We also hope to make it easier to create and post
Raku Advent articles as well as get more participation. Note the
2020 schedule is open now, so you can get your slot early and avoid
last minute shopping, er, Raku Adventing!
I ❤ ❤ Raku! 😊
Merry Christmas and a Happy New Year to all!
APPENDIX
Notes
References


We've brought together a list of sites and associations that may be of use to you. Check out these places below.
And thank you to our sponsors:


The ExpressionEntity is used to evaluate an expression. It is useful when a complicated expression is used in several different places. Instead of entering the expression several times, it is better to use an ExpressionEntity to evaluate the expression and then use its output Value to pass the result to other expressions.


Back
What happens next?
Integrate your code into your service
Visit the technical user documentation pages for instruction on how to integrate your component into your service.
Visit the technical user documentation pages for instruction on how to integrate your component into your service.


|
Pip-Services-Components-Dotnet
|
Interface for state storages that are used to store and retrieve transaction states. More...
Public Member Functions | |
| Task< T > | LoadAsync< T > (string correlationId, string key) |
| Loads state from the store using its key. If value is missing in the store it returns null. More... | |
| Task< List< StateValue< T > > > | LoadBulkAsync< T > (string correlationId, List< string > keys) |
| Loads an array of states from the store using their keys. More... | |
| Task< T > | SaveAsync< T > (string correlationId, string key, T value) |
| Saves state into the store. More... | |
| Task< T > | DeleteAsync< T > (string correlationId, string key) |
| Deletes a state from the store by its key. More... | |
Interface for state storages that are used to store and retrieve transaction states.
| Task<T> PipServices3.Components.State.IStateStore.DeleteAsync< T > | ( | string | correlationId, |
| string | key | ||
| ) |
Deletes a state from the store by its key.
| correlationId | (optional) transaction id to trace execution through call chain. |
| key | a unique value key. |
Implemented in PipServices3.Components.State.MemoryStateStore, and PipServices3.Components.State.NullStateStore.
| Task<T> PipServices3.Components.State.IStateStore.LoadAsync< T > | ( | string | correlationId, |
| string | key | ||
| ) |
Loads state from the store using its key. If value is missing in the store it returns null.
| correlationId | (optional) transaction id to trace execution through call chain. |
| key | a unique state key. |
Implemented in PipServices3.Components.State.MemoryStateStore, and PipServices3.Components.State.NullStateStore.
| Task<List<StateValue<T> > > PipServices3.Components.State.IStateStore.LoadBulkAsync< T > | ( | string | correlationId, |
| List< string > | keys | ||
| ) |
Loads an array of states from the store using their keys.
| correlationId | (optional) transaction id to trace execution through call chain. |
| keys | unique state keys. |
Implemented in PipServices3.Components.State.MemoryStateStore, and PipServices3.Components.State.NullStateStore.
| Task<T> PipServices3.Components.State.IStateStore.SaveAsync< T > | ( | string | correlationId, |
| string | key, | ||
| T | value | ||
| ) |
Saves state into the store.
| correlationId | (optional) transaction id to trace execution through call chain. |
| key | a unique state key. |
| value | a state value. |
Implemented in PipServices3.Components.State.MemoryStateStore, and PipServices3.Components.State.NullStateStore.


Thank you for your feedback!
Something went terribly wrong! Please make sure all required fields are filled.


Afrikaans
Albanian
Arabic
Azerbaijani
Basque
Belarusian
Bulgarian
Chinese
Croatian
Czech
Danish
Chinese (Mandarin)
Czech
Danish
Dutch
English
Estonian
French
Georgian
German
Hindi
Hungarian
Italian
Japanese
Latin
Latvian
Lithuanian
Norwegian
Polish
Portuguese
Romanian
Russian
Serbian
Slovak
Slovenian
Spanish
Swedish
Turkish
Ukranian
Vietnamese
Welsh
Afrikaans
Albanian
Arabic
Azerbaijani
Basque
Belarusian
Bulgarian
Chinese
Croatian
Czech
Danish
Chinese (Mandarin)
Czech
Danish
Dutch
English
Estonian
French
Georgian
German
Hindi
Hungarian
Italian
Japanese
Latin
Latvian
Lithuanian
Norwegian
Polish
Portuguese
Romanian
Russian
Serbian
Slovak
Slovenian
Spanish
Swedish
Turkish
Ukranian
Vietnamese
Welsh


--- title: tsai keywords: fastai sidebar: home_sidebar summary: "Practical Deep Learning for Time Series / Sequential Data package built with fastai v2/ Pytorch." description: "Practical Deep Learning for Time Series / Sequential Data package built with fastai v2/ Pytorch." nb_path: "nbs/index.ipynb" ---
tsai
is a deep learning package built on top of fastai v2 / Pytorch focused on state-of-the-art methods for time series classification and regression.
If you are looking for timeseriesAI based on fastai v1, it's been moved to timeseriesAI1.
tsai
2.0 is a major update to the tsai library. These are the major changes made to the library:
The best way to discocer and understand how to use this new functionality is to use the tutorial nbs. I encourage you to use them!
You can install the latest stable version from pip:
pip install tsai
Or you can install the bleeding edge version of this library from github by doing:
pip install git+https://github.com/timeseriesAI/timeseriesAI.git@master
To get to know the tsai
package, I'd suggest you start with this notebook:
01_Intro_to_Time_Series_Classification
It provides an overview of a time series classification problem using fastai v2.
If you want more details, you can get them in nbs 00 and 00a.
To use tsai in your own notebooks, the only thing you need to do after you have installed the package is to add this:
from tsai.all import *


Coming Soon!
if(strcmp("Code Combat", event)==0)
{
printf("Play Couter Strike \n Code");
printf("Play Couter Strike \n Code");
}|
if(strcmp("Code Combat", event)==0)
{
printf("Play Couter Strike \n Code");
printf("Play Couter Strike \n Code");
}|
Code Combat, an amalgamation of gaming and coding. To gain enough amount of time to solve as many competitive coding problems, something of equal value must be given. Come join us in teams of three and find out the value of your coding time. In this heat, all you need to do is play your favourite game in an A/C room for 10 hours with friends and food and a possibility of winning cash prize! Register Now! ₹300 per team only.
We will be more than happy to hear from you!
For more details, follow our Facebook page and stay tuned!
The Registration Fee is ₹300 per team only. Online Registration will open soon! You can register now at our registration desk in SJT.


SPRING Integration module
NativeBeanPropertyMapper
public class Supplier {
// properties, getters and setters, etc.
}
SpringNativeCriteria nc = new SpringNativeCriteria(new JpaQueryProvider(entityManager), "SUPPLIER", "s")
.setProjection(NativeExps.projection().addProjection(
"s.id as id",
"s.name as name",
"s.first_name as firstName",
"s.last_name as lastName",
"s.vat_identification_number as vat_identification_number"
"s.phone_number as phonenumber",
"s.email as email")
.setOrder(NativeExps.order().add("s.id", NativeOrderExp.OrderType.ASC));
NativeBeanPropertyMapper<SupplierDTO> mapper = NativeBeanPropertyMapper.newInstance(SupplierDTO.class);
List<SupplierDTO> results = nc.criteriaResult(mapper);
Pageable support
SpringNativeCriteria nc = new SpringNativeCriteria(new JpaQueryProvider(entityManager), "SUPPLIER", "s")
.addJoin(NativeExps.innerJoin("ADDRESS", "a", "a.supplier_id", "s.id"));
.setProjection(NativeExps.projection().addProjectionWithAliases(
"s.id as id",
"a.city as city",
"s.name as name"
));
Page<SupplierWithAddress> suppliers = nc.criteriaResult("a.id", NativeBeanPropertyMapper.newInstance(SupplierWithAddress.class),
new PageRequest(0, 2, new Sort(new Sort.Order(Sort.Direction.ASC, "s.id"))));
List<SupplierWithAddress> pageContent = suppliers.getContent();


×
1. Get Hindi Movie Recommendations
Mike can give recommendations for about 200 IMDb 7+ rated bollywood movies released in 2010 to 2019.
>>movies like 'movie-title'
2. Get movie plot
>>about 'movie-title'
Try these movie titles -
trapped, gone kesh, karthik calling karthik, my name is khan, english vinglish,
delhi belly, highway, kabir singh, udaan, zindagi na milegi dobara...
3. Easter eggs
>> who are you?
4. How bot understands user's request
Intent: Intent of the user detected by bot.
Confidence: Confidence of the intent detection
Unk Percent: Percent of unknown words in user's request (out of vocab words)


All
admin
employee
client
Note :Mobile number is not searchable and sortable
Id
First Name
User Name
E-Mail
Mobile No
Position
Delete
Id
First Name
User Name
E-Mail
Mobile No
Position


Mixed precision training¶
Increasing the size of a neural network typically improves accuracy but also increases the memory and compute requirements for training the model. We introduce methodology for training deep neural networks using half-precision floating point numbers, without losing model accuracy or having to modify hyperparameters. This nearly halves memory requirements and, on recent GPUs, speeds up arithmetic. …
DNN operations benchmarked with DeepBench on Volta GPU see 2-6x speedups compared to FP32 implementations if they are limited by memory or arithmetic bandwidth. Speedups are lower when operations are latency-limited.
—“Mixed Precision Training”, Micikevicius et al, ICLR, 2018 [1]
Prerequisites¶
Mixed precision training utilizes Tensor Cores introduced in NVIDIA Volta GPUs such as Titan V and Tesla V100. NVIDIA Volta GPUs are also available from AWS on p3.2xlarge, p3.8xlarge, p3.16xlarge instances .
For an optimal mixed precision performance we recommend using NVIDIA’s TensorFlow docker containers (version 18.03 and above) which can be obtained here: NVIDIA GPU cloud . Alternatively, you can build TensorFlow yourself with CUDA 9.1 and this PR included:
How to enable mixed precision¶
Enabling mixed precision with existing models in OpenSeq2Seq is simple:
change dtype
parameter of model_params
to “mixed”.
You might need to enable loss scaling: either statically, by setting
loss_scale
parameter inside model_params
to the desired number, or
you can use dynamic loss scaling by setting automatic_loss_scaling
parameter
to “Backoff” or “LogMax”:
base_params = {
...
"dtype": "mixed",
# enabling static or dynamic loss scaling might improve model convergence
# "loss_scale": 10.0,
# "automatic_loss_scaling": "Backoff",
...
}
Implementation details¶
For mixed precision training we follow an algorithmic recipe from Micikevicius et al [1]. At a high level it can be summarized as follows:
- Maintain and update a float32 master copy of weights (using the float16 copy for forward and back propagation)
- Apply loss scaling while computing gradients
It is worth mentioning that (1)-(2) are not always necessary. However, this method has proven to be robust across a variety of bigger and more complex models.
Note that while (1) does mean a 50% increase in memory consumption for weights over a float32 version, in practice, the total memory consumption is often decreased. This is because activations, activation gradients, and other intermediate tensors can now be kept in float16. This is especially beneficial for models with a high degree of parameter sharing or reuse, such as recurrent models with many timesteps.
Optimizer¶
Our implementation is different from the one described in
NVIDIA documentation:
instead of a custom variable getter, we introduce a wrapper around standard
TensorFlow optimizers. The model is created with float16 data type, so all
variables and gradients are in float16 by default (except for the layers which
are explicitly redefined as float32; for example data layers or operations on
CPU). The wrapper then converts float16 gradients to float32 and submits them
to TensorFlow’s optimizer, which updates the master copy of weights. Updated
weights are converted back to float16, and used by the model in the next
iteration. The MixedPrecisionOptimizerWrapper
architecture is graphically illustrated below:
Regularizers¶
MixedPrecisionOptimizerWrapper
ensures that all float16 variables will have
a master copy in float32 and that their gradients will be cast to the full
precision before computing the weight update. While this is enough in most
situations, in some cases it is important to keep the gradient in float32 from
the beginning of the computation. One common case when this is necessary is
weight decay regularization. This regularization results in the following
addition to the usual gradients with respect to the loss:
\(\frac{\partial L}{\partial w} \mathrel{+}= 2\lambda w\),
where \(\lambda\) is usually on the order of
\(\left[10^{-5}, 10^{-3}\right]\).
Given that the weights are commonly initialized with small values, multiplying
them with weight decay coefficient $lambda$ can result in numerical underflow.
To overcome this problem we implemented the following design principles. First,
all regularizers should be defined on the variable creation level by passing
regularizer function as a regularizer parameter to the tf.get_variable
function or tf.layers
objects (this is a recommended way to do it in
TensorFlow). Second, the regularizer function should be wrapped with
mp_regularizer_wrapper
function which will do two things. First, it
will add weights and the user-provided regularization function to the TensorFlow
collection. And second, it will disable the underlying regularization function
by returning None (only if the weights are in float16, otherwise it will not
introduce any additional behavior). The created collection will later be
retrieved by MixedPrecisionOptimizerWrapper
and the corresponding
functions will be applied to the float32 copy of the weights ensuring that their
gradients always stay in the full precision. Since this regularization will not
be a part of the loss computation graph, we explicitly call tf.gradients
and add the result to the gradients passed in the compute_gradients
function of the optimizer.
Automatic Loss Scaling¶
The mixed precision training approach of Micikevicius et al [1] suggests that the user set a loss scale hyperparameter to adjust the dynamic range of backpropagation to match the dynamic range of float16. OpenSeq2Seq implements an extension to the mixed precision recipe that we call automatic loss scaling. The optimizer inspects the parameter gradients at each iteration and uses their values to select the loss scale for the next iteration. As a result, the user does not have to select the loss-scale value manually. Concretely, OpenSeq2Seq has support for two automatic loss scaling algorithms, Backoff and LogNormal scaling.
- Backoff scaling begins with a large loss scale and checks for overflow in the parameter gradients at the end of each iteration. Whenever there is an overflow, the loss scale decreases by a constant factor (default is 2) and the optimizer will skip the update. Furthermore, if there has been no overflow for a period of time, the loss scale increases by a constant factor (defaults are 2000 iterations and 2, respectively). These two rules together ensure both that the loss scale is as large as possible and also that it can adjust to shifting dynamic range during training.
- LogNormal scaling uses gradient statistics, rather than the presence of overflow, to set the loss scale. It keeps a running estimate of the mean and variance of the inter-iteration maximum absolute value of the parameter gradients. It models the inter-iteration maximum as log-normally distributed (hence the name), and then chooses the loss scale for the next iteration s.t. the probability of the maximum overflowing float16 is less than some constant (default is 0.001). In the rare event of an overflow, the optimizer skips the update.
| [1] | (1, 2, 3) Paulius Micikevicius, Sharan Narang, Jonah Alben, Gregory Diamos, Erich Elsen, David Garcia, Boris Ginsburg, Michael Houston, Oleksii Kuchaev, Ganesh Venkatesh, and others. Mixed precision training. arXiv preprint arXiv:1710.03740, 2017. |


controls:
- mouse click position on entity surface to look at that position
- mouse shift-click entity to fit it to view
- mouse click empty space to fit entire scene to view
- mouse drag or arrow keys to orbit camera
- keys Z,X - pan forwards and backwards
- keys A,D - pan left and right
- keys W,S - pan up and down
- keys 1,2,3,4,5,6 - select axis-aligned view
- mouse wheel or '+' and '-' keys to zoom in and out


Just as the worlds precious artworks and monuments need a touch-up to look their best, the home weve built to host the worlds cultural treasures online needs a lick of paint every now and then. Were ready to pull off the dust sheets and introduce the new
Google Arts & Culture
website and app, by the Google Cultural Institute. The app lets you explore anything from
cats in art since 200 BCE
to the
color red in Abstract Expressionism
, and everything in between.
Our new tools will help you discover works and artifacts, allowing you to immerse yourself in cultural experiences across art, history and wonders of the worldfrom more than a thousand museums across 70 countries:
Search for anything, from
shoes
to
all things gold
Scroll through art by timesee how
Van Goghs works went from gloomy to vivid
Browse by color and learn about
Monets 50 shades of gray
Find a new fascinating story to discover every day
today, its nine powerful men in heels
With a virtual reality viewer like
Google Cardboard
, you can use the Google Arts & Culture app on
iOS
and
Android
to
take a virtual tour of the street art scene in Rome
; step inside a creation by famous street artist, Insa; or even travel 2,500 years back in time and
look around the ancient Greek temple of Zeus
.
You can also subscribe to the new
Google Arts & Culture
YouTube channel. Find out
what Kandinsky and Kanye West have in common
and
meet the New York-based cyborg artist Neil Harbisson
.
Were sure youll want to see some of the artworks in real life tooand the Google Arts & Culture app is there to help. Click Visit on a museums page to get opening times, find out whats on that day and navigate there in one click. Weve also been experimenting with a new feature. The Art Recognizer is now available in Londons
Dulwich Picture Gallery
, Sydneys
Art Gallery of New South Wales
and the
National Gallery of Art
in Washington DC. Just pull up the app, point your phones camera to a painting on display and find all the information you want to know about the artwork. Were planning to roll this out to museums around the worldso stay tuned.


Find gateway URL and connect
function Connect(): void
This method will go and determine the suitable gateway bot endpoint and establish a WebSocket connection. This method
will trigger a READY
event if it successfully found a suitable URL and established a gateway connection.
It will fire a DISCONNECT
event if there was an error during the connection flow and a connection
could not be established.
| Handling Events |
|


--- layout: archive title: Zulip Chat Archive permalink: /stream/144837-PR-reviews/topic/.23480.20Yoneda.20fixes.html ---
Travis seems to be screwing something up with https://github.com/leanprover/mathlib/pull/480. It’s complaining about invalid imports in files that aren’t even in this PR anymore. @Mario Carneiro, are you able to reset it somehow?
@Scott Morrison have you tried clearing the cache for that branch? I think I can do it
Ah, I thought only some people could do that. If you see how to do it, teach me. :-)
https://travis-ci.org/leanprover-community/mathlib/caches
And just click the lil bin
I retriggered a build
after
We can because everything is really on mathlib-community, which we can push to
Thanks @Keeley Hoek. Curiously this doesn't seem to have fixed the PR, however. :-(
Ah yes
But it did build successfully
https://travis-ci.org/leanprover-community/mathlib/builds/460592170
I was wrong about it updating the thingo for the main repo though
Okay, I'll just push a whitespace change and see if that fixes things.
@Mario Carneiro could you restart the build for #480 on travis? I've tried deleting caches, force pushing again, etc. but it won't rebuild and the error message is nonsense (because of the cache).
Ok, this is ready.
It just does two small things: a few lemmas about
def ulift_functor : (Type u) ⥤ (Type (max u v))
and states as a separate lemma the componentwise version of the Yoneda lemma:
@[simp] def yoneda_sections (X : C) (F : Cᵒᵖ ⥤ Type v₁) : (yoneda.obj X ⟹ F) ≅ ulift.{u₁} (F.obj X)
Oh -- and adds the definition of representable
, which will be needed shortly for the limits PRs.
Last updated: Apr 24 2020 at 19:02 UTC


Wicklet is a playground for hacking Wicket and GWT. Wicket is a Java web applications framework that use plain Java with HTML templates to provide a component model and handle client/server interactions. With full power of the Java programming language, it is much easier to create custom components, add behaviors, and create highly interactive AJAX enabled web applications. GWT is a Java to Javascript compiler that allows client side logic to be coded in Java. It also provide a client side UI framework. Wicklet consists of a number of sub-projects that hacks, enhances or uses Wicket and GWT.
See the projects section for more details.
See the sources section for building and running instructions.


DroidWeight v. 1.5.4
#25
not export correctly
```What steps will reproduce the problem?1. Export of data2. open in Excel3.What is the expected output? What do you see instead?Weights are displayed incorrectly, for example wrong: 86.500.015 correct: 86.5 wrong: 8.680.001 correct: 86.8What version of the product are you using? On what operating system?Galaxy S2, Version 4.04Please provide any additional information below.Incorrect subsequent manual input, but new entries incorrectly```Original issue reported on code.google.com by<EMAIL_ADDRESS>on 11 Feb 2013 at 10:49Attachments:- [data.csv](https://storage.googleapis.com/google-code-attachments/droidweight/issue-25/comment-0/data.csv)
2 Quality Assessment of the Bug Report
Legend for the Quality Annotations
Exact Match: EM
Ambiguous Step: AS
Vocabulary Mismatch: VM
Incorrect Input Value: IV
Missing Steps: MS
#
Identified Step to Reproduce (S2R)
Quality Annotations for the S2R
1
Export of data
EM This S2R matches the following app interaction:
Tap the "title (Export Data)" text view
MS There are app interactions that are missing in the bug report and should be executed before this S2R:
Tap the "minusminus" image button
Tap the "minus" image button
Tap the "plus" image button
Tap the "plusplus" image button
Tap the "Statistics" view
Tap the "title (Statistics)" text view
Tap the "label (obese)" text view
Tap the "range overweight" table row
Tap the "label (overweight)" text view
Tap the "unit" text view
Tap the "label (normal)" text view
Tap the "unit" text view
Press the menu button
2
Open in Excel
VM The term "in Excel" does not match a GUI component from the app.


Next: simple-base-string, Previous: base-string, Up: Strings Dictionary
simple-string, string, vector, simple-array, array, sequence, t
A simple string is a specialized one-dimensional simple array whose elements are of type character or a subtype of type character. When used as a type specifier for object creation, simple-string means (simple-array character (size)).
Abbreviating.
(simple-string
{[size]})
size—a non-negative fixnum, or the symbol *.
This denotes the union of all types (simple-array c (size)) for all subtypes c of character; that is, the set of simple strings of size size.


datamash
Tool to perform basic numeric, textual and statistical operations on input textual data files.
More information: home page
- Get max, min, mean and median of a single column of numbers:
seq 3 | datamash max 1 min 1 mean 1 median 1
- Get the mean of a single column of float numbers (floats must use "," and not "."):
echo -e '1.0\n2.5\n3.1\n4.3\n5.6\n5.7' | tr '.' ',' | datamash mean 1
- Get the mean of a single column of numbers with a given decimal precision:
echo -e '1\n2\n3\n4\n5\n5' | datamash -R number_of_decimals_wanted mean 1
- Get the mean of a single column of numbers ignoring "Na" and "NaN" (literal) strings:
echo -e '1\n2\nNa\n3\nNaN' | datamash --narm mean 1


Pixel Drawer
HTML5 support
Back ground
+
Begin drawing
Eraser
Clear
Save
Restore
Exported json fomart pixel image:


Ruins Details
Vatadage in Polonnaruwa
A circular relic house possesses an elegance and beauty that is rare even in ancient Sri Lanka.
In line with the outer circle of stone pillars is a tastefully ornamented screen wall patterned with four petalled flowers.
The access stairs at the cardinal points are beautifully carved. At the head of each flight is a Buddha statue in stone. Vatadage is lavished with moonstones and guard stones.


request settings:
Choose request method
GET
POST
PUT
DELETE
Choose request content type
application/x-www-form-urlencoded
multipart/form-data
text/plain
Choose response content type
xml
html
script
json
jsonp
text
Send


RDISC
Section: System Manager's Manual: iputils (8)Updated: 19 July 2011
Index Return to Main Contents
NAME
rdisc - network router discovery daemonSYNOPSIS
rdisc [ -abdfstvV] [ send_address] [ receive_address]
DESCRIPTION
rdisc implements client side of the ICMP router discover protocol. rdisc is invoked at boot time to populate the network routing tables with default routes.
rdisc listens on the ALL_HOSTS (<IP_ADDRESS>) multicast address (or receive_address provided it is given) for ROUTER_ADVERTISE messages from routers. The received messages are handled by first ignoring those listed router addresses with which the host does not share a network. Among the remaining addresses the ones with the highest preference are selected as default routers and a default route is entered in the kernel routing table for each one of them.
Optionally, rdisc can avoid waiting for routers to announce themselves by sending out a few ROUTER_SOLICITATION messages to the ALL_ROUTERS (<IP_ADDRESS>) multicast address (or send_address provided it is given) when it is started.
A timer is associated with each router address and the address will no longer be considered for inclusion in the the routing tables if the timer expires before a new advertise message is received from the router. The address will also be excluded from consideration if the host receives an advertise message with the preference being maximally negative.
Server side of router discovery protocol is supported by Cisco IOS and by any more or less complete UNIX routing daemon, f.e gated.
OPTIONS
- -a
- Accept all routers independently of the preference they have in their advertise messages. Normally rdisc only accepts (and enters in the kernel routing tables) the router or routers with the highest preference.
- -b
- Opposite to -a, i.e. install only router with the best preference value. It is default behaviour.
- -d
- Send debugging messages to syslog.
- -f
- Run rdisc forever even if no routers are found. Normally rdisc gives up if it has not received any advertise message after after soliciting three times, in which case it exits with a non-zero exit code. If -f is not specified in the first form then -s must be specified.
- -s
- Send three solicitation messages initially to quickly discover the routers when the system is booted. When -s is specified rdisc exits with a non-zero exit code if it can not find any routers. This can be overridden with the -f option.
- -t
- Test mode. Do not go to background.
- -v
- Be verbose i.e. send lots of debugging messages to syslog.
- -V
- Print version and exit.
HISTORY
This program was developed by Sun Microsystems (see copyright notice in source file). It was ported to Linux by Alexey Kuznetsov<EMAIL_ADDRESS>It is now maintained by YOSHIFUJI Hideaki<EMAIL_ADDRESS>SEE ALSO
REFERENCES
Deering, S.E.,ed "ICMP Router Discovery Messages", RFC1256, Network Information Center, SRI International, Menlo Park, Calif., September 1991.
SECURITY
rdisc requires CAP_NET_RAWIO to listen and send ICMP messages and capability CAP_NET_ADMIN to update routing tables.
AVAILABILITY
rdisc is part of iputils package and the latest versions are available in source form at http://www.skbuff.net/iputils/iputils-current.tar.bz2.
Index
This document was created by man2html, using the manual pages.
Time: 05:34:29 GMT, December 24, 2015


System administrator,Web developer,App developer,And a bit of a designer.
Sysadmin by day, developer by night.


Chest Xray - PICC
Single oblique view of the chest.
Clinical information
Evaluate PICC placement.
Comparison
None.
Findings
Left
Right
PICC, with tip
.
Impression