<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns="http://www.imsglobal.org/xsd/accessibility/accpnpv2p0/imsafapnp_v2p0"
    targetNamespace="http://www.imsglobal.org/xsd/accessibility/accpnpv2p0/imsafapnp_v2p0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:sch="http://purl.oclc.org/dsdl/schematron"
    version=""
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:annotation>
        <xs:documentation>
            XSD Data File Information
            -------------------------
            Author:         Colin Smythe (IMS GLC)
            Date:           30th April, 2010
            Version:        2.0
            Status:         Final Release
            Description:    This is the PSM for the Access For All Personal Needs and Preferences 
                            for Digital Delivery data model.

            History:        Version 2.0: This supercedes the original ACCLIP version 1.0 data model.
                            This version is consistent with ISO/IEC 247510-2:2008(E) Standard.

            License:        IPR, License and Distribution Notices

                            This machine readable file is derived from IMS Global Learning Consortium (GLC) specification IMS [spec name] Version [x.x]
                            found at http://www.imsglobal.org/[xxx] and the original IMS GLC schema binding or code base
                            http://www.imsglobal.org/[binding document].

                            Recipients of this document are requested to submit, with their comments, notification of any
                            relevant patent claims or other intellectual property rights of which they may be aware that might be
                            infringed by the schema binding contained in this document.

                            IMS GLC takes no position regarding the validity or scope of any intellectual property or other
                            rights that might be claimed to pertain to the implementation or use of the technology described in this
                            document or the extent to which any license under such rights might or might not be available; neither
                            does it represent that it has made any effort to identify any such rights. Information on IMS GLCs
                            procedures with respect to rights in IMS GLC specifications can be found at the IMS GLC Intellectual Property
                            Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.

                            Copyright © IMS Global Learning Consortium 1999-2010. All Rights Reserved.

                            License Notice for Users

                            Users of products or services that include this document are hereby granted a worldwide, royalty-free, 
                            non-exclusive license to use this document. 

                            Distribution Notice for Developers

                            Developers of products or services that are not original incorporators of this document and 
                            have not changed this document, that is, are distributing a software product that incorporates this 
                            document as is from a third-party source other than IMS, are hereby granted permission to copy,
                            display and distribute the contents of this document in any medium for any purpose without fee or 
                            royalty provided that you include this IPR, License and Distribution notice in its entirety on ALL
                            copies, or portions thereof.

                            Developers of products or services that are original incorporators of this document and wish 
                            to provide distribution of this document as is or with modifications and developers of products and 
                            services that are not original incorporators of this document and have changed this document, are
                            required to register with the IMS GLC community on the IMS GLC website as described in the following two
                            paragraphs:-

                            *  If you wish to distribute this document as is, with no modifications, you are hereby granted 
                               permission to copy, display and distribute the contents of this document in any medium for any 
                               purpose without fee or royalty provided that you include this IPR, License and Distribution notice in
                               its entirety on ALL copies, or portions thereof, that you make and you complete a valid license 
                               registration with IMS and receive an email from IMS granting the license. To register, follow the 
                               instructions on the IMS website: http://www.imsglobal.org/specificationdownload.cfm. Once 
                               registered you are granted permission to transfer unlimited distribution rights of this document for the 
                               purposes of third-party or other distribution of your product or service that incorporates this 
                               document as long as this IPR, License and Distribution notice remains in place in its entirety; 

                            *  If you wish to create and distribute a derived work from this document, you are hereby 
                               granted permission to copy, display and distribute the contents of the derived work in any medium for 
                               any purpose without fee or royalty provided that you include this IPR, License and Distribution 
                               notice in its entirety on ALL copies, or portions thereof, that you make and you complete a valid 
                               profile registration with IMS GLC and receive an email from IMS GLC granting the license. To register, follow
                               the instructions on the IMS GLC website: http://www.imsglobal.org/profile/. Once registered you are 
                               granted permission to transfer unlimited distribution rights of the derived work for the purposes of 
                               third-party or other distribution of your product or service that incorporates the derived work as long 
                               as this IPR, License and Distribution notice remains in place in its entirety. 

                            The limited permissions granted above are perpetual and will not be revoked by IMS GLC or its 
                            successors or assigns.

                            THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, ANY WARRANTY OF NONINFRINGEMENT IS
                            EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION SHALL BE MADE ENTIRELY AT THE IMPLEMENTERS OWN RISK, AND NEITHER THE CONSORTIUM
                            NOR ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER OR THIRD PARTY FOR ANY DAMAGES OF
                            ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING FROM THE USE OF THIS SPECIFICATION.

            Source UML File Information
            ---------------------------
            The source file information must be supplied as an XMI file (without diagram layout information).
            The supported UML authoring tools are:
            (a) Poseidon – v6 (and later)

            Source XSLT File Information
            ----------------------------
            XSL Generator:    UMLtoXSDTransformv0p9.xsl
            XSLT Processor:   Xalan
            Release:          1.0 Beta 3
            Date:             31st May, 2009

            IMS GLC Auto-generation Binding Tool-kit (I-BAT)
            ------------------------------------------------
            This file was auto-generated using the IMS GLC Binding Auto-generation Tool-kit (I-BAT).  While every
            attempt has been made to ensure that this tool auto-generates the files correctly, users should be aware
            that this is an experimental tool.  Permission is given to make use of this tool.  IMS GLC makes no
            claim on the materials created by third party users of this tool.  Details on how to use this tool
            are contained in the IMS GLC "I-BAT" Documentation available at the IMS GLC web-site.

            Tool Copyright:  2005-2010 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
        </xs:documentation>
    </xs:annotation>

    <xs:annotation>
        <xs:documentation>
            Schematron Strict Selection Validation Rules
            --------------------------------------------
            This is the set of Schematron rules that have been created to enforce the use of the "Unordered" stereotype.
            These rules ensure that the number of entries in an unordered complexType of an element obey the multiplicity constraints.
            This is required so that any-order/any-multiplicity complexTypes can be constructed and validated.
        </xs:documentation>
        <xs:appinfo>
            <sch:ns uri="http://www.imsglobal.org/xsd/accessibility/accpnpv2p0/imsafapnp_v2p0" prefix="apnp"/>
            <sch:title>Schematron validation rules for the enforcement of the Unordered stereotype.</sch:title>

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="AccessForAllUser.Type">
                <sch:title>[RULESET] For the AccessForAllUser.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser">

                    <sch:assert test="count(apnp:language) = 0 or count(apnp:language) = 1">
                        [RULE for Root Class Attribute 1] Invalid number of "language" elements: <sch:value-of select="count(apnp:language)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:display) = 0 or count(apnp:display) = 1">
                        [RULE for Root Class Attribute 2] Invalid number of "display" elements: <sch:value-of select="count(apnp:display)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:control) = 0 or count(apnp:control) = 1">
                        [RULE for Root Class Attribute 3] Invalid number of "control" elements: <sch:value-of select="count(apnp:control)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:content) = 0 or count(apnp:content) = 1">
                        [RULE for Root Class Attribute 4] Invalid number of "content" elements: <sch:value-of select="count(apnp:content)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Content.Type">
                <sch:title>[RULESET] For the Content.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:content">

                    <sch:assert test="count(apnp:adaptationPreference) = 0 or count(apnp:adaptationPreference) = 1">
                        [RULE for Local Attribute 1] Invalid number of "adaptationPreference" elements: <sch:value-of select="count(apnp:adaptationPreference)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:colourCodingAvoidance) = 0 or count(apnp:colourCodingAvoidance) = 1">
                        [RULE for Local Attribute 2] Invalid number of "colourCodingAvoidance" elements: <sch:value-of select="count(apnp:colourCodingAvoidance)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:hazard) = 0 or count(apnp:hazard) = 1">
                        [RULE for Local Attribute 3] Invalid number of "hazard" elements: <sch:value-of select="count(apnp:hazard)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:supportTool) = 0 or count(apnp:supportTool) = 1">
                        [RULE for Local Attribute 4] Invalid number of "supportTool" elements: <sch:value-of select="count(apnp:supportTool)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="AdaptationPreference.Type">
                <sch:title>[RULESET] For the AdaptationPreference.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:content/apnp:adaptationPreference">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:adaptationType) = 0 or count(apnp:adaptationType) = 1">
                        [RULE for Local Attribute 2] Invalid number of "adaptationType" elements: <sch:value-of select="count(apnp:adaptationType)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:originalAccessMode) = 1">
                        [RULE for Local Attribute 3] Invalid number of "originalAccessMode" elements: <sch:value-of select="count(apnp:originalAccessMode)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:readingRate) = 0 or count(apnp:readingRate) = 1">
                        [RULE for Local Attribute 6] Invalid number of "readingRate" elements: <sch:value-of select="count(apnp:readingRate)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Display.Type">
                <sch:title>[RULESET] For the Display.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display">

                    <sch:assert test="count(apnp:screenReader) = 0 or count(apnp:screenReader) = 1">
                        [RULE for Local Attribute 1] Invalid number of "screenReader" elements: <sch:value-of select="count(apnp:screenReader)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:screenEnhancement) = 0 or count(apnp:screenEnhancement) = 1">
                        [RULE for Local Attribute 2] Invalid number of "screenEnhancement" elements: <sch:value-of select="count(apnp:screenEnhancement)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:textReadingHighlight) = 0 or count(apnp:textReadingHighlight) = 1">
                        [RULE for Local Attribute 3] Invalid number of "textReadingHighlight" elements: <sch:value-of select="count(apnp:textReadingHighlight)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:braille) = 0 or count(apnp:braille) = 1">
                        [RULE for Local Attribute 4] Invalid number of "braille" elements: <sch:value-of select="count(apnp:braille)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:tactile) = 0 or count(apnp:tactile) = 1">
                        [RULE for Local Attribute 5] Invalid number of "tactile" elements: <sch:value-of select="count(apnp:tactile)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:visualAlert) = 0 or count(apnp:visualAlert) = 1">
                        [RULE for Local Attribute 6] Invalid number of "visualAlert" elements: <sch:value-of select="count(apnp:visualAlert)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:structuralPresentation) = 0 or count(apnp:structuralPresentation) = 1">
                        [RULE for Local Attribute 7] Invalid number of "structuralPresentation" elements: <sch:value-of select="count(apnp:structuralPresentation)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="ScreenReader.Type">
                <sch:title>[RULESET] For the ScreenReader.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:screenReader">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:speechRate) = 0 or count(apnp:speechRate) = 1">
                        [RULE for Local Attribute 3] Invalid number of "speechRate" elements: <sch:value-of select="count(apnp:speechRate)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:pitch) = 0 or count(apnp:pitch) = 1">
                        [RULE for Local Attribute 4] Invalid number of "pitch" elements: <sch:value-of select="count(apnp:pitch)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:volume) = 0 or count(apnp:volume) = 1">
                        [RULE for Local Attribute 5] Invalid number of "volume" elements: <sch:value-of select="count(apnp:volume)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="ScreenEnhancement.Type">
                <sch:title>[RULESET] For the ScreenEnhancement.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:screenEnhancement">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:fontFace) = 0 or count(apnp:fontFace) = 1">
                        [RULE for Local Attribute 2] Invalid number of "fontFace" elements: <sch:value-of select="count(apnp:fontFace)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:fontSize) = 0 or count(apnp:fontSize) = 1">
                        [RULE for Local Attribute 3] Invalid number of "fontSize" elements: <sch:value-of select="count(apnp:fontSize)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:foregroundColour) = 0 or count(apnp:foregroundColour) = 1">
                        [RULE for Local Attribute 4] Invalid number of "foregroundColour" elements: <sch:value-of select="count(apnp:foregroundColour)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:backgroundColour) = 0 or count(apnp:backgroundColour) = 1">
                        [RULE for Local Attribute 5] Invalid number of "backgroundColour" elements: <sch:value-of select="count(apnp:backgroundColour)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:highlightColour) = 0 or count(apnp:highlightColour) = 1">
                        [RULE for Local Attribute 6] Invalid number of "highlightColour" elements: <sch:value-of select="count(apnp:highlightColour)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:linkColour) = 0 or count(apnp:linkColour) = 1">
                        [RULE for Local Attribute 7] Invalid number of "linkColour" elements: <sch:value-of select="count(apnp:linkColour)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:cursorSize) = 0 or count(apnp:cursorSize) = 1">
                        [RULE for Local Attribute 8] Invalid number of "cursorSize" elements: <sch:value-of select="count(apnp:cursorSize)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:cursorColour) = 0 or count(apnp:cursorColour) = 1">
                        [RULE for Local Attribute 9] Invalid number of "cursorColour" elements: <sch:value-of select="count(apnp:cursorColour)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:cursorTrails) = 0 or count(apnp:cursorTrails) = 1">
                        [RULE for Local Attribute 10] Invalid number of "cursorTrails" elements: <sch:value-of select="count(apnp:cursorTrails)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:invertColourChoice) = 0 or count(apnp:invertColourChoice) = 1">
                        [RULE for Local Attribute 11] Invalid number of "invertColourChoice" elements: <sch:value-of select="count(apnp:invertColourChoice)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:invertImages) = 0 or count(apnp:invertImages) = 1">
                        [RULE for Local Attribute 12] Invalid number of "invertImages" elements: <sch:value-of select="count(apnp:invertImages)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:tracking) = 0 or count(apnp:tracking) = 1">
                        [RULE for Local Attribute 13] Invalid number of "tracking" elements: <sch:value-of select="count(apnp:tracking)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:magnification) = 0 or count(apnp:magnification) = 1">
                        [RULE for Local Attribute 14] Invalid number of "magnification" elements: <sch:value-of select="count(apnp:magnification)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:personalStylesheet) = 0 or count(apnp:personalStylesheet) = 1">
                        [RULE for Local Attribute 15] Invalid number of "personalStylesheet" elements: <sch:value-of select="count(apnp:personalStylesheet)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="TextReadingHighlight.Type">
                <sch:title>[RULESET] For the TextReadingHighlight.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:textReadingHighlight">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:speechRate) = 0 or count(apnp:speechRate) = 1">
                        [RULE for Local Attribute 2] Invalid number of "speechRate" elements: <sch:value-of select="count(apnp:speechRate)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:pitch) = 0 or count(apnp:pitch) = 1">
                        [RULE for Local Attribute 3] Invalid number of "pitch" elements: <sch:value-of select="count(apnp:pitch)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:volume) = 0 or count(apnp:volume) = 1">
                        [RULE for Local Attribute 4] Invalid number of "volume" elements: <sch:value-of select="count(apnp:volume)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:highlight) = 0 or count(apnp:highlight) = 1">
                        [RULE for Local Attribute 5] Invalid number of "highlight" elements: <sch:value-of select="count(apnp:highlight)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:speechComponent) = 0 or count(apnp:speechComponent) = 1">
                        [RULE for Local Attribute 6] Invalid number of "speechComponent" elements: <sch:value-of select="count(apnp:speechComponent)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:readingUnit) = 0 or count(apnp:readingUnit) = 1">
                        [RULE for Local Attribute 7] Invalid number of "readingUnit" elements: <sch:value-of select="count(apnp:readingUnit)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Braille.Type">
                <sch:title>[RULESET] For the Braille.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:braille">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:brailleGrade) = 0 or count(apnp:brailleGrade) = 1">
                        [RULE for Local Attribute 2] Invalid number of "brailleGrade" elements: <sch:value-of select="count(apnp:brailleGrade)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:numberOfBrailleDots) = 0 or count(apnp:numberOfBrailleDots) = 1">
                        [RULE for Local Attribute 3] Invalid number of "numberOfBrailleDots" elements: <sch:value-of select="count(apnp:numberOfBrailleDots)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:numberOfBrailleCells) = 0 or count(apnp:numberOfBrailleCells) = 1">
                        [RULE for Local Attribute 4] Invalid number of "numberOfBrailleCells" elements: <sch:value-of select="count(apnp:numberOfBrailleCells)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:brailleMark) = 0 or count(apnp:brailleMark) = 1">
                        [RULE for Local Attribute 5] Invalid number of "brailleMark" elements: <sch:value-of select="count(apnp:brailleMark)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:brailleDotPressure) = 0 or count(apnp:brailleDotPressure) = 1">
                        [RULE for Local Attribute 6] Invalid number of "brailleDotPressure" elements: <sch:value-of select="count(apnp:brailleDotPressure)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:brailleStatusCell) = 1">
                        [RULE for Local Attribute 7] Invalid number of "brailleStatusCell" elements: <sch:value-of select="count(apnp:brailleStatusCell)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Tactile.Type">
                <sch:title>[RULESET] For the Tactile.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:tactile">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="VisualAlert.Type">
                <sch:title>[RULESET] For the VisualAlert.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:visualAlert">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:systemSounds) = 0 or count(apnp:systemSounds) = 1">
                        [RULE for Local Attribute 2] Invalid number of "systemSounds" elements: <sch:value-of select="count(apnp:systemSounds)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:systemSoundsCaption) = 0 or count(apnp:systemSoundsCaption) = 1">
                        [RULE for Local Attribute 3] Invalid number of "systemSoundsCaption" elements: <sch:value-of select="count(apnp:systemSoundsCaption)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="StructuralPresentation.Type">
                <sch:title>[RULESET] For the StructuralPresentation.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:structuralPresentation">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:contentDensity) = 0 or count(apnp:contentDensity) = 1">
                        [RULE for Local Attribute 2] Invalid number of "contentDensity" elements: <sch:value-of select="count(apnp:contentDensity)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:windowLayout) = 0 or count(apnp:windowLayout) = 1">
                        [RULE for Local Attribute 4] Invalid number of "windowLayout" elements: <sch:value-of select="count(apnp:windowLayout)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="FontFace.Type">
                <sch:title>[RULESET] For the FontFace.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:screenEnhancement/apnp:fontFace">

                    <sch:assert test="count(apnp:genericFontFace) = 1">
                        [RULE for Local Attribute 2] Invalid number of "genericFontFace" elements: <sch:value-of select="count(apnp:genericFontFace)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Control.Type">
                <sch:title>[RULESET] For the Control.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control">

                    <sch:assert test="count(apnp:inputRequirements) = 0 or count(apnp:inputRequirements) = 1">
                        [RULE for Local Attribute 1] Invalid number of "inputRequirements" elements: <sch:value-of select="count(apnp:inputRequirements)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keyboardEnhancement) = 0 or count(apnp:keyboardEnhancement) = 1">
                        [RULE for Local Attribute 2] Invalid number of "keyboardEnhancement" elements: <sch:value-of select="count(apnp:keyboardEnhancement)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:onscreenKeyboard) = 0 or count(apnp:onscreenKeyboard) = 1">
                        [RULE for Local Attribute 3] Invalid number of "onscreenKeyboard" elements: <sch:value-of select="count(apnp:onscreenKeyboard)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alternativeKeyboard) = 0 or count(apnp:alternativeKeyboard) = 1">
                        [RULE for Local Attribute 4] Invalid number of "alternativeKeyboard" elements: <sch:value-of select="count(apnp:alternativeKeyboard)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:mouseEmulation) = 0 or count(apnp:mouseEmulation) = 1">
                        [RULE for Local Attribute 5] Invalid number of "mouseEmulation" elements: <sch:value-of select="count(apnp:mouseEmulation)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alternativePointing) = 0 or count(apnp:alternativePointing) = 1">
                        [RULE for Local Attribute 6] Invalid number of "alternativePointing" elements: <sch:value-of select="count(apnp:alternativePointing)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:voiceRecognition) = 0 or count(apnp:voiceRecognition) = 1">
                        [RULE for Local Attribute 7] Invalid number of "voiceRecognition" elements: <sch:value-of select="count(apnp:voiceRecognition)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:codedInput) = 0 or count(apnp:codedInput) = 1">
                        [RULE for Local Attribute 8] Invalid number of "codedInput" elements: <sch:value-of select="count(apnp:codedInput)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:prediction) = 0 or count(apnp:prediction) = 1">
                        [RULE for Local Attribute 9] Invalid number of "prediction" elements: <sch:value-of select="count(apnp:prediction)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:structuralNavigation) = 0 or count(apnp:structuralNavigation) = 1">
                        [RULE for Local Attribute 10] Invalid number of "structuralNavigation" elements: <sch:value-of select="count(apnp:structuralNavigation)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="KeyboardEnhancement.Type">
                <sch:title>[RULESET] For the KeyboardEnhancement.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:keyboardEnhancement">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alphanumericKeyboardLayout) = 0 or count(apnp:alphanumericKeyboardLayout) = 1">
                        [RULE for Local Attribute 2] Invalid number of "alphanumericKeyboardLayout" elements: <sch:value-of select="count(apnp:alphanumericKeyboardLayout)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alphanumericKeyboardLayoutCustom) = 0 or count(apnp:alphanumericKeyboardLayoutCustom) = 1">
                        [RULE for Local Attribute 3] Invalid number of "alphanumericKeyboardLayoutCustom" elements: <sch:value-of select="count(apnp:alphanumericKeyboardLayoutCustom)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:stickyKeys) = 0 or count(apnp:stickyKeys) = 1">
                        [RULE for Local Attribute 4] Invalid number of "stickyKeys" elements: <sch:value-of select="count(apnp:stickyKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:repeatKeys) = 0 or count(apnp:repeatKeys) = 1">
                        [RULE for Local Attribute 5] Invalid number of "repeatKeys" elements: <sch:value-of select="count(apnp:repeatKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:slowKeys) = 0 or count(apnp:slowKeys) = 1">
                        [RULE for Local Attribute 6] Invalid number of "slowKeys" elements: <sch:value-of select="count(apnp:slowKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:debounceKeys) = 0 or count(apnp:debounceKeys) = 1">
                        [RULE for Local Attribute 7] Invalid number of "debounceKeys" elements: <sch:value-of select="count(apnp:debounceKeys)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="OnscreenKeyboard.Type">
                <sch:title>[RULESET] For the OnscreenKeyboard.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alphanumericKeyboardLayout) = 0 or count(apnp:alphanumericKeyboardLayout) = 1">
                        [RULE for Local Attribute 2] Invalid number of "alphanumericKeyboardLayout" elements: <sch:value-of select="count(apnp:alphanumericKeyboardLayout)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alphanumericKeyboardLayoutCustom) = 0 or count(apnp:alphanumericKeyboardLayoutCustom) = 1">
                        [RULE for Local Attribute 3] Invalid number of "alphanumericKeyboardLayoutCustom" elements: <sch:value-of select="count(apnp:alphanumericKeyboardLayoutCustom)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keyHeightRelative) = 1">
                        [RULE for Local Attribute 4] Invalid number of "keyHeightRelative" elements: <sch:value-of select="count(apnp:keyHeightRelative)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keyWidthRelative) = 1">
                        [RULE for Local Attribute 5] Invalid number of "keyWidthRelative" elements: <sch:value-of select="count(apnp:keyWidthRelative)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keySpacingRelative) = 1">
                        [RULE for Local Attribute 6] Invalid number of "keySpacingRelative" elements: <sch:value-of select="count(apnp:keySpacingRelative)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keySelectionSoundFeedback) = 0 or count(apnp:keySelectionSoundFeedback) = 1">
                        [RULE for Local Attribute 7] Invalid number of "keySelectionSoundFeedback" elements: <sch:value-of select="count(apnp:keySelectionSoundFeedback)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:pointAndClickSelection) = 0 or count(apnp:pointAndClickSelection) = 1">
                        [RULE for Local Attribute 8] Invalid number of "pointAndClickSelection" elements: <sch:value-of select="count(apnp:pointAndClickSelection)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:pointAndDwellSelection) = 0 or count(apnp:pointAndDwellSelection) = 1">
                        [RULE for Local Attribute 9] Invalid number of "pointAndDwellSelection" elements: <sch:value-of select="count(apnp:pointAndDwellSelection)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:automaticScanning) = 0 or count(apnp:automaticScanning) = 1">
                        [RULE for Local Attribute 10] Invalid number of "automaticScanning" elements: <sch:value-of select="count(apnp:automaticScanning)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:inverseScanning) = 0 or count(apnp:inverseScanning) = 1">
                        [RULE for Local Attribute 11] Invalid number of "inverseScanning" elements: <sch:value-of select="count(apnp:inverseScanning)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:directedScanning) = 0 or count(apnp:directedScanning) = 1">
                        [RULE for Local Attribute 12] Invalid number of "directedScanning" elements: <sch:value-of select="count(apnp:directedScanning)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:codeSelection) = 0 or count(apnp:codeSelection) = 1">
                        [RULE for Local Attribute 13] Invalid number of "codeSelection" elements: <sch:value-of select="count(apnp:codeSelection)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="AlternativeKeyboard.Type">
                <sch:title>[RULESET] For the AlternativeKeyboard.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alphanumericKeyboardLayout) = 0 or count(apnp:alphanumericKeyboardLayout) = 1">
                        [RULE for Local Attribute 2] Invalid number of "alphanumericKeyboardLayout" elements: <sch:value-of select="count(apnp:alphanumericKeyboardLayout)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:alphanumericKeyboardLayoutCustom) = 0 or count(apnp:alphanumericKeyboardLayoutCustom) = 1">
                        [RULE for Local Attribute 3] Invalid number of "alphanumericKeyboardLayoutCustom" elements: <sch:value-of select="count(apnp:alphanumericKeyboardLayoutCustom)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:stickyKeys) = 0 or count(apnp:stickyKeys) = 1">
                        [RULE for Local Attribute 4] Invalid number of "stickyKeys" elements: <sch:value-of select="count(apnp:stickyKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:repeatKeys) = 0 or count(apnp:repeatKeys) = 1">
                        [RULE for Local Attribute 5] Invalid number of "repeatKeys" elements: <sch:value-of select="count(apnp:repeatKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:slowKeys) = 0 or count(apnp:slowKeys) = 1">
                        [RULE for Local Attribute 6] Invalid number of "slowKeys" elements: <sch:value-of select="count(apnp:slowKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:debounceKeys) = 0 or count(apnp:debounceKeys) = 1">
                        [RULE for Local Attribute 7] Invalid number of "debounceKeys" elements: <sch:value-of select="count(apnp:debounceKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:resizableKeys) = 0 or count(apnp:resizableKeys) = 1">
                        [RULE for Local Attribute 8] Invalid number of "resizableKeys" elements: <sch:value-of select="count(apnp:resizableKeys)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keySelectionSoundFeedback) = 0 or count(apnp:keySelectionSoundFeedback) = 1">
                        [RULE for Local Attribute 9] Invalid number of "keySelectionSoundFeedback" elements: <sch:value-of select="count(apnp:keySelectionSoundFeedback)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="MouseEmulation.Type">
                <sch:title>[RULESET] For the MouseEmulation.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:mouseEmulation">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:cursorSpeed) = 0 or count(apnp:cursorSpeed) = 1">
                        [RULE for Local Attribute 2] Invalid number of "cursorSpeed" elements: <sch:value-of select="count(apnp:cursorSpeed)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:cursorAcceleration) = 0 or count(apnp:cursorAcceleration) = 1">
                        [RULE for Local Attribute 3] Invalid number of "cursorAcceleration" elements: <sch:value-of select="count(apnp:cursorAcceleration)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:mouseEmulationDevice) = 0 or count(apnp:mouseEmulationDevice) = 1">
                        [RULE for Local Attribute 4] Invalid number of "mouseEmulationDevice" elements: <sch:value-of select="count(apnp:mouseEmulationDevice)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="AlternativePointing.Type">
                <sch:title>[RULESET] For the AlternativePointing.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativePointing">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:relativePointing) = 0 or count(apnp:relativePointing) = 1">
                        [RULE for Local Attribute 2] Invalid number of "relativePointing" elements: <sch:value-of select="count(apnp:relativePointing)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:absolutePointing) = 0 or count(apnp:absolutePointing) = 1">
                        [RULE for Local Attribute 3] Invalid number of "absolutePointing" elements: <sch:value-of select="count(apnp:absolutePointing)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:deviceHandedness) = 0 or count(apnp:deviceHandedness) = 1">
                        [RULE for Local Attribute 4] Invalid number of "deviceHandedness" elements: <sch:value-of select="count(apnp:deviceHandedness)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:doubleClickSpeed) = 0 or count(apnp:doubleClickSpeed) = 1">
                        [RULE for Local Attribute 5] Invalid number of "doubleClickSpeed" elements: <sch:value-of select="count(apnp:doubleClickSpeed)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchSelect) = 0 or count(apnp:switchSelect) = 1">
                        [RULE for Local Attribute 6] Invalid number of "switchSelect" elements: <sch:value-of select="count(apnp:switchSelect)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:dwellSelect) = 0 or count(apnp:dwellSelect) = 1">
                        [RULE for Local Attribute 7] Invalid number of "dwellSelect" elements: <sch:value-of select="count(apnp:dwellSelect)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="VoiceRecognition.Type">
                <sch:title>[RULESET] For the VoiceRecognition.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:voiceRecognition">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:voiceProfileIdentity) = 0 or count(apnp:voiceProfileIdentity) = 1">
                        [RULE for Local Attribute 2] Invalid number of "voiceProfileIdentity" elements: <sch:value-of select="count(apnp:voiceProfileIdentity)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:microphoneGain) = 0 or count(apnp:microphoneGain) = 1">
                        [RULE for Local Attribute 3] Invalid number of "microphoneGain" elements: <sch:value-of select="count(apnp:microphoneGain)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:controllerWindow) = 0 or count(apnp:controllerWindow) = 1">
                        [RULE for Local Attribute 4] Invalid number of "controllerWindow" elements: <sch:value-of select="count(apnp:controllerWindow)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:dictation) = 0 or count(apnp:dictation) = 1">
                        [RULE for Local Attribute 5] Invalid number of "dictation" elements: <sch:value-of select="count(apnp:dictation)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:commandAndControl) = 0 or count(apnp:commandAndControl) = 1">
                        [RULE for Local Attribute 6] Invalid number of "commandAndControl" elements: <sch:value-of select="count(apnp:commandAndControl)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="CodedInput.Type">
                <sch:title>[RULESET] For the CodedInput.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:codedInput">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:code) = 1">
                        [RULE for Local Attribute 2] Invalid number of "code" elements: <sch:value-of select="count(apnp:code)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:numberOfInputs) = 1">
                        [RULE for Local Attribute 3] Invalid number of "numberOfInputs" elements: <sch:value-of select="count(apnp:numberOfInputs)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:codeTermination) = 0 or count(apnp:codeTermination) = 1">
                        [RULE for Local Attribute 4] Invalid number of "codeTermination" elements: <sch:value-of select="count(apnp:codeTermination)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchPort) = 1">
                        [RULE for Local Attribute 5] Invalid number of "switchPort" elements: <sch:value-of select="count(apnp:switchPort)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:customCode) = 0 or count(apnp:customCode) = 1">
                        [RULE for Local Attribute 6] Invalid number of "customCode" elements: <sch:value-of select="count(apnp:customCode)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Prediction.Type">
                <sch:title>[RULESET] For the Prediction.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:prediction">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:predictionType) > 0">
                        [RULE for Local Attribute 2] Invalid number of "predictionType" elements: <sch:value-of select="count(apnp:predictionType)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:numberOfPredictionChoicesDisplayed) = 0 or count(apnp:numberOfPredictionChoicesDisplayed) = 1">
                        [RULE for Local Attribute 3] Invalid number of "numberOfPredictionChoicesDisplayed" elements: <sch:value-of select="count(apnp:numberOfPredictionChoicesDisplayed)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:lexicon) = 0 or count(apnp:lexicon) = 1">
                        [RULE for Local Attribute 4] Invalid number of "lexicon" elements: <sch:value-of select="count(apnp:lexicon)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="StructuralNavigation.Type">
                <sch:title>[RULESET] For the StructuralNavigation.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:structuralNavigation">

                    <sch:assert test="count(apnp:usage) = 0 or count(apnp:usage) = 1">
                        [RULE for Local Attribute 1] Invalid number of "usage" elements: <sch:value-of select="count(apnp:usage)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:navigationStrategy) = 0 or count(apnp:navigationStrategy) = 1">
                        [RULE for Local Attribute 2] Invalid number of "navigationStrategy" elements: <sch:value-of select="count(apnp:navigationStrategy)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:tableOfContents) = 0 or count(apnp:tableOfContents) = 1">
                        [RULE for Local Attribute 3] Invalid number of "tableOfContents" elements: <sch:value-of select="count(apnp:tableOfContents)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Application.Type">
                <sch:title>[RULESET] For the Application.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:screenReader/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:screenEnhancement/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:textReadingHighlight/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:braille/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:tactile/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:visualAlert/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:structuralPresentation/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:keyboardEnhancement/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:mouseEmulation/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativePointing/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:voiceRecognition/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:codedInput/apnp:applicaton">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:prediction/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:structuralNavigation/apnp:application">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationVersion) = 0 or count(apnp:applicationVersion) = 1">
                        [RULE for Local Attribute 2] Invalid number of "applicationVersion" elements: <sch:value-of select="count(apnp:applicationVersion)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:applicationPriority) = 1">
                        [RULE for Local Attribute 3] Invalid number of "applicationPriority" elements: <sch:value-of select="count(apnp:applicationPriority)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="ApplicationParameter.Type">
                <sch:title>[RULESET] For the ApplicationParameter.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:display/apnp:screenReader/apnp:application/apnp:accessForAlluser/apnp:display/apnp:screenEnhancement/apnp:application/apnp:accessForAlluser/apnp:display/apnp:textReadingHighlight/apnp:application/apnp:accessForAlluser/apnp:display/apnp:braille/apnp:application/apnp:accessForAlluser/apnp:display/apnp:tactile/apnp:application/apnp:accessForAlluser/apnp:display/apnp:visualAlert/apnp:application/apnp:accessForAlluser/apnp:display/apnp:structuralPresentation/apnp:application/apnp:accessForAlluser/apnp:control/apnp:keyboardEnhancement/apnp:application/apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:application/apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard/apnp:application/apnp:accessForAlluser/apnp:control/apnp:mouseEmulation/apnp:application/apnp:accessForAlluser/apnp:control/apnp:alternativePointing/apnp:application/apnp:accessForAlluser/apnp:control/apnp:voiceRecognition/apnp:application/apnp:accessForAlluser/apnp:control/apnp:codedInput/apnp:applicaton/apnp:accessForAlluser/apnp:control/apnp:prediction/apnp:application/apnp:accessForAlluser/apnp:control/apnp:structuralNavigation/apnp:application/apnp:applicationParameter">

                    <sch:assert test="count(apnp:name) = 1">
                        [RULE for Local Attribute 1] Invalid number of "name" elements: <sch:value-of select="count(apnp:name)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:parameterValue) = 0 or count(apnp:parameterValue) = 1">
                        [RULE for Local Attribute 2] Invalid number of "parameterValue" elements: <sch:value-of select="count(apnp:parameterValue)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="StickyKeys.Type">
                <sch:title>[RULESET] For the StickyKeys.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:keyboardEnhancement/apnp:stickyKeys">

                    <sch:assert test="count(apnp:modifierIndication) = 0 or count(apnp:modifierIndication) = 1">
                        [RULE for Local Attribute 1] Invalid number of "modifierIndication" elements: <sch:value-of select="count(apnp:modifierIndication)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard/apnp:stickyKeys">

                    <sch:assert test="count(apnp:modifierIndication) = 0 or count(apnp:modifierIndication) = 1">
                        [RULE for Local Attribute 1] Invalid number of "modifierIndication" elements: <sch:value-of select="count(apnp:modifierIndication)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="RepeatKeys.Type">
                <sch:title>[RULESET] For the RepeatKeys.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:keyboardEnhancement/apnp:repeatKeys">

                    <sch:assert test="count(apnp:automaticDelay) = 0 or count(apnp:automaticDelay) = 1">
                        [RULE for Local Attribute 1] Invalid number of "automaticDelay" elements: <sch:value-of select="count(apnp:automaticDelay)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:automaticRepeatRate) = 0 or count(apnp:automaticRepeatRate) = 1">
                        [RULE for Local Attribute 2] Invalid number of "automaticRepeatRate" elements: <sch:value-of select="count(apnp:automaticRepeatRate)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard/apnp:repeatKeys">

                    <sch:assert test="count(apnp:automaticDelay) = 0 or count(apnp:automaticDelay) = 1">
                        [RULE for Local Attribute 1] Invalid number of "automaticDelay" elements: <sch:value-of select="count(apnp:automaticDelay)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:automaticRepeatRate) = 0 or count(apnp:automaticRepeatRate) = 1">
                        [RULE for Local Attribute 2] Invalid number of "automaticRepeatRate" elements: <sch:value-of select="count(apnp:automaticRepeatRate)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="SlowKeys.Type">
                <sch:title>[RULESET] For the SlowKeys.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:keyboardEnhancement/apnp:slowKeys">

                    <sch:assert test="count(apnp:slowKeysInterval) = 0 or count(apnp:slowKeysInterval) = 1">
                        [RULE for Local Attribute 1] Invalid number of "slowKeysInterval" elements: <sch:value-of select="count(apnp:slowKeysInterval)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard/apnp:slowKeys">

                    <sch:assert test="count(apnp:slowKeysInterval) = 0 or count(apnp:slowKeysInterval) = 1">
                        [RULE for Local Attribute 1] Invalid number of "slowKeysInterval" elements: <sch:value-of select="count(apnp:slowKeysInterval)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="Debounce.Type">
                <sch:title>[RULESET] For the Debounce.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:keyboardEnhancement/apnp:debounceKeys">

                    <sch:assert test="count(apnp:debounceInterval) = 0 or count(apnp:debounceInterval) = 1">
                        [RULE for Local Attribute 1] Invalid number of "debounceInterval" elements: <sch:value-of select="count(apnp:debounceInterval)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard/apnp:debounceKeys">

                    <sch:assert test="count(apnp:debounceInterval) = 0 or count(apnp:debounceInterval) = 1">
                        [RULE for Local Attribute 1] Invalid number of "debounceInterval" elements: <sch:value-of select="count(apnp:debounceInterval)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="ResizableKeys.Type">
                <sch:title>[RULESET] For the ResizableKeys.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativeKeyboard/apnp:resizableKeys">

                    <sch:assert test="count(apnp:keyHeightAbsolute) = 0 or count(apnp:keyHeightAbsolute) = 1">
                        [RULE for Local Attribute 1] Invalid number of "keyHeightAbsolute" elements: <sch:value-of select="count(apnp:keyHeightAbsolute)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keyWidthAbsolute) = 0 or count(apnp:keyWidthAbsolute) = 1">
                        [RULE for Local Attribute 2] Invalid number of "keyWidthAbsolute" elements: <sch:value-of select="count(apnp:keyWidthAbsolute)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:keySpacingAbsolute) = 0 or count(apnp:keySpacingAbsolute) = 1">
                        [RULE for Local Attribute 3] Invalid number of "keySpacingAbsolute" elements: <sch:value-of select="count(apnp:keySpacingAbsolute)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="PointAndClickSelection.Type">
                <sch:title>[RULESET] For the PointAndClickSelection.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:pointAndClickSelection">

                    <sch:assert test="count(apnp:switchDelay) = 0 or count(apnp:switchDelay) = 1">
                        [RULE for Local Attribute 1] Invalid number of "switchDelay" elements: <sch:value-of select="count(apnp:switchDelay)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="PointAndDwellSelection.Type">
                <sch:title>[RULESET] For the PointAndDwellSelection.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:pointAndDwellSelection">

                    <sch:assert test="count(apnp:dwellTime) = 0 or count(apnp:dwellTime) = 1">
                        [RULE for Local Attribute 1] Invalid number of "dwellTime" elements: <sch:value-of select="count(apnp:dwellTime)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="AutomaticScanning.Type">
                <sch:title>[RULESET] For the AutomaticScanning.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:automaticScanning">

                    <sch:assert test="count(apnp:scanSpeed) = 0 or count(apnp:scanSpeed) = 1">
                        [RULE for Local Attribute 1] Invalid number of "scanSpeed" elements: <sch:value-of select="count(apnp:scanSpeed)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchPort) = 0 or count(apnp:switchPort) = 1">
                        [RULE for Local Attribute 3] Invalid number of "switchPort" elements: <sch:value-of select="count(apnp:switchPort)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:automaticScanInitialDelay) = 0 or count(apnp:automaticScanInitialDelay) = 1">
                        [RULE for Local Attribute 4] Invalid number of "automaticScanInitialDelay" elements: <sch:value-of select="count(apnp:automaticScanInitialDelay)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:automaticScanRepeat) = 0 or count(apnp:automaticScanRepeat) = 1">
                        [RULE for Local Attribute 5] Invalid number of "automaticScanRepeat" elements: <sch:value-of select="count(apnp:automaticScanRepeat)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchAssignment) > 0">
                        [RULE for Local Attribute 6] Invalid number of "switchAssignment" elements: <sch:value-of select="count(apnp:switchAssignment)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="SwitchAssignment.Type">
                <sch:title>[RULESET] For the SwitchAssignment.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:automaticScanning/apnp:switchAssignment">

                    <sch:assert test="count(apnp:switchFunction) = 1">
                        [RULE for Local Attribute 1] Invalid number of "switchFunction" elements: <sch:value-of select="count(apnp:switchFunction)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchNumber) = 1">
                        [RULE for Local Attribute 2] Invalid number of "switchNumber" elements: <sch:value-of select="count(apnp:switchNumber)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:inverseScanning/apnp:switchAssignment">

                    <sch:assert test="count(apnp:switchFunction) = 1">
                        [RULE for Local Attribute 1] Invalid number of "switchFunction" elements: <sch:value-of select="count(apnp:switchFunction)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchNumber) = 1">
                        [RULE for Local Attribute 2] Invalid number of "switchNumber" elements: <sch:value-of select="count(apnp:switchNumber)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:directedScanning/apnp:switchAssignment">

                    <sch:assert test="count(apnp:switchFunction) = 1">
                        [RULE for Local Attribute 1] Invalid number of "switchFunction" elements: <sch:value-of select="count(apnp:switchFunction)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchNumber) = 1">
                        [RULE for Local Attribute 2] Invalid number of "switchNumber" elements: <sch:value-of select="count(apnp:switchNumber)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="InverseScanning.Type">
                <sch:title>[RULESET] For the InverseScanning.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:inverseScanning">

                    <sch:assert test="count(apnp:scanSpeed) = 0 or count(apnp:scanSpeed) = 1">
                        [RULE for Local Attribute 1] Invalid number of "scanSpeed" elements: <sch:value-of select="count(apnp:scanSpeed)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchPort) = 0 or count(apnp:switchPort) = 1">
                        [RULE for Local Attribute 3] Invalid number of "switchPort" elements: <sch:value-of select="count(apnp:switchPort)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:dwellTime) = 0 or count(apnp:dwellTime) = 1">
                        [RULE for Local Attribute 4] Invalid number of "dwellTime" elements: <sch:value-of select="count(apnp:dwellTime)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchAssignment) > 0">
                        [RULE for Local Attribute 5] Invalid number of "switchAssignment" elements: <sch:value-of select="count(apnp:switchAssignment)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="DirectedScanning.Type">
                <sch:title>[RULESET] For the DirectedScanning.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:directedScanning">

                    <sch:assert test="count(apnp:scanSpeed) = 0 or count(apnp:scanSpeed) = 1">
                        [RULE for Local Attribute 1] Invalid number of "scanSpeed" elements: <sch:value-of select="count(apnp:scanSpeed)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchPort) = 0 or count(apnp:switchPort) = 1">
                        [RULE for Local Attribute 2] Invalid number of "switchPort" elements: <sch:value-of select="count(apnp:switchPort)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:dwellTime) = 0 or count(apnp:dwellTime) = 1">
                        [RULE for Local Attribute 3] Invalid number of "dwellTime" elements: <sch:value-of select="count(apnp:dwellTime)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchAssignment) > 0">
                        [RULE for Local Attribute 4] Invalid number of "switchAssignment" elements: <sch:value-of select="count(apnp:switchAssignment)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="CodeSelection.Type">
                <sch:title>[RULESET] For the CodeSelection.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:codeSelection">

                    <sch:assert test="count(apnp:code) = 0 or count(apnp:code) = 1">
                        [RULE for Local Attribute 1] Invalid number of "code" elements: <sch:value-of select="count(apnp:code)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:numberOfInputs) = 0 or count(apnp:numberOfInputs) = 1">
                        [RULE for Local Attribute 2] Invalid number of "numberOfInputs" elements: <sch:value-of select="count(apnp:numberOfInputs)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:codeTermination) = 0 or count(apnp:codeTermination) = 1">
                        [RULE for Local Attribute 3] Invalid number of "codeTermination" elements: <sch:value-of select="count(apnp:codeTermination)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:selectionMethod) = 1">
                        [RULE for Local Attribute 4] Invalid number of "selectionMethod" elements: <sch:value-of select="count(apnp:selectionMethod)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:switchPort) = 0 or count(apnp:switchPort) = 1">
                        [RULE for Local Attribute 5] Invalid number of "switchPort" elements: <sch:value-of select="count(apnp:switchPort)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:customCode) = 0 or count(apnp:customCode) = 1">
                        [RULE for Local Attribute 6] Invalid number of "customCode" elements: <sch:value-of select="count(apnp:customCode)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="CodeTermination.Type">
                <sch:title>[RULESET] For the CodeTermination.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:codedInput/apnp:codeTermination">

                    <sch:assert test="count(apnp:codeTerminationSignal) = 1">
                        [RULE for Local Attribute 1] Invalid number of "codeTerminationSignal" elements: <sch:value-of select="count(apnp:codeTerminationSignal)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:codeRate) = 0 or count(apnp:codeRate) = 1">
                        [RULE for Local Attribute 2] Invalid number of "codeRate" elements: <sch:value-of select="count(apnp:codeRate)"/>.
                    </sch:assert>

                </sch:rule>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:onscreenKeyboard/apnp:codeSelection/apnp:codeTermination">

                    <sch:assert test="count(apnp:codeTerminationSignal) = 1">
                        [RULE for Local Attribute 1] Invalid number of "codeTerminationSignal" elements: <sch:value-of select="count(apnp:codeTerminationSignal)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:codeRate) = 0 or count(apnp:codeRate) = 1">
                        [RULE for Local Attribute 2] Invalid number of "codeRate" elements: <sch:value-of select="count(apnp:codeRate)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="DwellSelect.Type">
                <sch:title>[RULESET] For the DwellSelect.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativePointing/apnp:dwellSelect">

                    <sch:assert test="count(apnp:useDwellSelect) = 0 or count(apnp:useDwellSelect) = 1">
                        [RULE for Local Attribute 1] Invalid number of "useDwellSelect" elements: <sch:value-of select="count(apnp:useDwellSelect)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:dwellTime) = 0 or count(apnp:dwellTime) = 1">
                        [RULE for Local Attribute 2] Invalid number of "dwellTime" elements: <sch:value-of select="count(apnp:dwellTime)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="RelativePointing.Type">
                <sch:title>[RULESET] For the RelativePointing.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:alternativePointing/apnp:relativePointing">

                    <sch:assert test="count(apnp:cursorSpeed) = 0 or count(apnp:cursorSpeed) = 1">
                        [RULE for Local Attribute 1] Invalid number of "cursorSpeed" elements: <sch:value-of select="count(apnp:cursorSpeed)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:cursorAcceleration) = 0 or count(apnp:cursorAcceleration) = 1">
                        [RULE for Local Attribute 2] Invalid number of "cursorAcceleration" elements: <sch:value-of select="count(apnp:cursorAcceleration)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

            <!-- RULESET ******************************************************************* -->
            <sch:pattern abstract="false" id="CommandAndControl.Type">
                <sch:title>[RULESET] For the CommandAndControl.Type complexType.</sch:title>

                <sch:rule abstract="false" context="apnp:accessForAlluser/apnp:control/apnp:voiceRecognition/apnp:commandAndControl">

                    <sch:assert test="count(apnp:vocabulary) = 0 or count(apnp:vocabulary) = 1">
                        [RULE for Local Attribute 1] Invalid number of "vocabulary" elements: <sch:value-of select="count(apnp:vocabulary)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:confirmationFeedback) = 0 or count(apnp:confirmationFeedback) = 1">
                        [RULE for Local Attribute 2] Invalid number of "confirmationFeedback" elements: <sch:value-of select="count(apnp:confirmationFeedback)"/>.
                    </sch:assert>

                    <sch:assert test="count(apnp:mouseControl) = 0 or count(apnp:mouseControl) = 1">
                        [RULE for Local Attribute 3] Invalid number of "mouseControl" elements: <sch:value-of select="count(apnp:mouseControl)"/>.
                    </sch:assert>

                </sch:rule>

            </sch:pattern>
            <!-- *************************************************************************** -->

        </xs:appinfo>
    </xs:annotation>

    <!-- Generate Global Attributes *********************************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate Namespaced extension Group  ************************************************************* -->

    <xs:group name="grpStrict.any">
        <xs:annotation>
            <xs:documentation>
                Any namespaced element from any namespace may be included within an "any" element.
                The namespace for the imported element must be defined in the instance, and the schema must be imported.
                The extension has a definition of "strict" i.e. they must have their own namespace.
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:any namespace = "##other" processContents = "strict" minOccurs = "0" maxOccurs = "unbounded"/>
        </xs:sequence>
    </xs:group>

    <!-- ================================================================================================== -->

    <!-- Generate Special DataTypes  ********************************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate the enumerated simpleType declarations ************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate the simpleType elements based IMS data-types  ******************************************* -->

    <!-- ================================================================================================== -->

    <!-- Generate the derived data-type elements based upon simpleType ************************************ -->

    <!-- ================================================================================================== -->

    <!-- Generate the derived data-type elements based upon derived simpleType **************************** -->

    <!-- ================================================================================================== -->

    <!-- Generate the data-type ComplexTypes ************************************************************** -->

    <xs:complexType name="AccessForAllUser.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Access_For_All_User complexType is the container for the collection of AfA needs and preferences for 
control flexibility, display transformability and content with respect to the accessibility of a resource.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="language" type="xs:normalizedString" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="display" type="Display.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="control" type="Control.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="content" type="Content.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Content.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Content complexType is the container for the collection of needs and preferences for content, 
specifying any desired transformations or enhancements.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="adaptationPreference" type="AdaptationPreference.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="colourCodingAvoidance" type="xs:boolean" default="false" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="hazard" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="flashing"/>
                        <xs:enumeration value="sound"/>
                        <xs:enumeration value="olfactory"/>
                        <xs:enumeration value="moton simulation"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="supportTool" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="dictionary"/>
                        <xs:enumeration value="calculator"/>
                        <xs:enumeration value="note taking"/>
                        <xs:enumeration value="peer interaction"/>
                        <xs:enumeration value="thesaurus"/>
                        <xs:enumeration value="abacus"/>
                        <xs:enumeration value="spell checker"/>
                        <xs:enumeration value="homophone checker"/>
                        <xs:enumeration value="mind mapping software"/>
                        <xs:enumeration value="outline tool"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="AdaptationPreference.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Adaptation_Preference complexType is the container for the collection of information that gives detailed 
information about an adaptation.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="adaptationType" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="audio representation"/>
                        <xs:enumeration value="visual representation"/>
                        <xs:enumeration value="text representation"/>
                        <xs:enumeration value="tactile representation"/>
                        <xs:enumeration value="caption"/>
                        <xs:enumeration value="audio description"/>
                        <xs:enumeration value="Braille"/>
                        <xs:enumeration value="digital talking book"/>
                        <xs:enumeration value="electronic book"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="originalAccessMode" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:annotation>
                        <xs:documentation source="umldocumentation">
                            This is the set of permitted values for the Access Mode vocabulary.
                        </xs:documentation>
                    </xs:annotation>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="auditory"/>
                        <xs:enumeration value="tactile"/>
                        <xs:enumeration value="textual"/>
                        <xs:enumeration value="visual"/>
                        <xs:enumeration value="olfactory"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="representationForm" minOccurs = "0" maxOccurs = "unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="enhanced"/>
                        <xs:enumeration value="verbatim"/>
                        <xs:enumeration value="real-time"/>
                        <xs:enumeration value="transcript"/>
                        <xs:enumeration value="alternative text"/>
                        <xs:enumeration value="long description"/>
                        <xs:enumeration value="sign language"/>
                        <xs:enumeration value="image based"/>
                        <xs:enumeration value="symbolic"/>
                        <xs:enumeration value="recorded"/>
                        <xs:enumeration value="synthesized"/>
                        <xs:enumeration value="haptic"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="language" type="xs:normalizedString" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:element name="readingRate" type="xs:integer" default="120" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="educationLevel" type="xs:normalizedString" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Display.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Display complexType is the container for the collection of AfA needs and preferences for how a 
user interface and content should be presented.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="screenReader" type="ScreenReader.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="screenEnhancement" type="ScreenEnhancement.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="textReadingHighlight" type="TextReadingHighlight.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="braille" type="Braille.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="tactile" type="Tactile.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="visualAlert" type="VisualAlert.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="structuralPresentation" type="StructuralPresentation.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="ScreenReader.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The ScreenReader complexType is the container for the collection of AfA needs and preferences 
for how to configure a screen reader.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="linkIndication" default="speak link" minOccurs = "0" maxOccurs = "unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="speak link"/>
                        <xs:enumeration value="different voice"/>
                        <xs:enumeration value="sound effect"/>
                        <xs:enumeration value="none"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="speechRate" type="xs:integer" default="180" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="pitch" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="volume" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="ScreenEnhancement.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The ScreenEnhancement complexType is the container for the collection of AfA needs and preferences 
for how to configure enhancements to a screen display.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="fontFace" type="FontFace.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="fontSize" type="xs:decimal" default="12.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="foregroundColour" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Red"/>
                        <xs:enumeration value="Green"/>
                        <xs:enumeration value="Blue"/>
                        <xs:enumeration value="Alpha"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="backgroundColour" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Red"/>
                        <xs:enumeration value="Green"/>
                        <xs:enumeration value="Blue"/>
                        <xs:enumeration value="Alpha"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="highlightColour" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Red"/>
                        <xs:enumeration value="Green"/>
                        <xs:enumeration value="Blue"/>
                        <xs:enumeration value="Alpha"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="linkColour" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Red"/>
                        <xs:enumeration value="Green"/>
                        <xs:enumeration value="Blue"/>
                        <xs:enumeration value="Alpha"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="cursorSize" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="cursorColour" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Red"/>
                        <xs:enumeration value="Green"/>
                        <xs:enumeration value="Blue"/>
                        <xs:enumeration value="Alpha"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="cursorTrails" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="invertColourChoice" type="xs:boolean" default="false" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="invertImages" type="xs:boolean" default="false" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="tracking" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="mouse"/>
                        <xs:enumeration value="caret"/>
                        <xs:enumeration value="focus"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="magnification" type="xs:decimal" default="1.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="personalStylesheet" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="TextReadingHighlight.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The TextReadingHighlght complexType is the container for the collection of AfA needs and preferences 
for how to configure a text reading and highlighting system.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="speechRate" type="xs:integer" default="180" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="pitch" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="volume" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="highlight" default="word" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="word"/>
                        <xs:enumeration value="line"/>
                        <xs:enumeration value="sentence"/>
                        <xs:enumeration value="paragraph"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="speechComponent" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="alternative text"/>
                        <xs:enumeration value="controls when tabbing"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="readingUnit" default="word" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="word"/>
                        <xs:enumeration value="line"/>
                        <xs:enumeration value="sentence"/>
                        <xs:enumeration value="paragraph"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Braille.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Braille complexType is the container for the collection of needs and preferences 
for how to configure a Braille display.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="brailleGrade" default="uncontracted" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="uncontracted"/>
                        <xs:enumeration value="contracted"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="numberOfBrailleDots" default="6" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="6"/>
                        <xs:enumeration value="8"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="numberOfBrailleCells" type="xs:integer" default="80" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="brailleMark" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="highlight"/>
                        <xs:enumeration value="bold"/>
                        <xs:enumeration value="underline"/>
                        <xs:enumeration value="italic"/>
                        <xs:enumeration value="strikeout"/>
                        <xs:enumeration value="colour"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="brailleDotPressure" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="brailleStatusCell" default="off" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="off"/>
                        <xs:enumeration value="left"/>
                        <xs:enumeration value="right"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Tactile.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Tactile complexType is the container for the collection of needs and preferences for 
how to configure a tactile display (this is intended for future use).
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="VisualAlert.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The VisualAlert complexType is the container for the collection of needs and 
preferences for how to configure visual alerts.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="systemSounds" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="desktop"/>
                        <xs:enumeration value="window"/>
                        <xs:enumeration value="caption bar"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="systemSoundsCaption" type="xs:boolean" default="false" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="StructuralPresentation.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The StructuralPresentation complexType is he cntainer for teh collection of needs and preferences 
for how the structure of content should be displayed.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="contentDensity" default="overview" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="overview"/>
                        <xs:enumeration value="detailed"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="componentsShown" default="annotations" minOccurs = "0" maxOccurs = "unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="list of links"/>
                        <xs:enumeration value="annotations"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="windowLayout" default="tiled" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="tiled"/>
                        <xs:enumeration value="overlap"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="FontFace.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The FontFace complexType is the container for the collection of data elements 
that states an AfA preference for a font.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="fontName" type="xs:normalizedString" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:element name="genericFontFace" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="serif"/>
                        <xs:enumeration value="sans serif"/>
                        <xs:enumeration value="monospaced"/>
                        <xs:enumeration value="cursive"/>
                        <xs:enumeration value="fantasy"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Control.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Control complexType is the container for the collection of needs and preferences for how to configure 
alternative access systems for controlling a device.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="inputRequirements" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="full keyboard control"/>
                        <xs:enumeration value="full mouse control"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="keyboardEnhancement" type="KeyboardEnhancement.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="onscreenKeyboard" type="OnscreenKeyboard.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="alternativeKeyboard" type="AlternativeKeyboard.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="mouseEmulation" type="MouseEmulation.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="alternativePointing" type="AlternativePointing.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="voiceRecognition" type="VoiceRecognition.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="codedInput" type="CodedInput.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="prediction" type="Prediction.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="structuralNavigation" type="StructuralNavigation.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="KeyboardEnhancement.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The KeyboardEnhancement complexType is the container for the collection of the needs and preferences for how to 
configure accessibility enhancements for standard keyboard.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="alphanumericKeyboardLayout" default="standard" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="standard"/>
                        <xs:enumeration value="sequential"/>
                        <xs:enumeration value="frequency"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="alphanumericKeyboardLayoutCustom" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="stickyKeys" type="StickyKeys.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="repeatKeys" type="RepeatKeys.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="slowKeys" type="SlowKeys.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="debounceKeys" type="Debounce.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="OnscreenKeyboard.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The OnscreenKeyboard complexType is the container for the collection of needs and preferences 
for how to configure an onscreen keyboard.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="alphanumericKeyboardLayout" default="standard" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="standard"/>
                        <xs:enumeration value="sequential"/>
                        <xs:enumeration value="frequency"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="alphanumericKeyboardLayoutCustom" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="keyHeightRelative" type="xs:integer" default="3" minOccurs = "1" maxOccurs = "1"/>
            <xs:element name="keyWidthRelative" type="xs:integer" default="4" minOccurs = "1" maxOccurs = "1"/>
            <xs:element name="keySpacingRelative" type="xs:integer" default="0" minOccurs = "1" maxOccurs = "1"/>
            <xs:element name="keySelectionSoundFeedback" type="xs:boolean" default="true" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="pointAndClickSelection" type="PointAndClickSelection.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="pointAndDwellSelection" type="PointAndDwellSelection.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="automaticScanning" type="AutomaticScanning.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="inverseScanning" type="InverseScanning.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="directedScanning" type="DirectedScanning.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="codeSelection" type="CodeSelection.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="AlternativeKeyboard.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The AlternativeKeyboard complexType is the container for the collection of needs and preferences 
for how to configure an alternative keyboard.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="alphanumericKeyboardLayout" default="standard" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="standard"/>
                        <xs:enumeration value="sequential"/>
                        <xs:enumeration value="frequency"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="alphanumericKeyboardLayoutCustom" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="stickyKeys" type="StickyKeys.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="repeatKeys" type="RepeatKeys.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="slowKeys" type="SlowKeys.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="debounceKeys" type="Debounce.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="resizableKeys" type="ResizableKeys.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="keySelectionSoundFeedback" type="xs:boolean" default="true" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="MouseEmulation.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The MouseEmulation complexType is the container for the collection of needs and preferences 
for how to configure a replacement for a standard mouse.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="cursorSpeed" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="cursorAcceleration" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="mouseEmulationDevice" default="keypad" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="keypad"/>
                        <xs:enumeration value="keyboard"/>
                        <xs:enumeration value="switch"/>
                        <xs:enumeration value="voice"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="AlternativePointing.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The AlternativePointing complexType is the container for the collection of needs and preferences 
for how to configure an alternative pointing device.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="relativePointing" type="RelativePointing.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="absolutePointing" type="xs:boolean" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="deviceHandedness" default="right" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="left"/>
                        <xs:enumeration value="right"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="doubleClickSpeed" type="xs:decimal" default="0.4" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="switchSelect" type="xs:boolean" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="dwellSelect" type="DwellSelect.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="VoiceRecognition.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The VoiceRecognition complexType is the container for the collection of 
needs and preferences for how to configure a voice recognition system.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="voiceProfileIdentity" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="microphoneGain" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="controllerWindow" default="show" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="hide"/>
                        <xs:enumeration value="show"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dictation" type="xs:boolean" default="false" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="commandAndControl" type="CommandAndControl.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="CodedInput.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The CodedInput complexType is the container for the collection of data elements 
that state needs and preferences for how to configure a coded input system.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="code" default="morse" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="morse"/>
                        <xs:enumeration value="quartering"/>
                        <xs:enumeration value="eight cell"/>
                        <xs:enumeration value="chordic"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="numberOfInputs" type="xs:integer" default="2" minOccurs = "1" maxOccurs = "1"/>
            <xs:element name="codeTermination" type="CodeTermination.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="switchPort" default="usb" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="ps/2"/>
                        <xs:enumeration value="game"/>
                        <xs:enumeration value="serial"/>
                        <xs:enumeration value="usb"/>
                        <xs:enumeration value="firewire"/>
                        <xs:enumeration value="infrared"/>
                        <xs:enumeration value="bluetooth"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="customCode" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="applicaton" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Prediction.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The prediction complexType is the container for the collection of data elements that state needs and 
preferences for how to configure a prediction system.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="predictionType" default="word" minOccurs = "1" maxOccurs = "unbounded">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="letter"/>
                        <xs:enumeration value="word"/>
                        <xs:enumeration value="word completion"/>
                        <xs:enumeration value="command"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="numberOfPredictionChoicesDisplayed" type="xs:integer" default="5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="lexicon" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="StructuralNavigation.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The StructuralNavigation complexType is the container for the collection of needs and preferences 
for how to move through the contents using the stucture of the content.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="usage" default="preferred" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="required"/>
                        <xs:enumeration value="preferred"/>
                        <xs:enumeration value="optionally use"/>
                        <xs:enumeration value="prohibited"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="navigationStrategy" default="depth first" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="breadth first"/>
                        <xs:enumeration value="depth first"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="tableOfContents" type="xs:boolean" default="true" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="application" type="Application.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Application.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Application complexType is the container for he collection of needs and preferences for how to 
configure vendor-specific parameters of assistive technology.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="name" type="xs:normalizedString" minOccurs = "1" maxOccurs = "1"/>
            <xs:element name="applicationVersion" type="xs:normalizedString" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="applicationPriority" type="xs:integer" minOccurs = "1" maxOccurs = "1"/>
            <xs:element name="applicationParameter" type="ApplicationParameter.Type" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="ApplicationParameter.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Application_Parameter complexType is the container for the collection of data elements that states 
a preference for the value for an application-specific parameter.  This parameter is passed to the application 
at run-time.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="name" type="xs:normalizedString" minOccurs = "1" maxOccurs = "1"/>
            <xs:element name="parameterValue" type="xs:normalizedString" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="StickyKeys.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The StickyKeys complexType is the container for the collection of 
needs and preferences for the use of sticky keys.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="modifierIndication" type="xs:boolean" default="true" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="RepeatKeys.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The RepeatKeys complexType is the container for the collection of 
needs and preferences for the use of repeat keys.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="automaticDelay" type="xs:boolean" default="true" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="automaticRepeatRate" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="SlowKeys.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The SlowKeys complexType is the container for the collection of 
needs and preferences for the use of slow keys.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="slowKeysInterval" type="xs:decimal" default="0.2" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="Debounce.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The Debounce complexType is the container for the needs and 
preferences for the use of debounce.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="debounceInterval" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="ResizableKeys.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The ResizableKeys complexType is the container for the collection of data elements that states a 
preference for how to configure keys when an alternative keyboard allows key sizes to be adjusted.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="keyHeightAbsolute" type="xs:integer" default="10" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="keyWidthAbsolute" type="xs:integer" default="10" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="keySpacingAbsolute" type="xs:integer" default="0" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="PointAndClickSelection.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The PointAndClickSelection complexType is the container for the collection of 
needs and preferences for the use of a point-and-click interface.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="switchDelay" type="xs:decimal" default="0.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="PointAndDwellSelection.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The PointAndDwellSelection complexType is the container for the collection of needs and 
preferences for the use of a point-and-dwell interface.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="dwellTime" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="AutomaticScanning.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The AutomaticScanning complexType is the container for the collection of needs and 
preferences for the use of an automatic scanning interface.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="scanSpeed" type="xs:decimal" default="1.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="scanSwitchDelay" type="xs:decimal" default="0.0" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:element name="switchPort" default="usb" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="ps/2"/>
                        <xs:enumeration value="game"/>
                        <xs:enumeration value="serial"/>
                        <xs:enumeration value="usb"/>
                        <xs:enumeration value="firewire"/>
                        <xs:enumeration value="infrared"/>
                        <xs:enumeration value="bluetooth"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="automaticScanInitialDelay" type="xs:decimal" default="0.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="automaticScanRepeat" default="1" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="1"/>
                        <xs:enumeration value="2"/>
                        <xs:enumeration value="3"/>
                        <xs:enumeration value="4"/>
                        <xs:enumeration value="5"/>
                        <xs:enumeration value="infinity"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="switchAssignment" type="SwitchAssignment.Type" minOccurs = "1" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="SwitchAssignment.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The SwitchAsignment complexType is the container for the collection of data elements 
that states a preference for an assigned function of a numbered switch.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="switchFunction" default="select" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="select"/>
                        <xs:enumeration value="cancel"/>
                        <xs:enumeration value="scan"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="switchNumber" type="xs:integer" minOccurs = "1" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="InverseScanning.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The InverseScanning complexType is the container for the collection of needs and 
preferences for the use of an inverse scanning interface.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="scanSpeed" type="xs:decimal" default="1.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="scanSwitchDelay" type="xs:decimal" default="0.0" minOccurs = "0" maxOccurs = "unbounded"/>
            <xs:element name="switchPort" default="usb" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="ps/2"/>
                        <xs:enumeration value="game"/>
                        <xs:enumeration value="serial"/>
                        <xs:enumeration value="usb"/>
                        <xs:enumeration value="firewire"/>
                        <xs:enumeration value="infrared"/>
                        <xs:enumeration value="bluetooth"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dwellTime" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="switchAssignment" type="SwitchAssignment.Type" minOccurs = "1" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="DirectedScanning.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The DirectedScanning complexType is the container for the collection of needs and 
preferences for the use of a directed scanning interface.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="scanSpeed" type="xs:decimal" default="1.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="switchPort" default="usb" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="ps/2"/>
                        <xs:enumeration value="game"/>
                        <xs:enumeration value="serial"/>
                        <xs:enumeration value="usb"/>
                        <xs:enumeration value="firewire"/>
                        <xs:enumeration value="infrared"/>
                        <xs:enumeration value="bluetooth"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="dwellTime" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="switchAssignment" type="SwitchAssignment.Type" minOccurs = "1" maxOccurs = "unbounded"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="CodeSelection.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The CodeSelection complexype is the container for the collection of needs and 
preferences for the use of code selection.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="code" default="morse" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="morse"/>
                        <xs:enumeration value="quartering"/>
                        <xs:enumeration value="eight cell"/>
                        <xs:enumeration value="chordic"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="numberOfInputs" type="xs:integer" default="2" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="codeTermination" type="CodeTermination.Type" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="selectionMethod" default="point-and-click" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="point-and-dwell"/>
                        <xs:enumeration value="point-and-click"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="switchPort" default="usb" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="ps/2"/>
                        <xs:enumeration value="game"/>
                        <xs:enumeration value="serial"/>
                        <xs:enumeration value="usb"/>
                        <xs:enumeration value="firewire"/>
                        <xs:enumeration value="infrared"/>
                        <xs:enumeration value="bluetooth"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="customCode" type="xs:anyURI" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="CodeTermination.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The CodeTermination complexType is the container for the collection of needs and 
preferences for a method to use at the end of a code for variable-lebgth codes.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="codeTerminationSignal" default="switch" minOccurs = "1" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="switch"/>
                        <xs:enumeration value="timed"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="codeRate" type="xs:decimal" default="3.0" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="DwellSelect.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The DwellSelect complexType is the container for the preference to use dwell 
for selection when using an alternative pointing device (this is mutually exclusive 
with switch select).
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="useDwellSelect" type="xs:boolean" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="dwellTime" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="RelativePointing.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The RelativePointing complexType is the container for the collection of needs 
and preferences for how to configure a relative pointing device (this is 
mutually exclusive with absolute pointing).
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="cursorSpeed" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="cursorAcceleration" type="xs:decimal" default="0.5" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <xs:complexType name="CommandAndControl.Type">
        <xs:annotation>
            <xs:documentation source="umldocumentation">
                The CommandAndControl complexType is the container for the collection of needs and 
preferences for a voice recognition system's command and control settings.
            </xs:documentation>
        </xs:annotation>
        <xs:choice minOccurs = "0" maxOccurs = "unbounded">
            <xs:element name="vocabulary" default="contextual" minOccurs = "0" maxOccurs = "1">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="contextual"/>
                        <xs:enumeration value="natural"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="confirmationFeedback" type="xs:boolean" default="true" minOccurs = "0" maxOccurs = "1"/>
            <xs:element name="mouseControl" type="xs:boolean" default="true" minOccurs = "0" maxOccurs = "1"/>
            <xs:group ref="grpStrict.any"/>
        </xs:choice>
    </xs:complexType>

    <!-- ================================================================================================== -->

    <!-- Declaration of the elements ********************************************************************** -->

    <!-- ================================================================================================== -->

    <!-- Declaration of the root element(s) *************************************************************** -->

    <xs:element name="accessForAlluser" type="AccessForAllUser.Type"/>

    <!-- ================================================================================================== -->

</xs:schema>

