blob: cf2bcc6faab37a0d8a474c134f3a1514910d32a7 [file] [log] [blame]
Kasimier T. Buchcikc872afb2005-04-18 10:57:04 +00001<?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