XMLスキーマのサンプル文書

サンプルXML文書

マニュアルのCDuceのXMLスキーマサポートに関する項の例は全て、下に示されるXMLスキーマ文書mails.xsd、及びXMLスキーマインスタンスmails.xmlに関連している。

mails.xsd

<!-- mails.xsd -->

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

 <xsd:element name="mails" type="mailsType" />

 <xsd:complexType name="mailsType">
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
   <xsd:element name="mail" type="mailType" />
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="mailType">
  <xsd:sequence>
   <xsd:element name="envelope" type="envelopeType" />
   <xsd:element name="body" type="bodyType" />
   <xsd:element name="attachment" type="attachmentType"
		minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
  <xsd:attribute use="required" name="id" type="xsd:integer" />
 </xsd:complexType>

 <xsd:element name="header">
  <xsd:complexType>
   <xsd:simpleContent>
    <xsd:extension base="xsd:string">
     <xsd:attribute ref="name" use="required" />
    </xsd:extension>
   </xsd:simpleContent>
  </xsd:complexType>
 </xsd:element>

 <xsd:element name="Date" type="xsd:dateTime" />

 <xsd:complexType name="envelopeType">
  <xsd:sequence>
   <xsd:element name="From" type="xsd:string" />
   <xsd:element name="To" type="xsd:string" />
   <xsd:element ref="Date" />
   <xsd:element name="Subject" type="xsd:string" />
   <xsd:element ref="header" minOccurs="0" maxOccurs="unbounded" />
  </xsd:sequence>
  <xsd:attribute name="From" type="xsd:string" use="required" />
 </xsd:complexType>

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

 <xsd:complexType name="attachmentType">
  <xsd:group ref="attachmentContent" />
  <xsd:attribute ref="name" use="required" />
 </xsd:complexType>

 <xsd:group name="attachmentContent">
  <xsd:sequence>
   <xsd:element name="mimetype">
    <xsd:complexType>
     <xsd:attributeGroup ref="mimeTypeAttributes" />
    </xsd:complexType>
   </xsd:element>
   <xsd:element name="content" type="xsd:string" minOccurs="0" />
  </xsd:sequence>
 </xsd:group>

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

 <xsd:attributeGroup name="mimeTypeAttributes">
  <xsd:attribute name="type" type="mimeTopLevelType" use="required" />
  <xsd:attribute name="subtype" type="xsd:string" use="required" />
 </xsd:attributeGroup>

 <xsd:simpleType name="mimeTopLevelType">
  <xsd:restriction base="xsd:string">
   <xsd:enumeration value="text" />
   <xsd:enumeration value="multipart" />
   <xsd:enumeration value="application" />
   <xsd:enumeration value="message" />
   <xsd:enumeration value="image" />
   <xsd:enumeration value="audio" />
   <xsd:enumeration value="video" />
  </xsd:restriction>
 </xsd:simpleType>

</xsd:schema>

mails.xml

<!-- mails.xml -->

<mails>
  <mail id="0">
    <envelope From="bill@microsoft.com">
      <From>user@unknown.domain.org</From>
      <To>user@cduce.org</To>
      <Date>2003-10-15T15:44:01Z</Date>
      <Subject>I desperately need XML Schema support in CDuce</Subject>
      <header name="Reply-To">bill@microsoft.com</header>
    </envelope>
    <body>
      As subject says, is it possible to implement it?
    </body>
    <attachment name="signature.doc">
      <mimetype type="application" subtype="msword"/>
      <content>
	### removed by spamoracle ###
      </content>
    </attachment>
  </mail>
  <mail id="1">
    <envelope From="zack@cs.unibo.it">
      <From>zack@di.ens.fr</From>
      <To>bill@microsoft.com</To>
      <Date>2003-10-15T16:17:39Z</Date>
      <Subject>Re: I desperately need XML Schema support in CDuce</Subject>
    </envelope>
    <body>
      user@unknown.domain.org wrote:
      > As subject says, is possible to implement it?

      Sure, I'm working on it, in a few years^Wdays it will be finished
    </body>
  </mail>
</mails>