1<?xml version="1.0" encoding="UTF-8" ?> 2<!-- 3 This is an XML Schema description of the format 4 output by MediaWiki's Special:Export system. 5 6 Version 0.2 adds optional basic file upload info support, 7 which is used by our OAI export/import submodule. 8 9 Version 0.3 adds some site configuration information such 10 as a list of defined namespaces. 11 12 Version 0.4 adds per-revision delete flags, log exports, 13 discussion threading data, a per-page redirect flag, and 14 per-namespace capitalization. 15 16 The canonical URL to the schema document is: 17 http://www.mediawiki.org/xml/export-0.5.xsd 18 19 Use the namespace: 20 http://www.mediawiki.org/xml/export-0.5/ 21--> 22<schema xmlns="http://www.w3.org/2001/XMLSchema" 23 xmlns:mw="http://www.mediawiki.org/xml/export-0.5/" 24 targetNamespace="http://www.mediawiki.org/xml/export-0.5/" 25 elementFormDefault="qualified"> 26 27 <annotation> 28 <documentation xml:lang="en"> 29 MediaWiki's page export format 30 </documentation> 31 </annotation> 32 33 <!-- Need this to reference xml:lang --> 34 <import namespace="http://www.w3.org/XML/1998/namespace" 35 schemaLocation="http://www.w3.org/2001/xml.xsd"/> 36 37 <!-- Our root element --> 38 <element name="mediawiki" type="mw:MediaWikiType"/> 39 40 <complexType name="MediaWikiType"> 41 <sequence> 42 <element name="siteinfo" type="mw:SiteInfoType" 43 minOccurs="0" maxOccurs="1"/> 44 <element name="page" type="mw:PageType" 45 minOccurs="0" maxOccurs="unbounded"/> 46 </sequence> 47 <attribute name="version" type="string" use="required"/> 48 <attribute ref="xml:lang" use="required"/> 49 </complexType> 50 51 <complexType name="SiteInfoType"> 52 <sequence> 53 <element name="sitename" type="string" minOccurs="0" /> 54 <element name="base" type="anyURI" minOccurs="0" /> 55 <element name="generator" type="string" minOccurs="0" /> 56 <element name="case" type="mw:CaseType" minOccurs="0" /> 57 <element name="namespaces" type="mw:NamespacesType" minOccurs="0" /> 58 </sequence> 59 </complexType> 60 61 <simpleType name="CaseType"> 62 <restriction base="NMTOKEN"> 63 <!-- Cannot have two titles differing only by case of first letter. --> 64 <!-- Default behavior through 1.5, $wgCapitalLinks = true --> 65 <enumeration value="first-letter" /> 66 67 <!-- Complete title is case-sensitive --> 68 <!-- Behavior when $wgCapitalLinks = false --> 69 <enumeration value="case-sensitive" /> 70 71 <!-- Cannot have non-case senstitive titles eg [[FOO]] == [[Foo]] --> 72 <!-- Not yet implemented as of MediaWiki 1.18 --> 73 <enumeration value="case-insensitive" /> 74 </restriction> 75 </simpleType> 76 77 <simpleType name="DeletedFlagType"> 78 <restriction base="NMTOKEN"> 79 <enumeration value="deleted"/> 80 </restriction> 81 </simpleType> 82 83 <complexType name="NamespacesType"> 84 <sequence> 85 <element name="namespace" type="mw:NamespaceType" 86 minOccurs="0" maxOccurs="unbounded" /> 87 </sequence> 88 </complexType> 89 90 <complexType name="NamespaceType"> 91 <simpleContent> 92 <extension base="string"> 93 <attribute name="key" type="integer" /> 94 <attribute name="case" type="mw:CaseType" /> 95 </extension> 96 </simpleContent> 97 </complexType> 98 99 <complexType name="PageType"> 100 <sequence> 101 <!-- Title in text form. (Using spaces, not underscores; with namespace ) --> 102 <element name="title" type="string"/> 103 104 <!-- optional page ID number --> 105 <element name="id" type="positiveInteger" minOccurs="0"/> 106 107 <!-- flag if the current revision is a redirect --> 108 <element name="redirect" minOccurs="0"/> 109 110 <!-- comma-separated list of string tokens, if present --> 111 <element name="restrictions" type="string" minOccurs="0"/> 112 113 <!-- Zero or more sets of revision or upload data --> 114 <choice minOccurs="0" maxOccurs="unbounded"> 115 <element name="revision" type="mw:RevisionType" /> 116 <element name="upload" type="mw:UploadType" /> 117 <element name="logitem" type="mw:LogItemType" /> 118 </choice> 119 120 <!-- Zero or One sets of discussion threading data --> 121 <element name="discussionthreadinginfo" minOccurs="0" maxOccurs="1" type="mw:DiscussionThreadingInfo" /> 122 </sequence> 123 </complexType> 124 125 <complexType name="RevisionType"> 126 <sequence> 127 <element name="id" type="positiveInteger" minOccurs="0"/> 128 <element name="timestamp" type="dateTime"/> 129 <element name="contributor" type="mw:ContributorType"/> 130 <element name="minor" minOccurs="0" /> 131 <element name="comment" type="mw:CommentType" minOccurs="0"/> 132 <element name="text" type="mw:TextType" /> 133 </sequence> 134 </complexType> 135 136 <complexType name="LogItemType"> 137 <sequence> 138 <element name="id" type="positiveInteger" minOccurs="0"/> 139 <element name="timestamp" type="dateTime"/> 140 <element name="contributor" type="mw:ContributorType"/> 141 <element name="comment" type="mw:CommentType" minOccurs="0"/> 142 <element name="type" type="string" /> 143 <element name="action" type="string" /> 144 <element name="text" type="mw:TextType" /> 145 </sequence> 146 </complexType> 147 148 <complexType name="CommentType"> 149 <simpleContent> 150 <extension base="string"> 151 <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent --> 152 <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/> 153 </extension> 154 </simpleContent> 155 </complexType> 156 157 158 <complexType name="TextType"> 159 <simpleContent> 160 <extension base="string"> 161 <attribute ref="xml:space" use="optional" default="preserve" /> 162 <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent --> 163 <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/> 164 <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" --> 165 <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing --> 166 <!-- usage ([0-9]+) and with the "ID" type. --> 167 <attribute name="id" type="NMTOKEN"/> 168 <attribute name="bytes" use="optional" type="nonNegativeInteger"/> 169 </extension> 170 </simpleContent> 171 </complexType> 172 173 <complexType name="ContributorType"> 174 <sequence> 175 <element name="username" type="string" minOccurs="0"/> 176 <element name="id" type="positiveInteger" minOccurs="0" /> 177 178 <element name="ip" type="string" minOccurs="0"/> 179 </sequence> 180 <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent --> 181 <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/> 182 </complexType> 183 184 <complexType name="UploadType"> 185 <sequence> 186 <!-- Revision-style data... --> 187 <element name="timestamp" type="dateTime"/> 188 <element name="contributor" type="mw:ContributorType"/> 189 <element name="comment" type="string" minOccurs="0"/> 190 191 <!-- Filename. (Using underscores, not spaces. No 'Image:' namespace marker.) --> 192 <element name="filename" type="string"/> 193 194 <!-- URI at which this resource can be obtained --> 195 <element name="src" type="anyURI"/> 196 197 <element name="size" type="positiveInteger" /> 198 199 <!-- TODO: add other metadata fields --> 200 </sequence> 201 </complexType> 202 203 <!-- Discussion threading data for LiquidThreads --> 204 <complexType name="DiscussionThreadingInfo"> 205 <sequence> 206 <element name="ThreadSubject" type="string" /> 207 <element name="ThreadParent" type="positiveInteger" /> 208 <element name="ThreadAncestor" type="positiveInteger" /> 209 <element name="ThreadPage" type="string" /> 210 <element name="ThreadID" type="positiveInteger" /> 211 <element name="ThreadAuthor" type="string" /> 212 <element name="ThreadEditStatus" type="string" /> 213 <element name="ThreadType" type="string" /> 214 </sequence> 215 </complexType> 216 217</schema> 218