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 254