Added XSD files
authorMarcel Werk <burntime@woltlab.com>
Mon, 25 Jul 2011 17:24:48 +0000 (19:24 +0200)
committerMarcel Werk <burntime@woltlab.com>
Mon, 25 Jul 2011 17:24:48 +0000 (19:24 +0200)
14 files changed:
XSD/acpmenu.xsd [new file with mode: 0644]
XSD/cronjobs.xsd [new file with mode: 0644]
XSD/eventlistener.xsd [new file with mode: 0644]
XSD/groupoptions.xsd [new file with mode: 0644]
XSD/language.xsd [new file with mode: 0644]
XSD/options.xsd [new file with mode: 0644]
XSD/optiontypes.xsd [new file with mode: 0644]
XSD/package.xsd [new file with mode: 0644]
XSD/packageUpdateServer.xsd [new file with mode: 0644]
XSD/pagelocation.xsd [new file with mode: 0644]
XSD/pagemenu.xsd [new file with mode: 0644]
XSD/styleattributes.xsd [new file with mode: 0644]
XSD/types.xsd [new file with mode: 0644]
XSD/useroptions.xsd [new file with mode: 0644]

diff --git a/XSD/acpmenu.xsd b/XSD/acpmenu.xsd
new file mode 100644 (file)
index 0000000..d45dc4b
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file "acpmenu.xsd" is used for xml-files which installs, updates or deletes acp-menu items.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+          <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                <xs:sequence>
+                        <xs:element name="acpmenuitem" type="acpmenuitem_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        <!-- Represents the delete-node. -->
+        <xs:complexType name="delete">
+                <xs:sequence>
+                        <xs:element name="acpmenuitem" type="acpmenuitem_delete" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        <!-- Represents an acpmenuitem which will be deleted. The node needs the attribute "name". -->
+        <xs:complexType name="acpmenuitem_delete">
+                <xs:attribute name="name" type="woltlab_varchar" use="required" />
+        </xs:complexType>
+        
+        <!-- Represents an acpmenuitem which will be installed or updated. Extends the type "acpmenuitem_delete". -->
+        <xs:complexType name="acpmenuitem_import">
+                <xs:complexContent>
+                        <xs:extension base="acpmenuitem_delete">
+                                    <xs:all>
+                                        <xs:element name="parent" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="link" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="icon" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                        <xs:element name="permissions" type="xs:string" minOccurs="0" />
+                                        <xs:element name="options" type="xs:string" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+        </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/cronjobs.xsd b/XSD/cronjobs.xsd
new file mode 100644 (file)
index 0000000..eafaa6f
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!-- The file "cronjobs.xsd" is used for xml-files which installs, updates or deletes searchable cronjobs.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+         <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                <xs:sequence>
+                        <xs:element name="cronjob" type="cronjob" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+         <!-- Represents the delete-node. -->
+        <xs:complexType name="delete">
+                <xs:sequence>
+                        <xs:element name="cronjob" type="cronjob" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+                
+         <!-- Represents a cronjob which will be installed,updated or deleted. Extends the type "cronjob_delete". -->
+       <xs:complexType name="cronjob">
+                                <xs:all>                                        
+                                        <xs:element name="classpath" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="description" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="startminute" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="starthour" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="startdom" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="startmonth" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="startdow" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="execmultiple" type="woltlab_boolean" minOccurs="0" default="0" />
+                                        <xs:element name="canbeedited" type="woltlab_boolean" minOccurs="0" default="1" />
+                                        <xs:element name="canbedisabled" type="woltlab_boolean" minOccurs="0" default="1" />
+                                        <xs:element name="active" type="woltlab_boolean" minOccurs="0" default="1" />
+                                </xs:all>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/eventlistener.xsd b/XSD/eventlistener.xsd
new file mode 100644 (file)
index 0000000..be64f26
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<!-- The file "eventlistener.xsd" is used for xml-files which installs, updates or deletes  event listeners. -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+         <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                <xs:sequence>
+                        <xs:element name="eventlistener" type="eventlistener" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+         <!-- Represents the delete-node. -->
+        <xs:complexType name="delete">
+                <xs:sequence>
+                        <xs:element name="eventlistener" type="eventlistener" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+            
+        <!-- Represents a eventlistener which will be installed, updated or deleted. -->
+       <xs:complexType name="eventlistener">
+                <xs:all>
+                        <xs:element name="eventclassname" minOccurs="0">
+                                <xs:simpleType>
+                                        <xs:restriction base="xs:string">
+                                                <xs:minLength value="0" />
+                                                <xs:maxLength value="80" />
+                                        </xs:restriction>
+                                </xs:simpleType>
+                        </xs:element>
+                        <xs:element name="eventname" minOccurs="0">
+                                <xs:simpleType>
+                                        <xs:restriction base="xs:string">
+                                                <xs:minLength value="0" />
+                                                <xs:maxLength value="50" />
+                                        </xs:restriction>
+                                </xs:simpleType>
+                        </xs:element>
+                        <xs:element name="listenerclassname" minOccurs="0">
+                                <xs:simpleType>
+                                        <xs:restriction base="xs:string">
+                                                <xs:minLength value="0" />
+                                                <xs:maxLength value="200" />
+                                        </xs:restriction>
+                                </xs:simpleType>
+                        </xs:element>
+                        <xs:element name="inherit" type="woltlab_boolean" minOccurs="0" />
+                </xs:all>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/groupoptions.xsd b/XSD/groupoptions.xsd
new file mode 100644 (file)
index 0000000..ecac13f
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!-- The file "option.xsd" is used for xml-files which installs, updates or deletes options.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+         <!-- include option types -->
+        <xs:include schemaLocation="optiontypes.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+        <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                 <xs:all>
+                        <xs:element name="categories" type="categories_import" minOccurs="0" />
+                        <xs:element name="options" type="options_import" minOccurs="0" />
+                </xs:all>
+        </xs:complexType>
+        
+        <!-- Represents the import-categories-node. -->
+        <xs:complexType name="categories_import">
+                <xs:sequence>
+                        <xs:element name="category" type="category_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        
+       
+       <!-- Represents a category which will be installed or updated. Extends the type "category_delete". -->
+       <xs:complexType name="category_import">
+                <xs:complexContent>
+                        <xs:extension base="category_delete">
+                                <xs:all>
+                                        <xs:element name="parent" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                        <xs:element name="options" type="woltlab_varchar_nullable" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+        
+        
+        <!-- Represents the import-options-node. -->
+        <xs:complexType name="options_import">
+                <xs:sequence>
+                        <xs:element name="option" type="option_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        
+       
+       <!-- Represents an option which will be installed or updated. Extends the type "category_delete". -->
+       <xs:complexType name="option_import">
+                <xs:complexContent>
+                        <xs:extension base="option_delete">
+                                <xs:all>
+                                        <xs:element name="categoryname" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="optiontype" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="defaultvalue" type="xs:string" minOccurs="0" />
+                                        <xs:element name="validationpattern" type="xs:string" minOccurs="0" />
+                                        <xs:element name="enableoptions" type="xs:string" minOccurs="0" />                                       
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                        <xs:element name="options" type="woltlab_varchar_nullable" minOccurs="0" />
+                                       <xs:element name="admindefaultvalue" type="xs:string" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/language.xsd b/XSD/language.xsd
new file mode 100644 (file)
index 0000000..d76ac2a
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!-- The file "language.xsd" is used for xml-files which installs or updates language items.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="language">
+                <xs:complexType>
+                         <xs:sequence>
+                                <xs:element name="category" type="category" maxOccurs="unbounded" />
+                        </xs:sequence>
+                        <xs:attribute name="languagecode" type="woltlab_varchar" use="required" />
+                </xs:complexType>
+        </xs:element>
+        
+         <!-- Represents a language-category-node. -->
+        <xs:complexType name="category">
+                <xs:sequence>
+                        <xs:element name="item" type="item" maxOccurs="unbounded" />
+                </xs:sequence>
+                <xs:attribute name="name" type="woltlab_varchar" use="required" />
+        </xs:complexType>
+        
+         <!-- Represents a language-item-node. -->
+        <xs:complexType name="item" mixed="true">
+                <xs:attribute name="name" type="woltlab_varchar" use="required" />
+        </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/options.xsd b/XSD/options.xsd
new file mode 100644 (file)
index 0000000..4c27bef
--- /dev/null
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<!-- The file "option.xsd" is used for xml-files which installs, updates or deletes options.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+         <!-- include option types -->
+        <xs:include schemaLocation="optiontypes.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+        <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                 <xs:all>
+                        <xs:element name="categories" type="categories_import" minOccurs="0" />
+                        <xs:element name="options" type="options_import" minOccurs="0" />
+                </xs:all>
+        </xs:complexType>
+        
+        <!-- Represents the import-categories-node. -->
+        <xs:complexType name="categories_import">
+                <xs:sequence>
+                        <xs:element name="category" type="category_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        
+       
+       <!-- Represents a category which will be installed or updated. Extends the type "category_delete". -->
+       <xs:complexType name="category_import">
+                <xs:complexContent>
+                        <xs:extension base="category_delete">
+                                <xs:all>
+                                        <xs:element name="parent" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                        <xs:element name="options" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="permissions" type="woltlab_varchar_nullable" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+        
+        
+        <!-- Represents the import-options-node. -->
+        <xs:complexType name="options_import">
+                <xs:sequence>
+                        <xs:element name="option" type="option_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        
+       
+       <!-- Represents an option which will be installed or updated. Extends the type "option_delete". -->
+       <xs:complexType name="option_import">
+                <xs:complexContent>
+                        <xs:extension base="option_delete">
+                                <xs:all>
+                                        <xs:element name="categoryname" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="optiontype" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="defaultvalue" type="xs:string" minOccurs="0" />
+                                        <xs:element name="validationpattern" type="xs:string" minOccurs="0" />                                   
+                                        <xs:element name="selectoptions" type="xs:string" minOccurs="0" />
+                                        <xs:element name="enableoptions" type="xs:string" minOccurs="0" />
+                                        <xs:element name="hidden" type="woltlab_boolean" minOccurs="0" />                                        
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                        <xs:element name="options" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="permissions" type="woltlab_varchar_nullable" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/optiontypes.xsd b/XSD/optiontypes.xsd
new file mode 100644 (file)
index 0000000..6a237ef
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!-- The file "option.xsd" is used for xml-files which installs, updates or deletes options.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the delete-node. -->
+        <xs:complexType name="delete">
+                 <xs:choice maxOccurs="unbounded">
+                        <xs:element name="optioncategory" type="category_delete" minOccurs="0" />
+                        <xs:element name="option" type="option_delete" minOccurs="0" />
+                </xs:choice>
+        </xs:complexType>
+        
+        <!-- Represents a category which will be deleted. The node requires the attribute "name". -->
+       <xs:complexType name="category_delete">
+                <xs:attribute name="name" type="woltlab_varchar" use="required" />
+       </xs:complexType>
+        
+         <!-- Represents an option which will be deleted. The node requires the attribute "name". -->
+       <xs:complexType name="option_delete">
+                <xs:attribute name="name" type="woltlab_varchar" use="required" />
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/package.xsd b/XSD/package.xsd
new file mode 100644 (file)
index 0000000..07d5832
--- /dev/null
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+       <!-- include WoltLab data types -->
+       <xs:include schemaLocation="types.xsd" />
+       
+       <!-- data node -->
+       <xs:element name="package">
+               <xs:complexType>
+                       <xs:choice maxOccurs="unbounded">
+                               <xs:element name="instructions" type="instructions" minOccurs="1" maxOccurs="unbounded" />
+                               <xs:element name="packageinformation" type="packageInformation" minOccurs="1" maxOccurs="1" />
+                               <xs:element name="authorinformation" type="authorInformation" minOccurs="1" maxOccurs="1" />
+                               <xs:element name="requiredpackages" type="requiredPackages" minOccurs="0" maxOccurs="1" />
+                               <xs:element name="optionalpackages" type="optionalPackages" minOccurs="0" maxOccurs="1" />
+                               <xs:element name="excludedpackages" type="excludedPackages" minOccurs="0" maxOccurs="1" />
+                       </xs:choice>
+                       <xs:attribute name="name" type="woltlab_varchar" use="required" />
+               </xs:complexType>
+       </xs:element>
+       
+       <!-- simplePackage element -->
+       <xs:complexType name="simplePackage">
+               <xs:simpleContent>
+                       <xs:extension base="xs:string">
+                               <xs:attribute name="minversion" type="xs:string" />
+                               <xs:attribute name="file" type="xs:string" />
+                       </xs:extension>
+               </xs:simpleContent>
+       </xs:complexType>
+       
+       
+       <!-- optionalPackage element -->
+       <xs:complexType name="optionalPackage">
+               <xs:simpleContent>
+                       <xs:extension base="xs:string">
+                               <xs:attribute name="minVersion" type="xs:string" />
+                               <xs:attribute name="file" type="xs:string" use="required" />
+                       </xs:extension>
+               </xs:simpleContent>
+       </xs:complexType>
+       
+       <!-- excludedPackage element -->
+       <xs:complexType name="excludedPackage">
+               <xs:simpleContent>
+                       <xs:extension base="xs:string">
+                               <xs:attribute name="version" type="xs:string" />
+                       </xs:extension>
+               </xs:simpleContent>
+       </xs:complexType>
+       
+       <!-- instructions node -->
+       <xs:complexType name="instructions">
+               <xs:sequence>
+                       <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
+               </xs:sequence>
+               <xs:attribute name="type" type="instructionsType" use="required" />
+               <xs:attribute name="fromversion" type="woltlab_varchar" />
+       </xs:complexType>
+       
+       <!-- instructionsType attribute -->
+       <xs:simpleType name="instructionsType">
+               <xs:restriction base="xs:string">
+                       <xs:enumeration value="install" />
+                       <xs:enumeration value="update" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <!-- packageInformation node -->
+       <xs:complexType name="packageInformation">
+               <xs:sequence>
+                       <xs:element name="packagename" minOccurs="1" maxOccurs="unbounded">
+                               <xs:complexType>
+                                       <xs:simpleContent>
+                                               <xs:extension base="woltlab_varchar">
+                                                       <xs:attribute name="language" type="xs:string" />
+                                               </xs:extension>
+                                       </xs:simpleContent>
+                               </xs:complexType>
+                       </xs:element>
+                       <xs:element name="packagedescription" minOccurs="0" maxOccurs="unbounded">
+                               <xs:complexType>
+                                       <xs:simpleContent>
+                                               <xs:extension base="xs:string">
+                                                       <xs:attribute name="language" type="xs:string" />
+                                               </xs:extension>
+                                       </xs:simpleContent>
+                               </xs:complexType>
+                       </xs:element>
+                       <xs:element name="standalone" type="woltlab_boolean" minOccurs="0" maxOccurs="1" />
+                       <xs:element name="isunique" type="woltlab_boolean" minOccurs="0" maxOccurs="1" />
+                       <xs:element name="version" type="woltlab_varchar" minOccurs="1" maxOccurs="1" />
+                       <xs:element name="date" type="xs:date" minOccurs="1" maxOccurs="1" />
+                       <xs:element name="plugin" type="woltlab_varchar" minOccurs="0" maxOccurs="1" />
+               </xs:sequence>
+       </xs:complexType>
+       
+       <!-- authorInformation node -->
+       <xs:complexType name="authorInformation">
+               <xs:all>
+                       <xs:element name="author" type="woltlab_varchar" minOccurs="1" />
+                       <xs:element name="authorurl" type="xs:anyURI" minOccurs="0" />
+               </xs:all>
+       </xs:complexType>
+       
+       <!-- requiredPackages node -->
+       <xs:complexType name="requiredPackages">
+               <xs:sequence>
+                       <xs:element name="requiredpackage" type="simplePackage" minOccurs="0" maxOccurs="unbounded" />
+               </xs:sequence>
+       </xs:complexType>
+       
+       <!-- optionalPackages node -->
+       <xs:complexType name="optionalPackages">
+               <xs:sequence>
+                       <xs:element name="optionalpackage" type="optionalPackage" minOccurs="0" maxOccurs="unbounded" />
+               </xs:sequence>
+       </xs:complexType>
+       
+       <!-- excludedPackages node -->
+       <xs:complexType name="excludedPackages">
+               <xs:sequence>
+                       <xs:element name="excludedpackage" type="excludedPackage" minOccurs="0" maxOccurs="unbounded" />
+               </xs:sequence>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/packageUpdateServer.xsd b/XSD/packageUpdateServer.xsd
new file mode 100644 (file)
index 0000000..07fe0a3
--- /dev/null
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+       <!-- include types -->
+       <xs:include schemaLocation="types.xsd" />
+       
+       <!-- section tag -->
+       <xs:element name="section">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element maxOccurs="unbounded" ref="package" />
+                       </xs:sequence>
+                       <xs:attribute name="name" use="required" type="xs:NCName" />
+               </xs:complexType>
+       </xs:element>
+       
+       <!-- package element -->
+       <xs:element name="package">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element ref="packageinformation" />
+                               <xs:element ref="authorinformation" />
+                               <xs:element ref="versions" />
+                       </xs:sequence>
+                       <xs:attribute name="name" use="required" type="woltlab_varchar" />
+               </xs:complexType>
+       </xs:element>
+       
+       <!-- package -->
+       <xs:element name="packageinformation">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element ref="packagename" />
+                               <xs:element ref="packagedescription" />
+                               <xs:choice minOccurs="0">
+                                       <xs:element ref="plugin" />
+                                       <xs:element ref="standalone" />
+                               </xs:choice>
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="packagename" type="woltlab_varchar" />
+       <xs:element name="packagedescription" type="woltlab_varchar" />
+       <xs:element name="plugin" type="woltlab_varchar" />
+       <xs:element name="standalone" type="woltlab_boolean" />
+       
+       <!-- author -->
+       <xs:element name="authorinformation">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element ref="author" />
+                               <xs:element ref="authorurl" />
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="author" type="xs:string" />
+       <xs:element name="authorurl" type="xs:anyURI" />
+       
+       <!-- versions -->
+       <xs:element name="versions">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element maxOccurs="unbounded" ref="version" />
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="version">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element minOccurs="0" ref="fromversions" />
+                               <xs:element minOccurs="0" ref="requiredpackages" />
+                               <xs:element ref="updatetype" />
+                               <xs:element ref="timestamp" />
+                               <xs:element ref="versiontype" />
+                               <xs:element ref="license" />
+                       </xs:sequence>
+                       <xs:attribute name="name" use="required" />
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="fromversions">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element maxOccurs="unbounded" ref="fromversion" />
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="fromversion" type="xs:string" />
+       <xs:element name="requiredpackages">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element maxOccurs="unbounded" ref="requiredpackage" />
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="requiredpackage">
+               <xs:complexType>
+                       <xs:simpleContent>
+                               <xs:extension base="xs:NCName">
+                                       <xs:attribute name="minversion" />
+                               </xs:extension>
+                       </xs:simpleContent>
+               </xs:complexType>
+       </xs:element>
+       <xs:element name="updatetype" type="xs:NCName" />
+       <xs:element name="timestamp" type="xs:integer" />
+       <xs:element name="versiontype" type="xs:NCName" />
+       <xs:element name="license" type="xs:NCName" />
+</xs:schema>
diff --git a/XSD/pagelocation.xsd b/XSD/pagelocation.xsd
new file mode 100644 (file)
index 0000000..8f87970
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<!-- The file "pagelocation.xsd" is used for xml-files which installs, updates or deletes page locations.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+         <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                <xs:sequence>
+                        <xs:element name="pagelocation" type="pagelocation_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+         <!-- Represents the delete-node. -->
+        <xs:complexType name="delete">
+                <xs:sequence>
+                        <xs:element name="pagelocation" type="pagelocation_delete" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        <!-- Represents a pagelocation which will be deleted. The node needs the attribute "name". -->
+       <xs:complexType name="pagelocation_delete">
+                 <xs:attribute name="name" type="woltlab_varchar" use="required" />
+       </xs:complexType>        
+        
+         <!-- Represents a pagelocation which will be installed or updated. Extends the type "pagelocation_delete". -->
+       <xs:complexType name="pagelocation_import">
+                <xs:complexContent>
+                        <xs:extension base="pagelocation_delete">
+                                <xs:all>
+                                        <xs:element name="pattern" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="classpath" type="woltlab_varchar_nullable" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/pagemenu.xsd b/XSD/pagemenu.xsd
new file mode 100644 (file)
index 0000000..60177e3
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- The file "pagemenu.xsd" is used for xml-files which installs, updates or deletes header menu items.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+         <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                <xs:sequence>
+                        <xs:element name="pagemenuitem" type="pagemenuitem_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+         <!-- Represents the delete-node. -->
+        <xs:complexType name="delete">
+                <xs:sequence>
+                        <xs:element name="pagemenuitem" type="pagemenuitem_delete" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        <!-- Represents a pagemenuitem which will be deleted. The node needs the attribute "name". -->
+       <xs:complexType name="pagemenuitem_delete">
+                 <xs:attribute name="name" type="woltlab_varchar" use="required" />
+       </xs:complexType>        
+        
+         <!-- Represents a pagemenuitem which will be installed or updated. Extends the type "pagemenu_delete". -->
+       <xs:complexType name="pagemenuitem_import">
+                <xs:complexContent>
+                        <xs:extension base="pagemenuitem_delete">
+                                <xs:all>
+                                        <xs:element name="link" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="options" type="xs:string" minOccurs="0" />
+                                        <xs:element name="permissions" type="xs:string" minOccurs="0" />
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                        <xs:element name="position" minOccurs="0">
+                                               <xs:simpleType>
+                                                       <xs:restriction base="xs:string">
+                                                               <xs:enumeration value="header" />
+                                                               <xs:enumeration value="footer" />
+                                                       </xs:restriction>
+                                               </xs:simpleType>
+                                       </xs:element>
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/styleattributes.xsd b/XSD/styleattributes.xsd
new file mode 100644 (file)
index 0000000..d8ab48d
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!-- The file "styleattributes.xsd" is used for xml-files which installs, updates or deletes style attributes.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+         <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                <xs:sequence>
+                        <xs:element name="attribute" type="styleattribute" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+         <!-- Represents the delete-node. -->
+        <xs:complexType name="delete">
+                <xs:sequence>
+                        <xs:element name="attribute" type="styleattribute" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+         <!-- Represents a styleattributes which will be installed, updated or deleted. -->
+       <xs:complexType name="styleattribute">
+                <xs:all>
+                        <xs:element name="selector" minOccurs="0">
+                                <xs:simpleType>
+                                        <xs:restriction base="xs:string">
+                                                <xs:minLength value="0" />
+                                                <xs:maxLength value="200" />
+                                        </xs:restriction>
+                                </xs:simpleType>
+                        </xs:element>
+                        <xs:element name="name" minOccurs="0">
+                                <xs:simpleType>
+                                        <xs:restriction base="xs:string">
+                                                <xs:minLength value="0" />
+                                                <xs:maxLength value="50" />
+                                        </xs:restriction>
+                                </xs:simpleType>
+                        </xs:element>
+                         <xs:element name="value" minOccurs="1">
+                                <xs:simpleType>
+                                        <xs:restriction base="xs:string">
+                                                <xs:minLength value="0" />
+                                                <xs:maxLength value="50" />
+                                        </xs:restriction>
+                                </xs:simpleType>
+                        </xs:element>
+                </xs:all>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/types.xsd b/XSD/types.xsd
new file mode 100644 (file)
index 0000000..708a1c5
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+       
+        <!-- Defines a string with a minimum length of 1 and a maximum length of 255 signs. -->
+       <xs:simpleType name="woltlab_varchar">
+               <xs:restriction base="xs:string">
+                       <xs:minLength value="1"/>
+                       <xs:maxLength value="255"/>
+               </xs:restriction>
+       </xs:simpleType>
+       
+        <!-- Defines a string with a minimum length of 0 and a maximum length of 255 signs. -->
+       <xs:simpleType name="woltlab_varchar_nullable">
+               <xs:restriction base="xs:string">
+                       <xs:minLength value="0" />
+                       <xs:maxLength value="255" />
+               </xs:restriction>
+       </xs:simpleType>
+       
+       <!-- Defines a boolean type which only accepts a '0' or a '1'. -->
+       <xs:simpleType name="woltlab_boolean">
+               <xs:restriction base="xs:integer">
+                       <xs:minInclusive value="0" />
+                       <xs:maxInclusive value="1" />
+               </xs:restriction>
+       </xs:simpleType> 
+</xs:schema>
\ No newline at end of file
diff --git a/XSD/useroptions.xsd b/XSD/useroptions.xsd
new file mode 100644 (file)
index 0000000..7a4088f
--- /dev/null
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<!-- The file "option.xsd" is used for xml-files which installs, updates or deletes options.  -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.woltlab.com" targetNamespace="http://www.woltlab.com" elementFormDefault="qualified">
+        
+        <!-- include types -->
+        <xs:include schemaLocation="types.xsd" />
+         <!-- include option types -->
+        <xs:include schemaLocation="optiontypes.xsd" />
+        
+        <!-- Represents the data-node. -->
+        <xs:element name="data">
+                <xs:complexType>
+                        <xs:all>
+                                <xs:element name="import" type="import" minOccurs="0" />
+                                <xs:element name="delete" type="delete" minOccurs="0" />
+                        </xs:all>
+                </xs:complexType>
+        </xs:element>
+        
+        <!-- Represents the import-node. -->
+        <xs:complexType name="import">
+                 <xs:all>
+                        <xs:element name="categories" type="categories_import" minOccurs="0" />
+                        <xs:element name="options" type="options_import" minOccurs="0" />
+                </xs:all>
+        </xs:complexType>
+        
+        <!-- Represents the import-categories-node. -->
+        <xs:complexType name="categories_import">
+                <xs:sequence>
+                        <xs:element name="category" type="category_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        
+       
+       <!-- Represents a category which will be installed or updated. Extends the type "category_delete". -->
+       <xs:complexType name="category_import">
+                <xs:complexContent>
+                        <xs:extension base="category_delete">
+                                <xs:all>
+                                        <xs:element name="icon" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="menuicon" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="parent" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+        
+        
+        <!-- Represents the import-options-node. -->
+        <xs:complexType name="options_import">
+                <xs:sequence>
+                        <xs:element name="option" type="option_import" maxOccurs="unbounded" />
+                </xs:sequence>
+        </xs:complexType>
+        
+        
+       
+       <!-- Represents an option which will be installed or updated. Extends the type "category_delete". -->
+       <xs:complexType name="option_import">
+                <xs:complexContent>
+                        <xs:extension base="option_delete">
+                                <xs:all>
+                                        <xs:element name="categoryname" type="woltlab_varchar" minOccurs="1" />
+                                        <xs:element name="optiontype" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="defaultvalue" type="xs:string" minOccurs="0" />
+                                        <xs:element name="validationpattern" type="xs:string" minOccurs="0" />
+                                        <xs:element name="outputclass" type="woltlab_varchar_nullable" minOccurs="0" />
+                                        <xs:element name="selectoptions" type="xs:string" minOccurs="0" />
+                                        <xs:element name="enableoptions" type="xs:string" minOccurs="0" />
+                                        <xs:element name="required" type="woltlab_boolean" minOccurs="0" />
+                                        <xs:element name="editable" minOccurs="0" >
+                                               <xs:simpleType>
+                                                        <xs:restriction base="xs:integer">
+                                                                <xs:minInclusive value="0" />
+                                                                <xs:maxInclusive value="4" />
+                                                        </xs:restriction>
+                                                </xs:simpleType>
+                                        </xs:element>
+                                        <xs:element name="visible" minOccurs="0">
+                                                <xs:simpleType>
+                                                        <xs:restriction base="xs:integer">
+                                                                <xs:minInclusive value="0" />
+                                                                <xs:maxInclusive value="4" />
+                                                        </xs:restriction>
+                                                </xs:simpleType>
+                                        </xs:element>
+                                        <xs:element name="searchable" type="woltlab_boolean" minOccurs="0" />
+                                        <xs:element name="deactivated" type="woltlab_boolean" minOccurs="0" />
+                                        <xs:element name="showorder" type="xs:unsignedInt" minOccurs="0" />
+                                       <xs:element name="options" type="woltlab_varchar_nullable" minOccurs="0" />
+                                       <xs:element name="permissions" type="woltlab_varchar_nullable" minOccurs="0" />
+                                </xs:all>
+                        </xs:extension>
+                </xs:complexContent>
+       </xs:complexType>
+</xs:schema>
\ No newline at end of file