<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
        <xsd:annotation>
                <xsd:documentation>
                        SSML 1.1 (Core Profile) no-namespace Schema (20080823)
                </xsd:documentation>
        </xsd:annotation>
        <xsd:annotation>
                <xsd:documentation>
                        Copyright 1998-2008 W3C (MIT, ERCIM, Keio), All Rights
                        Reserved. Permission to use, copy, modify and distribute
                        the SSML core schema and its accompanying documentation
                        for any purpose and without fee is hereby granted in
                        perpetuity, provided that the above copyright notice and
                        this paragraph appear in all copies. The copyright
                        holders make no representation about the suitability of
                        the schema for any purpose. It is provided "as is"
                        without expressed or implied warranty.
                </xsd:documentation>
        </xsd:annotation>

        <xsd:annotation>
                <xsd:documentation>
                        Importing dependent namespaces
                </xsd:documentation>
        </xsd:annotation>
        <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
                schemaLocation="http://www.w3.org/2001/xml.xsd" />
        <xsd:annotation>
                <xsd:documentation>General Datatypes</xsd:documentation>
        </xsd:annotation>

        <xsd:simpleType name="duration">
                <xsd:annotation>
                        <xsd:documentation>
                                Duration follows "Times" in CCS specification; e.g.
                                "25ms", "3s"
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="(\+)?([0-9]*\.)?[0-9]+(ms|s)" />
                </xsd:restriction>
        </xsd:simpleType>


        <xsd:simpleType name="number">
                <xsd:annotation>
                        <xsd:documentation>
                                number: e.g. 10, 5.5, 1.5, 9., .45
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:decimal">
                        <xsd:minInclusive value="0" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="relative">
                <xsd:annotation>
                        <xsd:documentation>
                                Modeled on number datatype: e.g. +4.5, -.45
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern
                                value="[+\-]([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="percent">
                <xsd:annotation>
                        <xsd:documentation>
                                Modeled on number datatype: e.g. +4.5%, -.45%
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern
                                value="[+\-]?([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)%" />
                </xsd:restriction>
        </xsd:simpleType>

<xsd:simpleType name="nonnegpercent">
                <xsd:annotation>
                        <xsd:documentation>
                                Modeled on number datatype: e.g. 4.5%, .45%
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern
                                value="([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)%" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="semitone">
                <xsd:annotation>
                        <xsd:documentation>
                                Modeled on relative datatype: e.g. +4.5st, -.45st
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern
                                value="[+\-]([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)st" />
                </xsd:restriction>
        </xsd:simpleType>


        <xsd:simpleType name="hertz.number">
                <xsd:annotation>
                        <xsd:documentation>
                                number Hertz: e.g. 10Hz, 5.5Hz, 1.5Hz,, 9.Hz,, .45Hz
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern
                                value="([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)Hz" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="hertz.relative">
                <xsd:annotation>
                        <xsd:documentation>
                                relative Hertz: e.g. +10Hz, -5.5Hz, +1.5Hz,
                                +9.Hz,+.45Hz
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern
                                value="[+\-]([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)Hz" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="db.datatype">
                <xsd:annotation>
                        <xsd:documentation>
                                soundLevel and prosody volume: +/- N.N dB
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="(\+|-)?([0-9]*\.)?[0-9]+dB" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="height.scale">
                <xsd:annotation>
                        <xsd:documentation>
                                descriptive values for height
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="x-high" />
                        <xsd:enumeration value="high" />
                        <xsd:enumeration value="medium" />
                        <xsd:enumeration value="low" />
                        <xsd:enumeration value="x-low" />
                        <xsd:enumeration value="default" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="speed.scale">
                <xsd:annotation>
                        <xsd:documentation>
                                descriptive values for speed
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="x-fast" />
                        <xsd:enumeration value="fast" />
                        <xsd:enumeration value="medium" />
                        <xsd:enumeration value="slow" />
                        <xsd:enumeration value="x-slow" />
                        <xsd:enumeration value="default" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="volume.scale">
                <xsd:annotation>
                        <xsd:documentation>
                                descriptive values for volume
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="silent" />
                        <xsd:enumeration value="x-soft" />
                        <xsd:enumeration value="soft" />
                        <xsd:enumeration value="medium" />
                        <xsd:enumeration value="loud" />
                        <xsd:enumeration value="x-loud" />
                        <xsd:enumeration value="default" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="pitch.datatype">
                <xsd:union
                        memberTypes="hertz.number hertz.relative percent semitone height.scale" />
        </xsd:simpleType>

        <xsd:simpleType name="range.datatype">
                <xsd:union
                        memberTypes="hertz.number hertz.relative percent semitone height.scale" />
        </xsd:simpleType>

        <xsd:simpleType name="rate.datatype">
                <xsd:union memberTypes="number nonnegpercent speed.scale" />
        </xsd:simpleType>

        <xsd:simpleType name="volume.datatype">
                <xsd:union memberTypes="db.datatype volume.scale" />
        </xsd:simpleType>

        <xsd:simpleType name="contourpoint.datatype">
                <xsd:annotation>
                        <xsd:documentation>
                                (Number%,pitch.datatype)
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern
                                value="\(([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)%,(([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)Hz|[+\-]([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)Hz|[+\-]?([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)%|[+\-]([0-9]+|[0-9]+.[0-9]*|[0-9]*.[0-9]+)st|x-high|high|medium|low|x-low|default)\)" />
                </xsd:restriction>
        </xsd:simpleType>


        <xsd:simpleType name="contour.datatype">
                <xsd:annotation>
                        <xsd:documentation>
                                list of whitespace separated contourpoints
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:list itemType="contourpoint.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="gender.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="male" />
                        <xsd:enumeration value="female" />
                        <xsd:enumeration value="neutral" />
                        <xsd:enumeration value="" />
                </xsd:restriction>
        </xsd:simpleType>


        <xsd:simpleType name="level.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="strong" />
                        <xsd:enumeration value="moderate" />
                        <xsd:enumeration value="none" />
                        <xsd:enumeration value="reduced" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="strength.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none" />
                        <xsd:enumeration value="x-weak" />
                        <xsd:enumeration value="weak" />
                        <xsd:enumeration value="medium" />
                        <xsd:enumeration value="strong" />
                        <xsd:enumeration value="x-strong" />

                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="version.datatype">
                <xsd:restriction base="xsd:NMTOKEN" />
        </xsd:simpleType>


        <xsd:simpleType name="voicename.datatype">
                <xsd:restriction base="xsd:token">
                        <xsd:pattern value="\S+" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="voicenames.datatype">
                <xsd:list itemType="voicename.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="name.datatype">
                <xsd:union
                        memberTypes="voicenames.datatype emptystring.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="alphabet.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="(ipa|x-.*)" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="onlangfailure.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="changevoice" />
                        <xsd:pattern value="ignoretext" />
                        <xsd:pattern value="ignorelang" />
                        <xsd:pattern value="processorchoice" />
                </xsd:restriction>
        </xsd:simpleType>


        <xsd:simpleType name="role.datatype">
                <xsd:list itemType="xsd:QName" />
        </xsd:simpleType>

        <xsd:simpleType name="timedesignation.datatype">
                <xsd:annotation>
                        <xsd:documentation>
                                Time designation following Time in CSS2
                        </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="(\+)?([0-9]*\.)?[0-9]+(ms|s)" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="emptystring.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="0" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="age.datatype">
                <xsd:union
                        memberTypes="xsd:nonNegativeInteger emptystring.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="variant.datatype">
                <xsd:union
                        memberTypes="xsd:positiveInteger emptystring.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="languages.datatype">
                <xsd:union memberTypes="xsd:NMTOKENS emptystring.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="required.datatype">
                <xsd:union
                        memberTypes="requiredlist.datatype emptystring.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="requiredlist.datatype">
                <xsd:list itemType="requireditem.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="requireditem.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="name" />
                        <xsd:pattern value="languages" />
                        <xsd:pattern value="gender" />
                        <xsd:pattern value="age" />
                        <xsd:pattern value="variant" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="ordering.datatype">
                <xsd:union
                        memberTypes="orderinglist.datatype emptystring.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="orderinglist.datatype">
                <xsd:list itemType="orderingitem.datatype" />
        </xsd:simpleType>

        <xsd:simpleType name="orderingitem.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="name" />
                        <xsd:pattern value="languages" />
                        <xsd:pattern value="gender" />
                        <xsd:pattern value="age" />
                        <xsd:pattern value="variant" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="onvoicefailure.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="priorityselect" />
                        <xsd:pattern value="keepexisting" />
                        <xsd:pattern value="processorchoice" />
                </xsd:restriction>
        </xsd:simpleType>


        <xsd:simpleType name="fetchhint.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="safe" />
                        <xsd:pattern value="prefetch" />
                </xsd:restriction>
        </xsd:simpleType>

        <xsd:simpleType name="phonemetype.datatype">
                <xsd:restriction base="xsd:string">
                        <xsd:pattern value="default" />
                        <xsd:pattern value="ruby" />
                </xsd:restriction>
        </xsd:simpleType>


        <xsd:annotation>
                <xsd:documentation>Attributes and Groups</xsd:documentation>
        </xsd:annotation>

        <xsd:attributeGroup name="speak.attribs">
                <xsd:attribute name="version" type="version.datatype" />
                <xsd:attribute ref="xml:lang" />
                <xsd:attribute ref="xml:base" />
                <xsd:attribute name="onlangfailure"
                        type="onlangfailure.datatype" />
                <xsd:attribute name="startmark" type="xsd:token" />
                <xsd:attribute name="endmark" type="xsd:token" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:attributeGroup>

        <xsd:annotation>
                <xsd:documentation>Content Models</xsd:documentation>
        </xsd:annotation>

        <xsd:group name="allowed-within-sentence">
                <xsd:choice>
                        <xsd:element ref="aws" />
                </xsd:choice>
        </xsd:group>


        <xsd:group name="paragraph.class">
                <xsd:sequence>
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                                <xsd:group ref="allowed-within-sentence" />
                                <xsd:element ref="s" />
                                <xsd:element ref="lookup" />
                                <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
                </xsd:sequence>
        </xsd:group>

        <xsd:group name="sentence.class">
                        <xsd:choice>
                                <xsd:group ref="allowed-within-sentence" />
                                <xsd:element ref="lookup" />
                                <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
        </xsd:group>

        <xsd:group name="sentenceAndStructure.class">
                        <xsd:choice>
                                <xsd:group ref="allowed-within-sentence" />
                                <xsd:group ref="structure" />
                                <xsd:element ref="lookup" />
                        </xsd:choice>
        </xsd:group>

        <xsd:group name="descAndSentenceAndStructure.class">
                        <xsd:choice>
                                <xsd:group ref="sentenceAndStructure.class" />
                                <xsd:element ref="desc" />
                                <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
        </xsd:group>

        <xsd:group name="speak.class">
                <xsd:sequence>
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                                <xsd:element name="meta" type="ssml-meta" />
                                <xsd:element name="metadata" type="ssml-metadata" />
                                <xsd:element name="lexicon" type="ssml-lexicon" />
                                <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
                        <xsd:sequence minOccurs="0">
                        <xsd:group ref="sentenceAndStructure.class"/>
                        <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                                 <xsd:group ref="sentenceAndStructure.class"/>
                                 <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
                        </xsd:sequence>
                </xsd:sequence>
        </xsd:group>

        <xsd:annotation>
                <xsd:documentation>Elements</xsd:documentation>
        </xsd:annotation>


        <xsd:element name="aws" abstract="true">
                <xsd:annotation>
                        <xsd:documentation>
                                The 'allowed-within-sentence' group uses this
                                abstract element.
                        </xsd:documentation>
                </xsd:annotation>
        </xsd:element>

        <xsd:element name="struct" abstract="true" />
        <xsd:group name="structure">
                <xsd:choice>
                        <xsd:element ref="struct" />
                </xsd:choice>
        </xsd:group>

        <xsd:element name="speak" type="speak" />

        <xsd:complexType name="speak" mixed="true">
                <xsd:group ref="speak.class" />
                <xsd:attributeGroup ref="speak.attribs" />
        </xsd:complexType>

        <xsd:element name="p" type="paragraph"
                substitutionGroup="struct" />

        <xsd:complexType name="paragraph" mixed="true">
                <xsd:group ref="paragraph.class" />
                <xsd:attribute ref="xml:lang" />
                <xsd:attribute ref="xml:id" />
                <xsd:attribute name="onlangfailure"
                        type="onlangfailure.datatype" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="s" type="sentence" substitutionGroup="struct" />
        <xsd:complexType name="sentence" mixed="true">
                <xsd:group ref="sentence.class"  minOccurs="0" maxOccurs="unbounded"/>
                <xsd:attribute ref="xml:lang" />
                <xsd:attribute ref="xml:id" />
                <xsd:attribute name="onlangfailure"
                        type="onlangfailure.datatype" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>



        <xsd:element name="token" type="tokenType"
                substitutionGroup="aws" />
        <xsd:element name="w" type="tokenType" substitutionGroup="aws" />

        <xsd:complexType name="tokenType" mixed="true">
                <xsd:sequence>
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                                <xsd:element ref="audio" />
                                <xsd:element ref="break" />
                                <xsd:element ref="emphasis" />
                                <xsd:element ref="mark" />
                                <xsd:element ref="phoneme" />
                                <xsd:element ref="prosody" />
                                <xsd:element ref="say-as" />
                                <xsd:element ref="sub" />
                                <xsd:element ref="voice" />
                                <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
                </xsd:sequence>
                <xsd:attribute ref="xml:id" />
                <xsd:attribute ref="xml:lang" />
                <xsd:attribute name="onlangfailure"
                        type="onlangfailure.datatype" />
                <xsd:attribute name="role" type="role.datatype" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="voice" type="voice" substitutionGroup="aws" />

        <xsd:complexType name="voice" mixed="true">
                <xsd:group ref="sentenceAndStructure.class" minOccurs="0" maxOccurs="unbounded" />
                <xsd:attribute name="gender" type="gender.datatype" />
                <xsd:attribute name="age" type="age.datatype" />
                <xsd:attribute name="variant" type="variant.datatype" />
                <xsd:attribute name="name" type="name.datatype" />
                <xsd:attribute name="languages" type="languages.datatype" />
                <xsd:attribute name="required" type="required.datatype"
                        default="languages" />
                <xsd:attribute name="ordering" type="ordering.datatype"
                        default="languages" />
                <xsd:attribute name="onvoicefailure"
                        type="onvoicefailure.datatype" default="priorityselect" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="prosody" type="prosody"
                substitutionGroup="aws" />
        <xsd:complexType name="prosody" mixed="true">
                <xsd:group ref="sentenceAndStructure.class" minOccurs="0" maxOccurs="unbounded" />
                <xsd:attribute name="pitch" type="pitch.datatype" />
                <xsd:attribute name="contour" type="contour.datatype" />
                <xsd:attribute name="range" type="range.datatype" />
                <xsd:attribute name="rate" type="rate.datatype" />
                <xsd:attribute name="duration" type="duration" />
                <xsd:attribute name="volume" type="volume.datatype"
                        default="+0.0dB" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="audio" type="audio" substitutionGroup="aws" />

        <xsd:complexType name="audio" mixed="true">
                <xsd:group ref="descAndSentenceAndStructure.class" minOccurs="0" maxOccurs="unbounded" />
                <xsd:attribute name="src" type="xsd:anyURI" />
                <xsd:attribute name="fetchtimeout"
                        type="timedesignation.datatype" />
                <xsd:attribute name="fetchhint" type="fetchhint.datatype"
                        default="prefetch" />
                <xsd:attribute name="maxage" type="xsd:nonNegativeInteger" />
                <xsd:attribute name="maxstale" type="xsd:nonNegativeInteger" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="desc" type="desc" />

        <xsd:complexType name="desc" mixed="true">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute ref="xml:lang" />
                <xsd:attribute name="onlangfailure"
                        type="onlangfailure.datatype" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="emphasis" type="emphasis"
                substitutionGroup="aws" />
        <xsd:complexType name="emphasis" mixed="true">
                <xsd:group ref="sentence.class" minOccurs="0" maxOccurs="unbounded"/>
                <xsd:attribute name="level" type="level.datatype"
                        default="moderate" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="sub" type="sub" substitutionGroup="aws" />

        <xsd:complexType name="sub" mixed="true">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute name="alias" type="xsd:string" use="required" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>


        <xsd:element name="say-as" type="say-as" substitutionGroup="aws" />
        <xsd:complexType name="say-as" mixed="true">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute name="interpret-as" type="xsd:NMTOKEN"
                        use="required" />
                <xsd:attribute name="format" type="xsd:NMTOKEN" />
                <xsd:attribute name="detail" type="xsd:NMTOKEN" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="phoneme" type="phoneme"
                substitutionGroup="aws" />
        <xsd:complexType name="phoneme" mixed="true">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute name="ph" type="xsd:string" use="required" />
                <xsd:attribute name="alphabet" type="alphabet.datatype" />
                <xsd:attribute name="type" type="phonemetype.datatype"
                        default="default" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="break" type="break" substitutionGroup="aws" />
        <xsd:complexType name="break">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute name="time" type="duration" />
                <xsd:attribute name="strength" type="strength.datatype"
                        default="medium" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="mark" type="mark" substitutionGroup="aws" />
        <xsd:complexType name="mark">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute name="name" type="xsd:token" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:complexType name="ssml-metadata">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:anyAttribute namespace="##any" processContents="strict" />
        </xsd:complexType>

        <xsd:complexType name="ssml-meta">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute name="name" type="xsd:NMTOKEN" />
                <xsd:attribute name="content" type="xsd:string"
                        use="required" />
                <xsd:attribute name="http-equiv" type="xsd:NMTOKEN" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:complexType name="ssml-lexicon">
                <xsd:sequence>
                        <xsd:any namespace="##other" minOccurs="0"
                                maxOccurs="unbounded" processContents="lax" />
                </xsd:sequence>
                <xsd:attribute name="uri" type="xsd:anyURI" use="required" />
                <xsd:attribute ref="xml:id" use="required" />
                <xsd:attribute name="type" type="xsd:string"
                        default="application/pls+xml" />
                <xsd:attribute name="fetchtimeout"
                        type="timedesignation.datatype" />
                <xsd:attribute name="maxage" type="xsd:nonNegativeInteger" />
                <xsd:attribute name="maxstale" type="xsd:nonNegativeInteger" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>

        <xsd:element name="lookup" type="lookupType" />

        <xsd:complexType name="lookupType" mixed="true">
                <xsd:sequence>
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                                <xsd:element ref="audio" />
                                <xsd:element ref="break" />
                                <xsd:element ref="emphasis" />
                                <xsd:element ref="lang" />
                                <xsd:element ref="lookup" />
                                <xsd:element ref="mark" />
                                <xsd:element ref="p" />
                                <xsd:element ref="phoneme" />
                                <xsd:element ref="prosody" />
                                <xsd:element ref="say-as" />
                                <xsd:element ref="sub" />
                                <xsd:element ref="s" />
                                <xsd:element ref="token" />
                                <xsd:element ref="voice" />
                                <xsd:element ref="w" />
                                <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
                </xsd:sequence>
                <xsd:attribute name="ref" type="xsd:IDREF" use="required" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>


        <xsd:element name="lang" type="langType" substitutionGroup="aws" />

        <xsd:complexType name="langType" mixed="true">
                <xsd:sequence>
                        <xsd:choice minOccurs="0" maxOccurs="unbounded">
                                <xsd:element ref="audio" />
                                <xsd:element ref="break" />
                                <xsd:element ref="emphasis" />
                                <xsd:element ref="lang" />
                                <xsd:element ref="lookup" />
                                <xsd:element ref="mark" />
                                <xsd:element ref="p" />
                                <xsd:element ref="phoneme" />
                                <xsd:element ref="prosody" />
                                <xsd:element ref="say-as" />
                                <xsd:element ref="sub" />
                                <xsd:element ref="s" />
                                <xsd:element ref="token" />
                                <xsd:element ref="voice" />
                                <xsd:element ref="w" />
                                <xsd:any namespace="##other" processContents="lax" />
                        </xsd:choice>
                </xsd:sequence>
                <xsd:attribute ref="xml:lang" use="required" />
                <xsd:attribute name="onlangfailure"
                        type="onlangfailure.datatype" />
                <xsd:anyAttribute namespace="##other" processContents="lax" />
        </xsd:complexType>



</xsd:schema>

