Home | History | Annotate | Download | only in schemas
      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 (a] 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