<?xml version="1.0" encoding="UTF-8"?> <!-- Schema for the 0.2 snapshot of Pie/Echo/Atom/Whatever IMPORTANT: This authoritative version of this schema is in Relax NG compact syntax; i.e. its name ends in ".rnc". It would be very unwise to edit any other version. V0.2: T. Bray, August 2003 July 12: fix sequence in feed/entry clean up "mode" attribute dispatching s/Person/Writer/ August 16: Update for 0.2 snapshot --> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://purl.org/atom/ns#" xmlns:atom="http://purl.org/atom/ns#"> <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/> <!-- Structural elements ------------------- --> <xs:element name="feed"> <xs:complexType> <xs:sequence> <xs:element ref="atom:title"/> <xs:element ref="atom:link"/> <xs:element ref="atom:modified"/> <xs:element minOccurs="0" ref="atom:author"/> <xs:element minOccurs="0" ref="atom:tagline"/> <xs:element minOccurs="0" ref="atom:id"/> <xs:element minOccurs="0" ref="atom:generator"/> <xs:element minOccurs="0" ref="atom:copyright"/> <xs:element minOccurs="0" maxOccurs="unbounded" ref="atom:contributor"/> <xs:element minOccurs="0" maxOccurs="unbounded" ref="atom:entry"/> </xs:sequence> <xs:attributeGroup ref="atom:XLang"/> <xs:attributeGroup ref="atom:Version"/> </xs:complexType> </xs:element> <xs:element name="entry"> <xs:complexType> <xs:sequence> <xs:element ref="atom:title"/> <xs:element ref="atom:link"/> <xs:element ref="atom:id"/> <xs:element ref="atom:issued"/> <xs:element ref="atom:modified"/> <xs:element minOccurs="0" ref="atom:created"/> <xs:element minOccurs="0" ref="atom:summary"/> <xs:element minOccurs="0" ref="atom:author"/> <xs:element minOccurs="0" maxOccurs="unbounded" ref="atom:contributor"/> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:group ref="atom:TopContent"/> <xs:group ref="atom:AltContent"/> </xs:choice> </xs:sequence> <xs:attributeGroup ref="atom:XLang"/> </xs:complexType> </xs:element> <xs:group name="TopContent"> <xs:sequence> <xs:element name="content"> <xs:complexType> <xs:group maxOccurs="unbounded" ref="atom:AltContent"/> <xs:attributeGroup ref="atom:XLang"/> <xs:attribute name="type" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="multipart/alternative"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:group> <xs:group name="AltContent"> <xs:sequence> <xs:element name="content"> <xs:complexType mixed="true"> <xs:group minOccurs="0" ref="atom:XML"/> <xs:attributeGroup ref="atom:XLang"/> <xs:attribute name="type" use="required"/> <xs:attribute name="mode"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="xml"/> <xs:enumeration value="escaped"/> <xs:enumeration value="base64"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:group> <!-- Attributes ---------- --> <xs:attributeGroup name="Version"> <xs:attribute name="version" use="required"> <xs:simpleType> <xs:restriction base="xs:token"> <xs:enumeration value="0.2"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:attributeGroup> <xs:attributeGroup name="XBase"> <xs:attribute ref="xml:base" use="required"/> </xs:attributeGroup> <xs:attributeGroup name="XLang"> <xs:attribute ref="xml:lang"/> </xs:attributeGroup> <!-- Payload elements, alphabetical order ------------------------------------ --> <xs:element name="author" type="atom:Writer"/> <xs:element name="contributor" type="atom:Writer"/> <xs:element name="copyright"> <xs:complexType mixed="true"> <xs:attributeGroup ref="atom:XLang"/> </xs:complexType> </xs:element> <xs:element name="created" type="xs:dateTime"/> <xs:element name="generator"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:anyURI"> <xs:attribute name="name" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="id" type="xs:anyURI"/> <xs:element name="issued" type="xs:dateTime"/> <xs:element name="link" type="xs:anyURI"/> <xs:element name="modified" type="xs:dateTime"/> <xs:element name="summary"> <xs:complexType mixed="true"> <xs:attributeGroup ref="atom:XLang"/> </xs:complexType> </xs:element> <xs:element name="tagline"> <xs:complexType mixed="true"> <xs:attributeGroup ref="atom:XLang"/> </xs:complexType> </xs:element> <xs:element name="title"> <xs:complexType mixed="true"> <xs:attributeGroup ref="atom:XLang"/> </xs:complexType> </xs:element> <xs:complexType name="Writer"> <xs:sequence> <xs:element ref="atom:name"/> <xs:element minOccurs="0" ref="atom:url"/> <xs:element minOccurs="0" ref="atom:email"/> </xs:sequence> <xs:attributeGroup ref="atom:XLang"/> </xs:complexType> <xs:element name="name" type="xs:string"/> <xs:element name="url" type="xs:anyURI"/> <xs:element name="email" type="xs:string"/> <!-- Non-Atom content ---------------- --> <xs:group name="NonAtom"> <xs:sequence> <xs:any namespace="##other" processContents="skip"/> </xs:sequence> </xs:group> <xs:group name="XML"> <xs:sequence> <xs:group minOccurs="0" maxOccurs="unbounded" ref="atom:NonAtom"/> </xs:sequence> </xs:group> </xs:schema>