1+ <?xml version =" 1.0" encoding =" utf-8" ?>
2+ <!--
3+ ~ Copyright (c) 2018-2020 Green Button Alliance, Inc.
4+ ~
5+ ~ Portions copyright (c) 2013-2018 EnergyOS.org
6+ ~
7+ ~ Licensed under the Apache License, Version 2.0 (the "License");
8+ ~ you may not use this file except in compliance with the License.
9+ ~ You may obtain a copy of the License at
10+ ~
11+ ~ http://www.apache.org/licenses/LICENSE-2.0
12+ ~
13+ ~ Unless required by applicable law or agreed to in writing, software
14+ ~ distributed under the License is distributed on an "AS IS" BASIS,
15+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+ ~ See the License for the specific language governing permissions and
17+ ~ limitations under the License.
18+ -->
19+ <xs : schema xmlns : atom =" http://www.w3.org/2005/Atom" xmlns : xs =" http://www.w3.org/2001/XMLSchema" targetNamespace =" http://www.w3.org/2005/Atom" elementFormDefault =" qualified" >
20+ <xs : annotation >
21+ <xs : documentation >
22+ This version of the Atom schema is based on version 1.0 of the format specifications,
23+ found here https://tools.ietf.org/pdf/rfc4287.pdf.
24+ </xs : documentation >
25+ </xs : annotation >
26+ <xs : import namespace =" http://www.w3.org/XML/1998/namespace" schemaLocation =" https://www.w3.org/2001/03/xml.xsd" />
27+ <xs : annotation >
28+ <xs : documentation >
29+ An Atom document may have two root elements, feed and entry, as defined in section 2.
30+ </xs : documentation >
31+ </xs : annotation >
32+ <xs : element name =" feed" type =" atom:feedType" />
33+ <xs : element name =" entry" type =" atom:entryType" />
34+ <xs : complexType name =" textType" mixed =" true" >
35+ <xs : annotation >
36+ <xs : documentation >
37+ The Atom text construct is defined in section 3.1 of the format spec.
38+ </xs : documentation >
39+ </xs : annotation >
40+ <xs : sequence >
41+ <xs : any namespace =" http://www.w3.org/1999/xhtml" minOccurs =" 0" />
42+ </xs : sequence >
43+ <xs : attribute name =" type" >
44+ <xs : simpleType >
45+ <xs : restriction base =" xs:token" >
46+ <xs : enumeration value =" text" />
47+ <xs : enumeration value =" html" />
48+ <xs : enumeration value =" xhtml" />
49+ </xs : restriction >
50+ </xs : simpleType >
51+ </xs : attribute >
52+ <xs : attributeGroup ref =" atom:commonAttributes" />
53+ </xs : complexType >
54+ <xs : complexType name =" personType" >
55+ <xs : annotation >
56+ <xs : documentation >
57+ The Atom person construct is defined in section 3.2 of the format spec.
58+ </xs : documentation >
59+ </xs : annotation >
60+ <xs : choice maxOccurs =" unbounded" >
61+ <xs : element name =" name" type =" xs:string" />
62+ <xs : element name =" uri" type =" atom:uriType" minOccurs =" 0" />
63+ <xs : element name =" email" type =" atom:emailType" minOccurs =" 0" />
64+ <xs : any namespace =" ##other" />
65+ </xs : choice >
66+ <xs : attributeGroup ref =" atom:commonAttributes" />
67+ </xs : complexType >
68+ <xs : simpleType name =" emailType" >
69+ <xs : annotation >
70+ <xs : documentation >
71+ Schema definition for an email address.
72+ </xs : documentation >
73+ </xs : annotation >
74+ <xs : restriction base =" xs:normalizedString" >
75+ <xs : pattern value =" \w+@(\w+\.)+\w+" />
76+ </xs : restriction >
77+ </xs : simpleType >
78+ <xs : complexType name =" feedType" >
79+ <xs : annotation >
80+ <xs : documentation >
81+ The Atom feed construct is defined in section 4.1.1 of the format spec.
82+ </xs : documentation >
83+ </xs : annotation >
84+ <xs : choice minOccurs =" 3" maxOccurs =" unbounded" >
85+ <xs : element name =" author" type =" atom:personType" minOccurs =" 0" maxOccurs =" unbounded" />
86+ <xs : element name =" category" type =" atom:categoryType" minOccurs =" 0" maxOccurs =" unbounded" />
87+ <xs : element name =" contributor" type =" atom:personType" minOccurs =" 0" maxOccurs =" unbounded" />
88+ <xs : element name =" generator" type =" atom:generatorType" minOccurs =" 0" />
89+ <xs : element name =" icon" type =" atom:iconType" minOccurs =" 0" />
90+ <xs : element name =" id" type =" atom:idType" />
91+ <xs : element name =" link" type =" atom:linkType" />
92+ <xs : element name =" logo" type =" atom:logoType" minOccurs =" 0" />
93+ <xs : element name =" rights" type =" atom:textType" minOccurs =" 0" />
94+ <xs : element name =" subtitle" type =" atom:textType" minOccurs =" 0" />
95+ <xs : element name =" title" type =" atom:textType" />
96+ <xs : element name =" updated" type =" atom:dateTimeType" />
97+ <xs : element name =" entry" type =" atom:entryType" maxOccurs =" unbounded" />
98+ <xs : any namespace =" ##other" minOccurs =" 0" maxOccurs =" unbounded" />
99+ </xs : choice >
100+ <xs : attributeGroup ref =" atom:commonAttributes" />
101+ </xs : complexType >
102+ <xs : complexType name =" entryType" >
103+ <xs : annotation >
104+ <xs : documentation >
105+ The Atom entry construct is defined in section 4.1.2 of the format spec.
106+ </xs : documentation >
107+ </xs : annotation >
108+ <xs : choice maxOccurs =" unbounded" >
109+ <xs : element name =" author" type =" atom:personType" minOccurs =" 0" maxOccurs =" unbounded" />
110+ <xs : element name =" category" type =" atom:categoryType" minOccurs =" 0" maxOccurs =" unbounded" />
111+ <xs : element name =" content" type =" atom:contentType" minOccurs =" 0" />
112+ <xs : element name =" contributor" type =" atom:personType" minOccurs =" 0" maxOccurs =" unbounded" />
113+ <xs : element name =" id" type =" atom:idType" />
114+ <xs : element name =" link" type =" atom:linkType" minOccurs =" 2" maxOccurs =" unbounded" />
115+ <xs : element name =" published" type =" atom:dateTimeType" />
116+ <xs : element name =" rights" type =" atom:textType" minOccurs =" 0" />
117+ <xs : element name =" source" type =" atom:textType" minOccurs =" 0" />
118+ <xs : element name =" summary" type =" atom:textType" minOccurs =" 0" />
119+ <xs : element name =" title" type =" atom:textType" />
120+ <xs : element name =" updated" type =" atom:dateTimeType" />
121+ <xs : any namespace =" ##other" minOccurs =" 0" maxOccurs =" unbounded" />
122+ </xs : choice >
123+ <xs : attributeGroup ref =" atom:commonAttributes" />
124+ </xs : complexType >
125+ <xs : complexType name =" contentType" mixed =" true" >
126+ <xs : annotation >
127+ <xs : documentation >
128+ The Atom content construct is defined in section 4.1.3 of the format spec.
129+ </xs : documentation >
130+ </xs : annotation >
131+ <xs : sequence >
132+ <xs : any namespace =" ##other" minOccurs =" 0" maxOccurs =" unbounded" />
133+ </xs : sequence >
134+ <xs : attribute name =" type" type =" xs:string" />
135+ <xs : attribute name =" src" type =" xs:anyURI" />
136+ <xs : attributeGroup ref =" atom:commonAttributes" />
137+ </xs : complexType >
138+ <xs : complexType name =" categoryType" >
139+ <xs : annotation >
140+ <xs : documentation >
141+ The Atom category construct is defined in section 4.2.2 of the format spec.
142+ </xs : documentation >
143+ </xs : annotation >
144+ <xs : attribute name =" term" type =" xs:string" use =" required" />
145+ <xs : attribute name =" scheme" type =" xs:anyURI" />
146+ <xs : attribute name =" label" type =" xs:string" />
147+ <xs : attributeGroup ref =" atom:commonAttributes" />
148+ </xs : complexType >
149+ <xs : complexType name =" generatorType" >
150+ <xs : annotation >
151+ <xs : documentation >
152+ The Atom generator element is defined in section 4.2.4 of the format spec.
153+ </xs : documentation >
154+ </xs : annotation >
155+ <xs : simpleContent >
156+ <xs : extension base =" xs:string" >
157+ <xs : attribute name =" uri" type =" xs:anyURI" />
158+ <xs : attribute name =" version" type =" xs:string" />
159+ <xs : attributeGroup ref =" atom:commonAttributes" />
160+ </xs : extension >
161+ </xs : simpleContent >
162+ </xs : complexType >
163+ <xs : complexType name =" iconType" >
164+ <xs : annotation >
165+ <xs : documentation >
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+ <xs : complexType name =" idType" >
176+ <xs : annotation >
177+ <xs : documentation >
178+ The Atom id construct is defined in section 4.2.6 of the format spec.
179+ </xs : documentation >
180+ </xs : annotation >
181+ <xs : simpleContent >
182+ <xs : extension base =" xs:anyURI" >
183+ <xs : attributeGroup ref =" atom:commonAttributes" />
184+ </xs : extension >
185+ </xs : simpleContent >
186+ </xs : complexType >
187+ <xs : complexType name =" linkType" mixed =" true" >
188+ <xs : annotation >
189+ <xs : documentation >
190+ The Atom link construct is defined in section 3.4 of the format spec.
191+ </xs : documentation >
192+ </xs : annotation >
193+ <xs : attribute name =" href" type =" xs:anyURI" use =" required" />
194+ <xs : attribute name =" rel" type =" xs:string" use =" required" />
195+ <xs : attribute name =" type" type =" xs:string" use =" required" />
196+ <xs : attribute name =" hreflang" type =" xs:NMTOKEN" />
197+ <xs : attribute name =" title" type =" xs:string" />
198+ <xs : attribute name =" length" type =" xs:positiveInteger" />
199+ <xs : attributeGroup ref =" atom:commonAttributes" />
200+ </xs : complexType >
201+ <xs : complexType name =" logoType" >
202+ <xs : annotation >
203+ <xs : documentation >
204+ The Atom logo construct is defined in section 4.2.8 of the format spec.
205+ </xs : documentation >
206+ </xs : annotation >
207+ <xs : simpleContent >
208+ <xs : extension base =" xs:anyURI" >
209+ <xs : attributeGroup ref =" atom:commonAttributes" />
210+ </xs : extension >
211+ </xs : simpleContent >
212+ </xs : complexType >
213+ <xs : complexType name =" sourceType" >
214+ <xs : annotation >
215+ <xs : documentation >
216+ The Atom source construct is defined in section 4.2.11 of the format spec.
217+ </xs : documentation >
218+ </xs : annotation >
219+ <xs : choice maxOccurs =" unbounded" >
220+ <xs : element name =" author" type =" atom:personType" minOccurs =" 0" maxOccurs =" unbounded" />
221+ <xs : element name =" category" type =" atom:categoryType" minOccurs =" 0" maxOccurs =" unbounded" />
222+ <xs : element name =" contributor" type =" atom:personType" minOccurs =" 0" maxOccurs =" unbounded" />
223+ <xs : element name =" generator" type =" atom:generatorType" minOccurs =" 0" />
224+ <xs : element name =" icon" type =" atom:iconType" minOccurs =" 0" />
225+ <xs : element name =" id" type =" atom:idType" minOccurs =" 0" />
226+ <xs : element name =" link" type =" atom:linkType" minOccurs =" 0" maxOccurs =" unbounded" />
227+ <xs : element name =" logo" type =" atom:logoType" minOccurs =" 0" />
228+ <xs : element name =" rights" type =" atom:textType" minOccurs =" 0" />
229+ <xs : element name =" subtitle" type =" atom:textType" minOccurs =" 0" />
230+ <xs : element name =" title" type =" atom:textType" minOccurs =" 0" />
231+ <xs : element name =" updated" type =" atom:dateTimeType" minOccurs =" 0" />
232+ <xs : any namespace =" ##other" minOccurs =" 0" maxOccurs =" unbounded" />
233+ </xs : choice >
234+ <xs : attributeGroup ref =" atom:commonAttributes" />
235+ </xs : complexType >
236+ <xs : complexType name =" uriType" >
237+ <xs : simpleContent >
238+ <xs : extension base =" xs:anyURI" >
239+ <xs : attributeGroup ref =" atom:commonAttributes" />
240+ </xs : extension >
241+ </xs : simpleContent >
242+ </xs : complexType >
243+ <xs : complexType name =" dateTimeType" >
244+ <xs : simpleContent >
245+ <xs : extension base =" xs:dateTime" >
246+ <xs : attributeGroup ref =" atom:commonAttributes" />
247+ </xs : extension >
248+ </xs : simpleContent >
249+ </xs : complexType >
250+ <xs : attributeGroup name =" commonAttributes" >
251+ <xs : attribute ref =" xml:base" />
252+ <xs : attribute ref =" xml:lang" />
253+ <xs : anyAttribute namespace =" ##other" />
254+ </xs : attributeGroup >
255+ </xs : schema >
0 commit comments