<!--

Copyright (c) 2001-2004 World Wide Web Consortium, 
(Massachusetts Institute of Technology, Institut National de
Recherche en Informatique et en Automatique, Keio University).  All 
Rights Reserved.  This program is distributed under the W3C's Software
Intellectual Property License.  This program is distributed in the 
hope that it will be useful, but WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.  

See W3C License http://www.w3.org/Consortium/Legal/ for more details.

-->

<!--

This schema provides supports misc_typeinfo.xml
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
	targetNamespace="http://www.w3.org/1999/xhtml"
	xmlns="http://www.w3.org/1999/xhtml">

  <xsd:element name="html">
  	 <xsd:complexType>
  	 	<xsd:sequence>
  	 		<xsd:element ref="head"/>
  	 		<xsd:element ref="body"/>
  	 	</xsd:sequence>
  	 </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="head">
  	<xsd:complexType>
  		<xsd:sequence>
  			<xsd:element ref="meta"/>
  			<xsd:element ref="title"/>
  		</xsd:sequence>
  	</xsd:complexType>
  </xsd:element>
  
  <xsd:element name="title" type="xsd:string"/>
  <xsd:element name="meta">
  	<xsd:complexType>
  		<xsd:attribute name="http-equiv" type="xsd:string" use="required"/>
  		<xsd:attribute name="content" type="xsd:string" use="required"/>
  	</xsd:complexType>
  </xsd:element>
  
  
  <xsd:element name="body">
  	<xsd:complexType>
  		<xsd:sequence minOccurs="0" maxOccurs="unbounded">
  			<xsd:element ref="p"/>
  		</xsd:sequence>
  		<xsd:attribute name="onload" type="xsd:string" use="optional"/>  		
  	</xsd:complexType>
  </xsd:element>
  
  <xsd:element name="p">
  	  <xsd:complexType>
  	  	  <xsd:choice minOccurs="0" maxOccurs="unbounded">
  	  	  	<xsd:element ref="em"/>
  	  	  	<xsd:element ref="strong"/>
  	  	  	<xsd:element ref="code"/>
  	  	  	<xsd:element ref="acronym"/>
  	  	  </xsd:choice>
  	  	  <xsd:attribute name="id" type="xsd:ID" use="optional"/>
  	  </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="strong" type="xsd:IDREFS"/>
  <xsd:element name="em" type="xsd:byte"/>
  <xsd:simpleType name="unbounded">
  	  <xsd:restriction base="xsd:string">
  	  	  <xsd:enumeration value="unbounded"/>
  	  </xsd:restriction>
  </xsd:simpleType>
  <xsd:simpleType name="unsignedIntOrUnbounded">
  	  <xsd:union memberTypes="xsd:unsignedInt unbounded"/>
  </xsd:simpleType>
  
  <xsd:simpleType name="doubleList">
  	  <xsd:list itemType="xsd:double"/>
  </xsd:simpleType>
  
  <xsd:element name="acronym">
  	  <xsd:complexType>
  	  	  <xsd:simpleContent>
  	  	  		<xsd:extension base="doubleList">
  	  	  			<xsd:attribute name="id" use="optional" type="xsd:ID"/>
  	  	  		</xsd:extension>
  	  	  </xsd:simpleContent>
  	  </xsd:complexType>
  </xsd:element>
  
  <xsd:element name="code">
  	  <xsd:complexType>
  	  	  <xsd:simpleContent>
  	  	  	 <xsd:extension base="unsignedIntOrUnbounded">
  	  	  		<xsd:attribute name="id" type="xsd:ID" use="optional"/>
  	  	  	 </xsd:extension>
  	  	  </xsd:simpleContent>
  	  </xsd:complexType>
  </xsd:element>
</xsd:schema>
