Imported Upstream version 2.8.0
[platform/upstream/libxml2.git] / test / schemas / changelog093_1.xsd
1 <?xml version="1.0"?>
2 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3     xmlns:tns="http://www.blackperl.com/XML/ChangeLog"
4     targetNamespace="http://www.blackperl.com/XML/ChangeLog"
5     elementFormDefault="qualified" attributeFormDefault="unqualified"
6     version="0.93" id="changelog0.93">
7   <!--
8       Refer to this schema using the following namespace:
9       http://www.blackperl.com/XML/ChangeLog
10   -->
11   <xsd:annotation>
12     <xsd:documentation>
13       A description of an XML application which itemizes changes over the
14       life-span of a software project. Changes are tracked by releases, with a
15       granularity of individual items made up of files that were affected.
16     </xsd:documentation>
17     <xsd:appinfo xmlns:dc="http://purl.org/dc/elements/1.1/">
18       <dc:creator>Randy J. Ray (rjray@blackperl.com)</dc:creator>
19       <dc:date>2004-11-22</dc:date>
20       <dc:subject>changelog,xml,schema</dc:subject>
21       <dc:description>
22         An XML Schema declaration describing an XML expression of software
23         project change-logs.
24       </dc:description>
25     </xsd:appinfo>
26     <xsd:appinfo>
27       <rdf:RDF xmlns:cc="http://web.resource.org/cc/"
28                xmlns:dc="http://purl.org/dc/elements/1.1/"
29                xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
30         <cc:Work rdf:about="">
31           <dc:title>XML Schema for Changelogs</dc:title>
32           <dc:description>
33             An XML Schema declaration describing an XML expression of software
34             project change-logs.
35           </dc:description>
36           <dc:creator>
37             <cc:Agent>
38               <dc:title>Randy J. Ray</dc:title>
39             </cc:Agent>
40           </dc:creator>
41           <dc:rights>
42             <cc:Agent>
43               <dc:title>Randy J. Ray</dc:title>
44             </cc:Agent>
45           </dc:rights>
46           <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
47           <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
48         </cc:Work>
49         <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
50           <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction" />
51           <cc:permits rdf:resource="http://web.resource.org/cc/Distribution" />
52           <cc:requires rdf:resource="http://web.resource.org/cc/Notice" />
53           <cc:requires rdf:resource="http://web.resource.org/cc/Attribution" />
54           <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
55           <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
56         </cc:License>
57       </rdf:RDF>
58     </xsd:appinfo>
59   </xsd:annotation>
60
61   <xsd:complexType id="informationType" name="informationType"
62                    mixed="true">
63     <xsd:annotation>
64       <xsd:documentation>
65         An open-ended container type for including version-control information
66         at various levels within the changelog structure. This is the only
67         type which explicitly permits content from foreign namespaces.
68       </xsd:documentation>
69     </xsd:annotation>
70     <xsd:sequence maxOccurs="unbounded" minOccurs="0">
71       <xsd:any processContents="lax" />
72     </xsd:sequence>
73     <xsd:attribute name="source" type="xsd:anyURI" />
74     <xsd:anyAttribute namespace="##other" processContents="lax" />
75   </xsd:complexType>
76
77   <xsd:complexType id="descriptionType" name="descriptionType">
78     <xsd:annotation>
79       <xsd:documentation>
80         A description block is used to document everything from specific change
81         items to the release as a whole.
82       </xsd:documentation>
83     </xsd:annotation>
84     <xsd:simpleContent>
85       <xsd:extension base="xsd:string">
86         <xsd:attribute default="en-US" name="lang" type="xsd:language" />
87       </xsd:extension>
88     </xsd:simpleContent>
89   </xsd:complexType>
90
91   <xsd:simpleType id="versionString" name="versionString">
92     <xsd:annotation>
93       <xsd:documentation>
94         The versionString type is applied to attributes that describe simple
95         revision-number strings. It only supports CVS (RCS) styled version
96         numbers.
97       </xsd:documentation>
98     </xsd:annotation>
99     <xsd:restriction base="xsd:string">
100       <xsd:pattern value="\d+(\.\d+)*" />
101     </xsd:restriction>
102   </xsd:simpleType>
103
104   <xsd:complexType id="fileType" name="fileType">
105     <xsd:annotation>
106       <xsd:documentation>
107         The fileType definition is used for the file element, a part of the
108         itemType declaration. It is defined separately so that it can be
109         referred to from multiple places.
110       </xsd:documentation>
111     </xsd:annotation>
112     <xsd:sequence maxOccurs="1" minOccurs="0">
113       <xsd:element name="description" type="tns:descriptionType"
114                    minOccurs="0" maxOccurs="unbounded" />
115       <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
116                    type="tns:informationType" nillable="true" />
117     </xsd:sequence>
118     <xsd:attribute name="path" type="xsd:string" use="required" />
119     <xsd:attribute name="revision" type="tns:versionString" use="optional"/>
120     <xsd:attribute name="author" type="xsd:NMTOKEN" use="optional" />
121     <xsd:attribute name="action" use="optional">
122       <xsd:simpleType>
123         <xsd:restriction base="xsd:NMTOKEN">
124           <xsd:enumeration value="ADD" />
125           <xsd:enumeration value="DELETE" />
126           <xsd:enumeration value="RESTORE" />
127           <xsd:enumeration value="MOVE" />
128         </xsd:restriction>
129       </xsd:simpleType>
130     </xsd:attribute>
131     <xsd:attribute name="note" type="xsd:string" use="optional" />
132   </xsd:complexType>
133
134   <xsd:element id="file" name="file" nillable="true" type="tns:fileType">
135     <xsd:annotation>
136       <xsd:documentation>
137         A file element contains a single block representing a fileType.
138       </xsd:documentation>
139     </xsd:annotation>
140     <xsd:unique name="fileDescriptionLangConstraint">
141       <xsd:selector xpath="tns:description" />
142       <xsd:field xpath="@lang" />
143     </xsd:unique>
144   </xsd:element>
145
146   <xsd:complexType id="itemType" name="itemType">
147     <xsd:annotation>
148       <xsd:documentation>
149         These element blocks define a single change-item within the scope of a
150         given release. A change-item consists of one or more files that were
151         affected, and a description of the change itself.
152       </xsd:documentation>
153     </xsd:annotation>
154     <xsd:sequence>
155       <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
156                    type="tns:informationType" nillable="true" />
157       <xsd:choice minOccurs="1" maxOccurs="1">
158         <xsd:element ref="tns:file" />
159         <xsd:element name="fileset" nillable="false">
160           <xsd:complexType>
161             <xsd:sequence>
162               <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
163                            type="tns:informationType" nillable="true" />
164               <xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:file" />
165             </xsd:sequence>
166           </xsd:complexType>
167         </xsd:element>
168       </xsd:choice>
169       <xsd:element name="description" type="tns:descriptionType"
170                    minOccurs="1" maxOccurs="unbounded" />
171     </xsd:sequence>
172     <xsd:attribute name="id" type="xsd:ID" />
173   </xsd:complexType>
174
175   <xsd:element id="item" name="item" nillable="false" type="tns:itemType">
176     <xsd:annotation>
177       <xsd:documentation>
178         An item element contains a single block representing an itemType.
179       </xsd:documentation>
180     </xsd:annotation>
181     <xsd:unique name="itemDescriptionLangConstraint">
182       <xsd:selector xpath="tns:description" />
183       <xsd:field xpath="@lang" />
184     </xsd:unique>
185   </xsd:element>
186
187   <xsd:complexType id="releaseType" name="releaseType">
188     <xsd:annotation>
189       <xsd:documentation>
190         The release is the primary piece of information that a changelog
191         collects and organizes. A release contains an optional description,
192         followed by one or more item blocks. The release element is also the
193         greatest user of attributes besides the file element. A release element
194         must have at least a "version" attribute, uniquely identifying the
195         release itself. Additionally, it may have "tag" to associate it with
196         a release-system tag and "date" to specify the date the release was
197         created.
198       </xsd:documentation>
199     </xsd:annotation>
200     <xsd:sequence>
201       <xsd:element name="description" type="tns:descriptionType"
202                    minOccurs="0" maxOccurs="unbounded" />
203       <xsd:element maxOccurs="unbounded" minOccurs="0" name="information"
204                    type="tns:informationType" nillable="true" />
205       <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
206                    type="tns:informationType" nillable="true" />
207       <xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:item" />
208     </xsd:sequence>
209     <xsd:attribute name="version" type="xsd:token" use="required" />
210     <xsd:attribute name="tag" type="xsd:NMTOKEN" />
211     <xsd:attribute name="date" type="xsd:token" use="required" /> <!-- type="xsd:dateTime"  -->
212   </xsd:complexType>
213
214   <xsd:element id="release" name="release" nillable="false"
215                type="tns:releaseType">
216     <xsd:annotation>
217       <xsd:documentation>
218       </xsd:documentation>
219     </xsd:annotation>
220     <xsd:unique name="releaseDescriptionLangConstraint">
221       <xsd:selector xpath="tns:description" />
222       <xsd:field xpath="@lang" />
223     </xsd:unique>
224   </xsd:element>
225
226   <xsd:element id="changelog" name="changelog" nillable="false">
227     <xsd:annotation>
228       <xsd:documentation>
229         The changelog element is intended as the document root element. It
230         contains an overview element (identical in structure to the description
231         element, but named differently to prevent collision in XPath queries)
232         and one or more release blocks.
233       </xsd:documentation>
234     </xsd:annotation>
235     <xsd:complexType>
236       <xsd:sequence>
237         <xsd:element maxOccurs="unbounded" minOccurs="1" name="description"
238                      nillable="false" type="tns:descriptionType" />
239         <xsd:element maxOccurs="unbounded" minOccurs="0" name="information"
240                    type="tns:informationType" nillable="true" />
241         <xsd:element maxOccurs="1" minOccurs="0" name="vc-information"
242                      type="tns:informationType" nillable="true" />
243         <xsd:element maxOccurs="unbounded" minOccurs="1" ref="tns:release" />
244       </xsd:sequence>
245     </xsd:complexType>
246     <xsd:unique name="changelogDescriptionLangConstraint">
247       <xsd:selector xpath="tns:description" />
248       <xsd:field xpath="@lang" />
249     </xsd:unique>
250   </xsd:element>
251
252 </xsd:schema>
253