Merge remote-tracking branch 'refs/remotes/origin/3.0'
[GitHub/WoltLab/WCF.git] / XSD / package.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
3 <!-- include types -->
4 <xs:include schemaLocation="types.xsd" />
5
6 <!-- data element -->
7 <xs:element name="package">
8 <xs:complexType>
9 <xs:choice maxOccurs="unbounded">
10 <xs:element name="instructions" type="instructions" minOccurs="1" maxOccurs="unbounded" />
11 <xs:element name="packageinformation" type="packageInformation" minOccurs="1" maxOccurs="1" />
12 <xs:element name="authorinformation" type="authorInformation" minOccurs="1" maxOccurs="1" />
13 <xs:element name="requiredpackages" type="requiredPackages" minOccurs="0" maxOccurs="1" />
14 <xs:element name="optionalpackages" type="optionalPackages" minOccurs="0" maxOccurs="1" />
15 <xs:element name="excludedpackages" type="excludedPackages" minOccurs="0" maxOccurs="1" />
16 <xs:element name="compatibility" type="compatibility" minOccurs="0" maxOccurs="1" />
17 </xs:choice>
18 <xs:attribute name="name" type="woltlab_varchar" use="required" />
19 </xs:complexType>
20 </xs:element>
21
22 <!-- simple package element -->
23 <xs:complexType name="simplePackage">
24 <xs:simpleContent>
25 <xs:extension base="xs:string">
26 <xs:attribute name="minversion" type="xs:string" />
27 <xs:attribute name="file" type="xs:string" />
28 </xs:extension>
29 </xs:simpleContent>
30 </xs:complexType>
31
32 <!-- optional package element -->
33 <xs:complexType name="optionalPackage">
34 <xs:simpleContent>
35 <xs:extension base="xs:string">
36 <xs:attribute name="minVersion" type="xs:string" />
37 <xs:attribute name="file" type="xs:string" use="required" />
38 </xs:extension>
39 </xs:simpleContent>
40 </xs:complexType>
41
42 <!-- excluded package element -->
43 <xs:complexType name="excludedPackage">
44 <xs:simpleContent>
45 <xs:extension base="xs:string">
46 <xs:attribute name="version" type="xs:string" />
47 </xs:extension>
48 </xs:simpleContent>
49 </xs:complexType>
50
51 <!-- api compatibility version element -->
52 <xs:complexType name="apiVersion">
53 <xs:simpleContent>
54 <xs:extension base="xs:string">
55 <xs:attribute name="version" type="xs:integer" use="required" />
56 </xs:extension>
57 </xs:simpleContent>
58 </xs:complexType>
59
60 <!-- instructions elements -->
61 <xs:complexType name="instructions">
62 <xs:sequence>
63 <xs:sequence>
64 <xs:element name="instruction" maxOccurs="unbounded" type="instructionType"/>
65 </xs:sequence>
66 </xs:sequence>
67 <xs:attribute name="type" type="instructionTypes" use="required" />
68 <xs:attribute name="fromversion" type="woltlab_varchar" />
69 </xs:complexType>
70
71 <!-- instruction type attribute -->
72 <xs:simpleType name="instructionTypes">
73 <xs:restriction base="xs:string">
74 <xs:enumeration value="install" />
75 <xs:enumeration value="update" />
76 </xs:restriction>
77 </xs:simpleType>
78
79 <!-- package information element -->
80 <xs:complexType name="packageInformation">
81 <xs:choice maxOccurs="unbounded">
82 <xs:element name="packagename" minOccurs="1" maxOccurs="unbounded">
83 <xs:complexType>
84 <xs:simpleContent>
85 <xs:extension base="woltlab_varchar">
86 <xs:attribute name="language" type="xs:string" />
87 </xs:extension>
88 </xs:simpleContent>
89 </xs:complexType>
90 </xs:element>
91 <xs:element name="packagedescription" minOccurs="0" maxOccurs="unbounded">
92 <xs:complexType>
93 <xs:simpleContent>
94 <xs:extension base="xs:string">
95 <xs:attribute name="language" type="xs:string" />
96 </xs:extension>
97 </xs:simpleContent>
98 </xs:complexType>
99 </xs:element>
100 <xs:element name="applicationdirectory" type="woltlab_varchar" minOccurs="0" maxOccurs="1" />
101 <xs:element name="packageurl" type="xs:anyURI" minOccurs="0" maxOccurs="1" />
102 <xs:element name="isapplication" type="woltlab_boolean" minOccurs="0" maxOccurs="1" />
103 <xs:element name="version" type="woltlab_varchar" minOccurs="1" maxOccurs="1" />
104 <xs:element name="date" type="xs:date" minOccurs="1" maxOccurs="1" />
105 </xs:choice>
106 </xs:complexType>
107
108 <!-- author information element -->
109 <xs:complexType name="authorInformation">
110 <xs:all>
111 <xs:element name="author" type="woltlab_varchar" minOccurs="1" />
112 <xs:element name="authorurl" type="xs:anyURI" minOccurs="0" />
113 </xs:all>
114 </xs:complexType>
115
116 <!-- required packages element -->
117 <xs:complexType name="requiredPackages">
118 <xs:sequence>
119 <xs:element name="requiredpackage" type="simplePackage" minOccurs="0" maxOccurs="unbounded" />
120 </xs:sequence>
121 </xs:complexType>
122
123 <!-- optional packages element -->
124 <xs:complexType name="optionalPackages">
125 <xs:sequence>
126 <xs:element name="optionalpackage" type="optionalPackage" minOccurs="0" maxOccurs="unbounded" />
127 </xs:sequence>
128 </xs:complexType>
129
130 <!-- excluded packages element -->
131 <xs:complexType name="excludedPackages">
132 <xs:sequence>
133 <xs:element name="excludedpackage" type="excludedPackage" minOccurs="0" maxOccurs="unbounded" />
134 </xs:sequence>
135 </xs:complexType>
136
137 <!-- api compatibility element -->
138 <xs:complexType name="compatibility">
139 <xs:sequence>
140 <xs:element name="api" type="apiVersion" minOccurs="1" maxOccurs="unbounded" />
141 </xs:sequence>
142 </xs:complexType>
143
144 <xs:complexType name="instructionType">
145 <xs:simpleContent>
146 <xs:extension base="xs:string">
147 <xs:attribute name="type" use="required" type="woltlab_varchar"/>
148 <xs:attribute name="application" type="woltlab_varchar"/>
149 <xs:attribute name="run" type="woltlab_varchar"/>
150 <xs:attribute name="flushCache" type="xs:boolean"/>
151 </xs:extension>
152 </xs:simpleContent>
153 </xs:complexType>
154 </xs:schema>