Kasimier T. Buchcik | c872afb | 2005-04-18 10:57:04 +0000 | [diff] [blame] | 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 | |