﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xfm="http://www.w3.org/2002/xforms" version="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="http://www.w3.org/MarkUp/Forms/2002/XForms-Schema.xsd" namespace="http://www.w3.org/2002/xforms" />
  <xs:import schemaLocation="http://www.w3.org/2001/XMLSchema.xsd" namespace="http://www.w3.org/2001/XMLSchema" />
  <xs:include schemaLocation="http://mailmarkup.org/mime.xsd" />
  <xs:element name="mail">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="session" />
      </xs:sequence>
      <xs:attribute ref="mail-type" use="required" />
      <xs:attribute ref="version" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:attribute fixed="application/mail+xml" name="mail-type" />
  <xs:attribute fixed="1.1" name="version" />
  <xs:element name="session">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="address" />
        <xs:element minOccurs="0" ref="attachments" />
        <xs:element ref="subject" />
        <xs:element minOccurs="0" ref="presentation" />
        <xs:choice>
          <xs:element ref="source" />
          <xs:element ref="plain-text" />
          <xs:element ref="markup" />
        </xs:choice>
      </xs:sequence>
      <xs:attribute ref="time-stamp" use="required" />
      <xs:attribute default="en" ref="language" use="optional" />
    </xs:complexType>
  </xs:element>
  <xs:attribute name="time-stamp">
    <xs:simpleType>
      <xs:restriction base="xs:dateTime" />
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="language">
    <xs:simpleType>
      <xs:restriction base="xs:language" />
    </xs:simpleType>
  </xs:attribute>
  <xs:element name="address">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="to" type="agent" />
        <xs:element minOccurs="0" maxOccurs="unbounded" name="copy" type="agent" />
        <xs:element minOccurs="0" maxOccurs="unbounded" name="blind-copy" type="agent" />
        <xs:element name="from" type="agent" />
        <xs:element ref="reply-to" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="reply-to">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="reply-type">
          <xs:attribute ref="alias" use="optional" />
          <xs:attribute ref="public-key" use="optional" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="reply-type">
    <xs:restriction base="xs:anyURI">
      <xs:pattern value="\c+(\.\c)*@\c+(\.\c)*(\.[a-z]{2,3})|([a-z]{2}\.[a-z]{2})" />
      <xs:pattern value="no-reply" />
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="agent">
    <xs:simpleContent>
      <xs:extension base="email">
        <xs:attribute ref="alias" use="optional" />
        <xs:attribute ref="public-key" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:simpleType name="email">
    <xs:restriction base="xs:anyURI">
      <xs:pattern value="\w+(\.\w)*@\w+(\.\w)*(\.[\w]{2,3})|([\w]{2}\.[\w]{2})"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:attribute name="alias">
    <xs:simpleType>
      <xs:restriction base="xs:token" />
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="public-key">
    <xs:simpleType>
      <xs:restriction base="xs:QName">
        <xs:pattern value="[A-Z0-9]+\:\w+"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:element name="attachments">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="collection" />
        <xs:element ref="file" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="collection">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="collection-name" />
        <xs:element maxOccurs="unbounded" ref="collection-file" />
        <xs:element minOccurs="0" ref="collection-type" />
        <xs:element ref="collection-description" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="collection-name">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:minLength value="2" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="collection-file">
    <xs:simpleType>
      <xs:restriction base="xs:NCName">
        <xs:pattern value="\c+(\.\c+)+"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="collection-type" type="mime-type" />
  <xs:element name="collection-description">
    <xs:simpleType>
      <xs:restriction base="xs:normalizedString">
        <xs:minLength value="3" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="file">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="file-name" />
        <xs:element ref="file-type" />
        <xs:element ref="file-description" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="file-name">
    <xs:simpleType>
      <xs:restriction base="xs:NCName">
        <xs:pattern value="\c+(\.\c+)+" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="file-type" type="mime-type" />
  <xs:element name="file-description">
    <xs:simpleType>
      <xs:restriction base="xs:normalizedString" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="subject">
    <xs:simpleType>
      <xs:restriction base="xs:normalizedString">
        <xs:minLength value="2" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="presentation">
    <xs:complexType>
      <xs:sequence maxOccurs="unbounded">
        <xs:element ref="stylesheet" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="stylesheet">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:anyURI">
          <xs:attribute ref="style-namespace" use="required" />
          <xs:attribute ref="style-type" use="required" />
          <xs:attribute default="screen" ref="media" use="optional" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:attribute name="style-type">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="application/xslt+xml" />
        <xs:enumeration value="text/css" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="style-namespace">
    <xs:simpleType>
      <xs:restriction base="xs:ID">
        <xs:pattern value="\w+" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="media">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="all" />
        <xs:enumeration value="aural" />
        <xs:enumeration value="braille" />
        <xs:enumeration value="embossed" />
        <xs:enumeration value="handheld" />
        <xs:enumeration value="print" />
        <xs:enumeration value="projection" />
        <xs:enumeration value="screen" />
        <xs:enumeration value="tty" />
        <xs:enumeration value="tv" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:element name="source">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="source-uri" />
        <xs:element ref="source-type" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="source-uri">
    <xs:simpleType>
      <xs:restriction base="xs:anyURI">
        <xs:minLength value="5" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="source-type" type="mime-type" />
  <xs:element name="plain-text">
    <xs:simpleType>
      <xs:restriction base="xs:string">
        <xs:minLength value="5" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="markup">
    <xs:complexType>
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
          <xs:group ref="complex-blocks" />
          <xs:group ref="simple-blocks" />
          <xs:any namespace="##other" processContents="lax" />
        </xs:choice>
      </xs:sequence>
      <xs:anyAttribute namespace="xmlns" />
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="core-attrs">
    <xs:attribute ref="id" use="optional" />
    <xs:attribute ref="style" use="optional" />
    <xs:attribute ref="title" use="optional" />
    <xs:attribute ref="role" use="optional" />
  </xs:attributeGroup>
  <xs:attributeGroup name="core-attrs-uri">
    <xs:attribute ref="id" use="optional" />
    <xs:attribute ref="style" use="optional" />
    <xs:attribute ref="title" use="optional" />
    <xs:attribute ref="role" use="optional" />
    <xs:attribute ref="uri" use="optional" />
  </xs:attributeGroup>
  <xs:attributeGroup name="inter-attrs">
    <xs:attribute default="tl" ref="direction" use="optional" />
    <xs:attribute default="horizontal" ref="orientation" use="optional" />
    <xs:attribute default="standard" ref="wrap" use="optional" />
    <xs:attribute default="en" ref="section-language" use="optional" />
  </xs:attributeGroup>
  <xs:attributeGroup name="cell-attrs">
    <xs:attribute default="1" ref="span-column" use="optional" />
    <xs:attribute default="1" ref="span-row" use="optional" />
  </xs:attributeGroup>
  <xs:attribute name="id">
    <xs:simpleType>
      <xs:restriction base="xs:ID">
        <xs:minLength value="2" />
        <xs:pattern value="\w+" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="style">
    <xs:simpleType>
      <xs:restriction base="xs:QName">
        <xs:minLength value="4" />
        <xs:pattern value="\w+\:\w+" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="title">
    <xs:simpleType>
      <xs:restriction base="xs:normalizedString">
        <xs:minLength value="2" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="role">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:minLength value="2" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="uri">
    <xs:simpleType>
      <xs:restriction base="xs:anyURI">
        <xs:minLength value="5" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="direction">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="tl" />
        <xs:enumeration value="br" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="orientation">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="horizontal" />
        <xs:enumeration value="vertical" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="wrap">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="standard" />
        <xs:enumeration value="reverse" />
        <xs:enumeration value="none" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="section-language">
    <xs:simpleType>
      <xs:restriction base="xs:language">
        <xs:minLength value="2" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="refer">
    <xs:simpleType>
      <xs:restriction base="xs:IDREF">
        <xs:minLength value="2" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="span-column">
    <xs:simpleType>
      <xs:restriction base="xs:positiveInteger" />
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="span-row">
    <xs:simpleType>
      <xs:restriction base="xs:positiveInteger" />
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="scope">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:enumeration value="column" />
        <xs:enumeration value="row" />
        <xs:enumeration value="group-column" />
        <xs:enumeration value="group-row" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:attribute name="long-form">
    <xs:simpleType>
      <xs:restriction base="xs:token">
        <xs:minLength value="5" />
      </xs:restriction>
    </xs:simpleType>
  </xs:attribute>
  <xs:group name="complex-blocks">
    <xs:choice>
      <xs:group ref="list-group" />
      <xs:element ref="table" />
      <xs:element ref="section" />
      <xs:element ref="form" />
    </xs:choice>
  </xs:group>
  <xs:group name="simple-blocks">
    <xs:choice>
      <xs:element ref="block-code" />
      <xs:element ref="block-quote" />
      <xs:element ref="citation" />
      <xs:element ref="heading" />
      <xs:element ref="object" />
      <xs:element ref="paragraph" />
      <xs:element ref="separator" />
    </xs:choice>
  </xs:group>
  <xs:complexType name="simple-blocks-type" mixed="true">
    <xs:group minOccurs="0" maxOccurs="unbounded" ref="inline" />
    <xs:attributeGroup ref="core-attrs" />
    <xs:attributeGroup ref="inter-attrs" />
  </xs:complexType>
  <xs:group name="inline">
    <xs:choice>
      <xs:group ref="xfm:Form.Controls" />
      <xs:element ref="short" />
      <xs:element ref="button" />
      <xs:element ref="cite" />
      <xs:element ref="emphasis" />
      <xs:element ref="identifier" />
      <xs:element ref="quote" />
      <xs:element ref="format" />
      <xs:element ref="strong" />
      <xs:element ref="title" />
    </xs:choice>
  </xs:group>
  <xs:group name="object-group">
    <xs:sequence>
      <xs:element ref="object-text" />
      <xs:element ref="object-uri" />
      <xs:element ref="object-type" />
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="inline" />
    </xs:sequence>
  </xs:group>
  <xs:complexType name="inline-base">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attributeGroup ref="core-attrs-uri" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="inline-type">
    <xs:simpleContent>
      <xs:restriction base="inline-base">
        <xs:minLength value="1" />
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="format-type" mixed="true">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="format" />
    </xs:sequence>
    <xs:attributeGroup ref="core-attrs-uri" />
  </xs:complexType>
  <xs:group name="list-group">
    <xs:choice>
      <xs:element ref="define-list" />
      <xs:element ref="navigation-list" />
      <xs:element ref="order-list" />
      <xs:element ref="unorder-list" />
    </xs:choice>
  </xs:group>
  <xs:complexType name="nesting-block">
    <xs:choice maxOccurs="unbounded">
      <xs:group ref="complex-blocks" />
      <xs:group ref="simple-blocks" />
    </xs:choice>
  </xs:complexType>
  <xs:element name="define-list">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="define-item" />
      </xs:sequence>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="define-item">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="define-term" />
        <xs:element maxOccurs="unbounded" ref="definition" />
      </xs:sequence>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="define-term">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:normalizedString">
          <xs:attributeGroup ref="core-attrs-uri" />
          <xs:attributeGroup ref="inter-attrs" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="definition">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="inline" />
      <xs:attributeGroup ref="core-attrs" />
      <xs:attributeGroup ref="inter-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="navigation-list">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0">
          <xs:element ref="heading" />
          <xs:element ref="identifier" />
        </xs:choice>
        <xs:element maxOccurs="unbounded" ref="navigation-item" />
      </xs:sequence>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="navigation-item">
    <xs:complexType>
      <xs:choice>
        <xs:element ref="navigation-object" />
        <xs:element ref="navigation-text" />
      </xs:choice>
      <xs:attributeGroup ref="core-attrs" />
      <xs:attribute ref="uri" use="required" />
    </xs:complexType>
  </xs:element>
  <xs:element name="navigation-object">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="object-text" />
        <xs:element ref="object-uri" />
        <xs:element ref="object-type" />
      </xs:sequence>
      <xs:attributeGroup ref="inter-attrs" />
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="object-text">
    <xs:simpleType>
      <xs:restriction base="xs:normalizedString">
        <xs:minLength value="3" />
      </xs:restriction>
    </xs:simpleType>
  </xs:element>
  <xs:element name="object-uri">
    <xs:simpleType>
      <xs:restriction base="xs:anyURI" />
    </xs:simpleType>
  </xs:element>
  <xs:element name="object-type" type="mime-type" />
  <xs:element name="navigation-text">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attributeGroup ref="inter-attrs" />
          <xs:attributeGroup ref="core-attrs" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="order-list">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0">
          <xs:element ref="heading" />
          <xs:element ref="identifier" />
        </xs:choice>
        <xs:element maxOccurs="unbounded" ref="list-item" />
      </xs:sequence>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="unorder-list">
    <xs:complexType>
      <xs:sequence>
        <xs:choice minOccurs="0">
          <xs:element ref="heading" />
          <xs:element ref="identifier" />
        </xs:choice>
        <xs:element maxOccurs="unbounded" ref="list-item" />
      </xs:sequence>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="list-item">
    <xs:complexType mixed="true">
      <xs:choice>
        <xs:group ref="simple-blocks" />
        <xs:group maxOccurs="unbounded" ref="inline" />
      </xs:choice>
      <xs:attributeGroup ref="core-attrs" />
      <xs:attributeGroup ref="inter-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="form">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="xfm:model" />
        <xs:element ref="form-body" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="form-body">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:group ref="list-group" />
        <xs:group ref="simple-blocks" />
        <xs:group ref="xfm:UI.Common" />
        <xs:element ref="table" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="table">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" ref="head-row" />
        <xs:element maxOccurs="unbounded" ref="table-row" />
      </xs:sequence>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="head-row">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="head-cell" />
      </xs:sequence>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="head-cell">
    <xs:complexType mixed="true">
      <xs:choice>
        <xs:group ref="simple-blocks" />
        <xs:group maxOccurs="unbounded" ref="inline" />
      </xs:choice>
      <xs:attribute default="column" ref="scope" use="optional" />
      <xs:attributeGroup ref="cell-attrs" />
      <xs:attributeGroup ref="core-attrs" />
      <xs:attributeGroup ref="inter-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="table-row">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="head-cell" />
        <xs:element ref="table-cell" />
      </xs:choice>
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="table-cell">
    <xs:complexType mixed="true">
      <xs:choice>
        <xs:group ref="simple-blocks" />
        <xs:group maxOccurs="unbounded" ref="inline" />
      </xs:choice>
      <xs:attributeGroup ref="cell-attrs" />
      <xs:attributeGroup ref="core-attrs" />
      <xs:attributeGroup ref="inter-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="section">
    <xs:complexType>
      <xs:complexContent mixed="false">
        <xs:extension base="nesting-block">
          <xs:attributeGroup ref="core-attrs" />
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="block-code" type="simple-blocks-type" />
  <xs:element name="block-quote" type="simple-blocks-type" />
  <xs:element name="citation">
    <xs:complexType mixed="true">
      <xs:group minOccurs="0" maxOccurs="unbounded" ref="inline" />
      <xs:attribute ref="id" use="required" />
      <xs:attribute ref="style" use="optional" />
      <xs:attribute ref="title" use="optional" />
      <xs:attribute ref="role" use="optional" />
      <xs:attributeGroup ref="inter-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="heading" type="simple-blocks-type" />
  <xs:element name="object">
    <xs:complexType>
      <xs:group ref="object-group" />
      <xs:attributeGroup ref="inter-attrs" />
      <xs:attributeGroup ref="core-attrs" />
    </xs:complexType>
  </xs:element>
  <xs:element name="paragraph" type="simple-blocks-type" />
  <xs:element name="separator" type="simple-blocks-type" />
  <xs:complexType name="short-type">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="long-form" use="required" />
        <xs:attributeGroup ref="core-attrs-uri" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="short">
    <xs:complexType>
      <xs:simpleContent>
        <xs:restriction base="short-type">
          <xs:minLength value="1" />
          <xs:whiteSpace value="collapse" />
        </xs:restriction>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="button-type">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="refer" use="optional" />
        <xs:attributeGroup ref="core-attrs-uri" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="button">
    <xs:complexType>
      <xs:simpleContent>
        <xs:restriction base="button-type">
          <xs:minLength value="1" />
          <xs:whiteSpace value="collapse" />
        </xs:restriction>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="cite-type">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="refer" use="required" />
        <xs:attributeGroup ref="core-attrs" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="cite">
    <xs:complexType>
      <xs:simpleContent>
        <xs:restriction base="cite-type">
          <xs:minLength value="1" />
          <xs:whiteSpace value="collapse" />
        </xs:restriction>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="emphasis" type="inline-type" />
  <xs:complexType name="identifier-type">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute ref="refer" use="required" />
        <xs:attributeGroup ref="core-attrs-uri" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="identifier">
    <xs:complexType>
      <xs:simpleContent>
        <xs:restriction base="identifier-type">
          <xs:minLength value="1" />
          <xs:whiteSpace value="collapse" />
        </xs:restriction>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="quote" type="inline-type" />
  <xs:element name="format" type="format-type" />
  <xs:element name="strong" type="inline-type" />
  <xs:element name="title" type="inline-type" />
  <xs:annotation>
    <xs:documentation>
	Mail Markup Language, MML, is a method of structuring, defining, and describing content and data in email for a variety of reasons.  Please refer to http://mailmarkup.org for more information.  First implementation begun by Austin Cheney on 12 October 2007.
	</xs:documentation>
  </xs:annotation>
</xs:schema>