<?xml version="1.0"?>


<xsd:schema targetNamespace="urn:abisource:awml" 
	    xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" 
	    xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
	    xsi:schemaLocation="http://www.w3.org/2000/10/XMLSchema
	                       http://www.w3.org/2000/10/XMLSchema.xsd">


<xsd:annotation>
  <xsd:documentation>
    XML Schema for AbiWord Markup Language
    This should properly validate all AbiWord documents
    For validation, use http://cgi.w3.org/cgi-bin/xmlschema-check
    Please report errors to sam@uchicago.edu
    Modifed on 4-27-00
  </xsd:documentation>
</xsd:annotation>

<xsd:element name="abiword" type="abiwordType"/>

  <xsd:complexType name="abiwordType">
    <xsd:sequence>
    <xsd:element name="styles" type="stylesType" minOccurs="0"/>
    <xsd:element name="lists" type="listsType" minOccurs="0"/>
    <xsd:element name="section" type="sectionType" maxOccurs="unbounded"/>
    <xsd:element name="data" type="dataType" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="version" type="xsd:string" use="default" value="unnumbered"/>
  </xsd:complexType>


<xsd:complexType name="stylesType">
    <xsd:sequence>
  <xsd:element name="s" maxOccurs="unbounded" minOccurs="0"> 
    <xsd:complexType>
      <xsd:attribute name="basedon" type="xsd:string"/>
      <xsd:attribute name="name" type="xsd:string" use="required"/>
      <xsd:attribute name="type" type="xsd:string"/>
      <xsd:attribute name="props" type="PropsAtt"/>
    </xsd:complexType>
  </xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="dataType">
    <xsd:sequence>
  <xsd:element name="d" maxOccurs="unbounded" minOccurs="1">
    <xsd:complexType>
      <xsd:simpleContent>
	<xsd:extension base="xsd:string">
      <xsd:attribute name="name" type="xsd:string"/>
	</xsd:extension>
	</xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="listsType">
      <xsd:sequence>
<xsd:element name="l" maxOccurs="unbounded" minOccurs="1">
<xsd:complexType>
    <xsd:attribute name="id" type="xsd:ID"/>
    <xsd:attribute name="parentid" type="xsd:ID"/>
    <xsd:attribute name="type" type="xsd:nonNegativeInteger"/>
    <xsd:attribute name="startvalue" type="xsd:integer"/>
    <xsd:attribute name="format" type="xsd:string"/>
</xsd:complexType>
  </xsd:element>
    </xsd:sequence>
</xsd:complexType>



<xsd:complexType name="sectionType">
    <xsd:sequence>
  <xsd:element name="p" type="pType" maxOccurs="unbounded"/>
    </xsd:sequence>
  <xsd:attribute name="props" type="PropsAtt"/>
  <xsd:attribute name="type" type="TypeAttS"/>
  <xsd:attribute name="id" type="xsd:ID"/>
  <xsd:attribute name="footer" type="xsd:string"/>
  
</xsd:complexType>

<xsd:complexType name="pType">
    <xsd:sequence>
  <xsd:element name="c" minOccurs="0" maxOccurs="unbounded">
    <xsd:complexType>
<xsd:simpleContent>	
<xsd:extension base="xsd:string">
      <xsd:attribute name="props" type="PropsAtt"/>
      <xsd:attribute name="type" type="TypeAttC"/>
      <xsd:attribute name="style" type="xsd:string"/>
</xsd:extension>
</xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="field" minOccurs="0" maxOccurs="unbounded">
    <xsd:complexType>
      <xsd:attribute name="type" type="TypeAttF" use="required"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="image"  minOccurs="0" maxOccurs="unbounded">
    <xsd:complexType>
      <xsd:attribute name="dataid" type="xsd:string" use="required"/>
      <xsd:attribute name="props" type="PropsAtt"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:element name="cbr" minOccurs="0" maxOccurs="unbounded"> 
    <xsd:complexType/>
  </xsd:element>

  <xsd:element name="pbr" minOccurs="0" maxOccurs="unbounded"> 
    <xsd:complexType/>
  </xsd:element>

  <xsd:element name="br" minOccurs="0" maxOccurs="unbounded"> 
    <xsd:complexType/>
  </xsd:element>
    </xsd:sequence>

  <xsd:attribute name="props" type="xsd:string"/>

  <xsd:attribute name="style" type="xsd:string"/>

  <xsd:attribute name="id" type="xsd:ID"/>

  <xsd:attribute name="level">
    <xsd:simpleType>
 <xsd:restriction base="xsd:nonNegativeInteger">
      <xsd:maxExclusive value="100"/>   
</xsd:restriction>           
    </xsd:simpleType>
  </xsd:attribute>

  <xsd:attribute name="listid">
    <xsd:simpleType>
	<xsd:restriction base="xsd:nonNegativeInteger"/> 
</xsd:simpleType>
  </xsd:attribute>

</xsd:complexType>

<xsd:simpleType name="TypeAttF">
	<xsd:restriction base="xsd:nonNegativeInteger"> 
  <xsd:enumeration value="list-label"/>
  <xsd:enumeration value="time"/>
  <xsd:enumeration value="page-count"/>
  <xsd:enumeration value="page-number"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="TypeAttC">
	<xsd:restriction base="xsd:nonNegativeInteger"> 
  <xsd:enumeration value="list-label"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="TypeAttS">
  	<xsd:restriction base="xsd:nonNegativeInteger"> 
<xsd:enumeration value="footer"/>
	</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="PropsAtt">
  	<xsd:restriction base="xsd:string"/> 
</xsd:simpleType>
</xsd:schema>
	 


  

