source: exist/trunk/xquery/atom1.0.xsd @ 4426

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/exist/trunk/xquery/atom1.0.xsd@4426
Revision 4426, 10.3 KB checked in by cbyrom, 11 years ago (diff)

Create schemas to represent the new moles format. NB, add Atom schema
separately, to future proof validation - i.e. allowing atoms to be used
and validated by the system + add moles2 schema to define the additional
'non-atom' like elements required + add molesAtom1.0 to bring the two
together - redefining elements of the Atom schema with the moles2.0 one.

Line 
1<?xml version="1.0" encoding="utf-8" ?>
2<xs:schema targetNamespace="http://www.w3.org/2005/Atom" elementFormDefault="qualified"
3        attributeFormDefault="unqualified"
4        xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xs="http://www.w3.org/2001/XMLSchema">
5        <xs:annotation>
6                <xs:documentation>
7                                This version of the Atom schema is based on version 1.0 of the format specifications,
8                                found here http://www.atomenabled.org/developers/syndication/atom-format-spec.php.
9                        </xs:documentation>
10        </xs:annotation>
11        <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd" />
12        <xs:annotation>
13                <xs:documentation>
14                        An Atom document may have two root elements, feed and entry, as defined in section 2.
15                </xs:documentation>
16        </xs:annotation>
17        <xs:element name="feed" type="atom:feedType"/>
18        <xs:element name="entry" type="atom:entryType"/>
19        <xs:complexType name="textType" mixed="true">
20                <xs:annotation>
21                        <xs:documentation>
22                                The Atom text construct is defined in section 3.1 of the format spec.
23                        </xs:documentation>
24
25                </xs:annotation>
26                <xs:sequence>
27                        <xs:any namespace="http://www.w3.org/1999/xhtml" minOccurs="0"/>
28                </xs:sequence>
29                <xs:attribute name="type" >
30                        <xs:simpleType>
31                                <xs:restriction base="xs:token">
32                                        <xs:enumeration value="text"/>
33                                        <xs:enumeration value="html"/>
34                                        <xs:enumeration value="xhtml"/>
35                                </xs:restriction>
36                        </xs:simpleType>
37                </xs:attribute>
38                <xs:attributeGroup ref="atom:commonAttributes"/>
39        </xs:complexType>
40        <xs:complexType name="personType">
41                <xs:annotation>
42                        <xs:documentation>
43
44                                The Atom person construct is defined in section 3.2 of the format spec.
45                        </xs:documentation>
46                </xs:annotation>
47                <xs:choice minOccurs="1" maxOccurs="unbounded">
48                        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
49                        <xs:element name="uri" type="atom:uriType" minOccurs="0" maxOccurs="1" />
50                        <xs:element name="email" type="atom:emailType" minOccurs="0" maxOccurs="1" />
51                        <xs:any namespace="##other"/>
52                </xs:choice>
53
54                <xs:attributeGroup ref="atom:commonAttributes"/>
55        </xs:complexType>
56        <xs:simpleType name="emailType">
57                <xs:annotation>
58                        <xs:documentation>
59                                Schema definition for an email address.
60                        </xs:documentation>
61                </xs:annotation>
62                <xs:restriction base="xs:normalizedString">
63
64                        <xs:pattern value="\w+@(\w+\.)+\w+" />
65                </xs:restriction>
66        </xs:simpleType>
67        <xs:complexType name="feedType">
68                <xs:annotation>
69                        <xs:documentation>
70                                The Atom feed construct is defined in section 4.1.1 of the format spec.
71                        </xs:documentation>
72                </xs:annotation>
73
74                <xs:choice minOccurs="3" maxOccurs="unbounded">
75                        <xs:element name="author" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
76                        <xs:element name="category" type="atom:categoryType" minOccurs="0" maxOccurs="unbounded" />
77                        <xs:element name="contributor" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
78                        <xs:element name="generator" type="atom:generatorType" minOccurs="0" maxOccurs="1" />
79                        <xs:element name="icon" type="atom:iconType" minOccurs="0" maxOccurs="1" />
80                        <xs:element name="id" type="atom:idType" minOccurs="1" maxOccurs="1" />
81                        <xs:element name="link" type="atom:linkType" minOccurs="0" maxOccurs="unbounded" />
82                        <xs:element name="logo" type="atom:logoType" minOccurs="0" maxOccurs="1" />
83
84                        <xs:element name="rights" type="atom:textType" minOccurs="0" maxOccurs="1" />
85                        <xs:element name="subtitle" type="atom:textType" minOccurs="0" maxOccurs="1" />
86                        <xs:element name="title" type="atom:textType" minOccurs="1" maxOccurs="1" />
87                        <xs:element name="updated" type="atom:dateTimeType" minOccurs="1" maxOccurs="1" />
88                        <xs:element name="entry" type="atom:entryType" minOccurs="0" maxOccurs="unbounded" />
89                        <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
90                </xs:choice>
91                <xs:attributeGroup ref="atom:commonAttributes"/>
92        </xs:complexType>
93
94        <xs:complexType name="entryType">
95                <xs:annotation>
96                        <xs:documentation>
97                                The Atom entry construct is defined in section 4.1.2 of the format spec.
98                        </xs:documentation>
99                </xs:annotation>
100                <xs:group ref="atom:entryGroup" maxOccurs="unbounded" />
101                <xs:attributeGroup ref="atom:commonAttributes"/>
102        </xs:complexType>
103
104        <xs:group name="entryGroup">
105                <xs:choice>
106                        <xs:element name="id" type="atom:idType" minOccurs="1" maxOccurs="1" />
107                        <xs:element name="title" type="atom:textType" minOccurs="1" maxOccurs="1" />
108                        <xs:element name="link" type="atom:linkType" minOccurs="0" maxOccurs="unbounded" />
109                        <xs:element name="author" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
110                        <xs:element name="contributor" type="atom:personType" minOccurs="0" maxOccurs="unbounded" />
111                        <xs:element name="category" type="atom:categoryType" minOccurs="0" maxOccurs="unbounded" />
112                        <xs:element name="summary" type="atom:textType" minOccurs="0" maxOccurs="1" />
113                        <xs:element name="content" type="atom:contentType" minOccurs="0" maxOccurs="1" />
114                        <xs:element name="updated" type="atom:dateTimeType" minOccurs="1" maxOccurs="1" />
115                        <xs:element name="published" type="atom:dateTimeType" minOccurs="0" maxOccurs="1" />
116                        <xs:element name="rights" type="atom:textType" minOccurs="0" maxOccurs="1" />
117                        <xs:element name="source" type="atom:textType" minOccurs="0" maxOccurs="1" />
118                </xs:choice>
119        </xs:group>
120               
121        <xs:complexType name="contentType" mixed="true">
122                <xs:annotation>
123                        <xs:documentation>
124                                The Atom content construct is defined in section 4.1.3 of the format spec.
125                        </xs:documentation>
126
127                </xs:annotation>
128                <xs:sequence>
129                        <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" />
130                </xs:sequence>
131                <xs:attribute name="type" type="xs:string"/>
132                <xs:attribute name="src" type="xs:anyURI"/>
133                <xs:attributeGroup ref="atom:commonAttributes"/>
134        </xs:complexType>
135        <xs:complexType name="categoryType">
136
137                <xs:annotation>
138                        <xs:documentation>
139                                The Atom cagegory construct is defined in section 4.2.2 of the format spec.
140                        </xs:documentation>
141                </xs:annotation>
142                <xs:attribute name="term" type="xs:string" use="required"/>
143                <xs:attribute name="scheme" type="xs:anyURI" use="optional"/>
144                <xs:attribute name="label" type="xs:string" use="optional"/>
145                <xs:attributeGroup ref="atom:commonAttributes" />
146
147        </xs:complexType>
148        <xs:complexType name="generatorType">
149                <xs:annotation>
150                        <xs:documentation>
151                                The Atom generator element is defined in section 4.2.4 of the format spec.
152                        </xs:documentation>
153                </xs:annotation>
154                <xs:simpleContent>
155                        <xs:extension base="xs:string">
156                                <xs:attribute name="uri" use="optional" type="xs:anyURI" />
157                                <xs:attribute name="version" use="optional" type="xs:string" />
158                                <xs:attributeGroup ref="atom:commonAttributes"/>
159                        </xs:extension>
160                </xs:simpleContent>
161        </xs:complexType>
162        <xs:complexType name="iconType">
163                <xs:annotation>
164                        <xs:documentation>
165
166                                The Atom icon construct is defined in section 4.2.5 of the format spec.
167                        </xs:documentation>
168                </xs:annotation>
169                <xs:simpleContent>
170                        <xs:extension base="xs:anyURI">
171                                <xs:attributeGroup ref="atom:commonAttributes"/>
172                        </xs:extension>
173                </xs:simpleContent>
174        </xs:complexType>
175
176        <xs:complexType name="idType">
177                <xs:annotation>
178                        <xs:documentation>
179                                The Atom id construct is defined in section 4.2.6 of the format spec.
180                        </xs:documentation>
181                </xs:annotation>
182                <xs:simpleContent>
183                        <xs:extension base="xs:anyURI">
184                                <xs:attributeGroup ref="atom:commonAttributes"/>
185
186                        </xs:extension>
187                </xs:simpleContent>
188        </xs:complexType>
189        <xs:complexType name="linkType" mixed="true">
190                <xs:annotation>
191                        <xs:documentation>
192                                The Atom link construct is defined in section 3.4 of the format spec.
193                        </xs:documentation>
194                </xs:annotation>
195
196                <xs:attribute name="href" use="required" type="xs:anyURI" />
197                <xs:attribute name="rel" type="xs:string" use="optional"/>
198                <xs:attribute name="type" use="optional" type="xs:string" />
199                <xs:attribute name="hreflang" use="optional" type="xs:NMTOKEN" />
200                <xs:attribute name="title" use="optional" type="xs:string" />
201                <xs:attribute name="length" use="optional" type="xs:positiveInteger" />
202                <xs:attributeGroup ref="atom:commonAttributes"/>
203        </xs:complexType>
204        <xs:complexType name="logoType">
205
206                <xs:annotation>
207                        <xs:documentation>
208                                The Atom logo construct is defined in section 4.2.8 of the format spec.
209                        </xs:documentation>
210                </xs:annotation>
211                <xs:simpleContent>
212                        <xs:extension base="xs:anyURI">
213                                <xs:attributeGroup ref="atom:commonAttributes"/>
214                        </xs:extension>
215
216                </xs:simpleContent>
217        </xs:complexType>
218        <xs:complexType name="sourceType">
219                <xs:annotation>
220                        <xs:documentation>
221                                The Atom source construct is defined in section 4.2.11 of the format spec.
222                        </xs:documentation>
223                </xs:annotation>
224                <xs:choice maxOccurs="unbounded">
225
226                        <xs:element name="author" type="atom:personType" minOccurs="0" maxOccurs="unbounded"/>
227                        <xs:element name="category" type="atom:categoryType" minOccurs="0" maxOccurs="unbounded"/>
228                        <xs:element name="contributor" type="atom:personType" minOccurs="0" maxOccurs="unbounded"/>
229                        <xs:element name="generator" type="atom:generatorType" minOccurs="0" maxOccurs="1"/>
230                        <xs:element name="icon" type="atom:iconType" minOccurs="0" maxOccurs="1"/>
231                        <xs:element name="id" type="atom:idType" minOccurs="0" maxOccurs="1"/>
232                        <xs:element name="link" type="atom:linkType" minOccurs="0" maxOccurs="unbounded"/>
233                        <xs:element name="logo" type="atom:logoType" minOccurs="0" maxOccurs="1"/>
234                        <xs:element name="rights" type="atom:textType" minOccurs="0" maxOccurs="1"/>
235
236                        <xs:element name="subtitle" type="atom:textType" minOccurs="0" maxOccurs="1"/>
237                        <xs:element name="title" type="atom:textType" minOccurs="0" maxOccurs="1"/>
238                        <xs:element name="updated" type="atom:dateTimeType" minOccurs="0" maxOccurs="1"/>
239                        <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
240                </xs:choice>
241                <xs:attributeGroup ref="atom:commonAttributes"/>
242        </xs:complexType>
243        <xs:complexType name="uriType">
244                <xs:simpleContent>
245                        <xs:extension base="xs:anyURI">
246                                <xs:attributeGroup ref="atom:commonAttributes"/>
247                        </xs:extension>
248                </xs:simpleContent>
249        </xs:complexType>
250        <xs:complexType name="dateTimeType">
251                <xs:simpleContent>
252                        <xs:extension base="xs:dateTime">
253                                <xs:attributeGroup ref="atom:commonAttributes"/>
254                        </xs:extension>
255                </xs:simpleContent>
256        </xs:complexType>
257        <xs:attributeGroup name="commonAttributes">
258                <xs:attribute ref="xml:base" />
259                <xs:attribute ref="xml:lang" />
260                <xs:anyAttribute namespace="##other"/>
261        </xs:attributeGroup>
262</xs:schema>
Note: See TracBrowser for help on using the repository browser.