Draft of 2.0 config schema/file, removed legacy support, validate config.
[shibboleth/cpp-sp.git] / schemas / shibboleth-spconfig-2.0.xsd
1 <?xml version="1.0" encoding="US-ASCII"?>\r
2 <schema targetNamespace="urn:mace:shibboleth:sp:config:2.0"\r
3         xmlns="http://www.w3.org/2001/XMLSchema"\r
4         xmlns:conf="urn:mace:shibboleth:sp:config:2.0"\r
5         xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"\r
6         xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"\r
7         elementFormDefault="qualified"\r
8         attributeFormDefault="unqualified"\r
9         blockDefault="substitution"\r
10         version="2.0">\r
11 \r
12         <import namespace="urn:oasis:names:tc:SAML:2.0:assertion" schemaLocation="../../cpp-opensaml2/schemas/saml-schema-assertion-2.0.xsd"/>\r
13         <import namespace="urn:oasis:names:tc:SAML:2.0:metadata" schemaLocation="../../cpp-opensaml2/schemas/saml-schema-metadata-2.0.xsd"/>\r
14 \r
15         <annotation>\r
16                 <documentation>\r
17         2.0 schema for XML-based configuration of Shibboleth SP instances.\r
18         First appearing in Shibboleth 2.0 release.\r
19         </documentation>\r
20     </annotation>\r
21 \r
22         <simpleType name="string">
23                 <restriction base="string">
24                         <minLength value="1"/>\r
25                 </restriction>
26         </simpleType>\r
27 \r
28         <simpleType name="listOfStrings">\r
29                 <list itemType="conf:string"/>\r
30         </simpleType>\r
31         \r
32         <complexType name="PluggableType">\r
33                 <sequence>\r
34                         <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
35                 </sequence>\r
36                 <attribute name="type" type="conf:string" use="required"/>\r
37                 <anyAttribute namespace="##any" processContents="lax"/>\r
38         </complexType>\r
39 \r
40         <element name="SPConfig">\r
41                 <complexType>
42                         <annotation>
43                                 <documentation>Root of configuration</documentation>
44                         </annotation>
45                         <sequence>
46                                 <element ref="conf:Extensions" minOccurs="0"/>
47                                 <element ref="conf:OutOfProcess"/>
48                                 <element ref="conf:InProcess"/>
49                                 <element ref="conf:Applications"/>
50                                 <element ref="conf:Credentials" minOccurs="0"/>
51                                 <element ref="conf:SecurityPolicies"/>
52                         </sequence>
53                         <attribute name="logger" type="anyURI" use="optional"/>
54                         <attribute name="clockSkew" type="unsignedInt" use="optional"/>
55                         <anyAttribute namespace="##other" processContents="lax"/>
56                 </complexType>\r
57         </element>\r
58 \r
59         <element name="Extensions">\r
60                 <annotation>\r
61                         <documentation>Container for extension libraries and custom configuration</documentation>\r
62                 </annotation>\r
63                 <complexType>\r
64                         <sequence>\r
65                                 <element name="Library" minOccurs="0" maxOccurs="unbounded">\r
66                                         <complexType>\r
67                                                 <complexContent>\r
68                                                         <restriction base="conf:PluggableType">\r
69                                                                 <sequence>\r
70                                                                         <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
71                                                                 </sequence>\r
72                                                                 <attribute name="path" type="anyURI" use="required"/>\r
73                                                                 <attribute name="fatal" type="boolean" use="optional"/>\r
74                                                         </restriction>\r
75                                                 </complexContent>\r
76                                         </complexType>\r
77                                 </element>\r
78                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
79                         </sequence>\r
80                 </complexType>\r
81         </element>\r
82 \r
83         <element name="StorageService">\r
84                 <annotation>\r
85                         <documentation>References StorageService plugins</documentation>\r
86                 </annotation>\r
87                 <complexType>\r
88                         <complexContent>\r
89                                 <restriction base="conf:PluggableType">\r
90                                         <sequence>\r
91                                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
92                                         </sequence>\r
93                                         <attribute name="id" type="conf:string" use="required"/>\r
94                                         <attribute name="cleanupInterval" type="unsignedInt" use="optional" default="900"/>\r
95                                         <anyAttribute namespace="##any" processContents="lax"/>\r
96                                 </restriction>\r
97                         </complexContent>\r
98                 </complexType>\r
99         </element>\r
100 \r
101         <element name="SessionCache">\r
102                 <annotation>\r
103                         <documentation>References SessionCache plugins</documentation>\r
104                 </annotation>\r
105                 <complexType>\r
106                         <complexContent>\r
107                                 <restriction base="conf:PluggableType">\r
108                                         <sequence>\r
109                                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
110                                         </sequence>\r
111                                         <attribute name="cacheTimeout" type="unsignedInt" use="optional" default="28800"/>\r
112                                         <anyAttribute namespace="##any" processContents="lax"/>\r
113                                 </restriction>\r
114                         </complexContent>\r
115                 </complexType>\r
116         </element>\r
117         \r
118         <element name="ReplayCache">
119                 <annotation>\r
120                         <documentation>Ties ReplayCache to custom StorageService</documentation>\r
121                 </annotation>\r
122                 <complexType>
123                         <sequence/>\r
124                         <attribute name="StorageService" type="conf:string" use="required"/>
125                 </complexType>
126         </element>\r
127         \r
128         <element name="OutOfProcess">\r
129                 <annotation>\r
130                         <documentation>Container for shibd out-of-process configuration</documentation>\r
131                 </annotation>\r
132                 <complexType>\r
133                         <sequence>
134                                 <element ref="conf:Extensions" minOccurs="0"/>
135                                 <choice>
136                                         <element name="UnixListener">
137                                                 <complexType>
138                                                         <attribute name="address" type="conf:string" use="required"/>
139                                                 </complexType>
140                                         </element>
141                                         <element name="TCPListener">
142                                                 <complexType>
143                                                         <attribute name="address" type="conf:string" use="required"/>
144                                                         <attribute name="port" type="unsignedInt" use="required"/>
145                                                         <attribute name="acl" type="conf:listOfStrings" use="optional" default="127.0.0.1"/>
146                                                 </complexType>
147                                         </element>
148                                         <element name="Listener" type="conf:PluggableType"/>
149                                 </choice>
150                                 <element ref="conf:StorageService" minOccurs="0" maxOccurs="unbounded"/>
151                                 <element ref="conf:SessionCache" minOccurs="0"/>
152                                 <element ref="conf:ReplayCache" minOccurs="0"/>
153                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
154                         </sequence>
155                         <attribute name="logger" type="anyURI" use="optional"/>
156                         <anyAttribute namespace="##other" processContents="lax"/>\r
157                 </complexType>\r
158         </element>\r
159 \r
160         <element name="InProcess">\r
161                 <annotation>\r
162                         <documentation>\r
163                         Container for configuration of locally integrated or platform-specific\r
164                         features (e.g. web server filters)\r
165                         </documentation>\r
166                 </annotation>\r
167                 <complexType>\r
168                         <sequence>
169                                 <element ref="conf:Extensions" minOccurs="0"/>
170                                 <element name="RequestMapper" type="conf:PluggableType"/>
171                                 <element name="Implementation" minOccurs="0">
172                                         <complexType>
173                                                 <sequence>
174                                                         <element ref="conf:ISAPI" minOccurs="0"/>
175                                                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
176                                                 </sequence>
177                                         </complexType>
178                                 </element>
179                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
180                         </sequence>
181                         <attribute name="logger" type="anyURI" use="optional"/>
182                         <attribute name="localRelayState" type="boolean" use="optional" default="false"/>
183                         <anyAttribute namespace="##other" processContents="lax"/>\r
184                 </complexType>\r
185         </element>\r
186         \r
187         <element name="ISAPI">\r
188                 <complexType>\r
189                         <sequence>\r
190                                 <element name="Site" maxOccurs="unbounded">\r
191                                         <complexType>\r
192                                                 <sequence>\r
193                                                         <element name="Alias" type="string" minOccurs="0" maxOccurs="unbounded"/>\r
194                                                 </sequence>\r
195                                                 <attribute name="id" type="unsignedInt" use="required"/>\r
196                                                 <attribute name="name" type="conf:string" use="required"/>\r
197                                                 <attribute name="port" type="unsignedInt" use="optional"/>\r
198                                                 <attribute name="sslport" type="unsignedInt" use="optional"/>\r
199                                                 <attribute name="scheme" type="conf:string" use="optional"/>\r
200                                         </complexType>\r
201                                 </element>\r
202                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
203                         </sequence>\r
204                         <attribute name="normalizeRequest" type="boolean" use="optional"/>\r
205                         <anyAttribute namespace="##other" processContents="lax"/>\r
206                 </complexType>\r
207         </element>\r
208 \r
209         <element name="AccessControl" type="conf:UniOperatorType">\r
210                 <annotation>\r
211                         <documentation>\r
212                         A simple example access policy language extension that supersedes Apache .htaccess\r
213                         </documentation>\r
214                 </annotation>\r
215         </element>\r
216         <element name="OR" type="conf:MultiOperatorType"/>\r
217         <element name="AND" type="conf:MultiOperatorType"/>\r
218         <element name="NOT" type="conf:UniOperatorType"/>\r
219         <complexType name="UniOperatorType">\r
220                 <choice>\r
221                         <element ref="conf:AND"/>\r
222                         <element ref="conf:OR"/>\r
223                         <element ref="conf:NOT"/>\r
224                         <element ref="conf:Rule"/>\r
225                 </choice>\r
226         </complexType>\r
227         <complexType name="MultiOperatorType">\r
228                 <choice minOccurs="2" maxOccurs="unbounded">\r
229                         <element ref="conf:AND"/>\r
230                         <element ref="conf:OR"/>\r
231                         <element ref="conf:NOT"/>\r
232                         <element ref="conf:Rule"/>\r
233                 </choice>\r
234         </complexType>\r
235         <element name="Rule">\r
236                 <complexType>\r
237                         <simpleContent>\r
238                                 <extension base="conf:listOfStrings">\r
239                                         <attribute name="require" type="conf:string" use="required"/>\r
240                                 </extension>\r
241                         </simpleContent>\r
242                 </complexType>\r
243         </element>\r
244         \r
245         <attributeGroup name="ContentSettings">\r
246                 <attribute name="authType" type="conf:string" use="optional"/>\r
247                 <attribute name="requireSession" type="boolean" use="optional"/>\r
248                 <attribute name="requireSessionWith" type="conf:string" use="optional"/>\r
249                 <attribute name="exportAssertion" type="boolean" use="optional"/>\r
250                 <attribute name="redirectToSSL" type="unsignedInt" use="optional"/>\r
251                 <anyAttribute namespace="##other" processContents="lax"/>\r
252         </attributeGroup>\r
253         <element name="AccessControlProvider" type="conf:PluggableType"/>\r
254         <element name="htaccess" type="conf:PluggableType"/>\r
255 \r
256     <element name="RequestMap">\r
257                 <annotation>\r
258                         <documentation>\r
259                         Built-in request mapping syntax, decomposes URLs into Host/Path/Path/...\r
260                         </documentation>\r
261                 </annotation>\r
262         <complexType>\r
263             <sequence>\r
264                 <choice minOccurs="0">\r
265                         <element ref="conf:htaccess"/>\r
266                                         <element ref="conf:AccessControl"/>\r
267                         <element ref="conf:AccessControlProvider"/>\r
268                     </choice>\r
269                 <element ref="conf:Host" minOccurs="0" maxOccurs="unbounded"/>\r
270             </sequence>\r
271             <attribute name="applicationId" type="conf:string" fixed="default"/>\r
272                 <attributeGroup ref="conf:ContentSettings"/>\r
273         </complexType>\r
274     </element>\r
275 \r
276     <element name="Host">\r
277         <complexType>\r
278                 <sequence>\r
279                 <choice minOccurs="0">\r
280                         <element ref="conf:htaccess"/>\r
281                                         <element ref="conf:AccessControl"/>\r
282                         <element ref="conf:AccessControlProvider"/>\r
283                     </choice>\r
284                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>\r
285                 </sequence>\r
286                 <attribute name="scheme" use="optional">\r
287                             <simpleType>\r
288                                 <restriction base="conf:string">\r
289                                     <enumeration value="http"/>\r
290                                     <enumeration value="https"/>\r
291                                     <enumeration value="ftp"/>\r
292                                     <enumeration value="ldap"/>\r
293                                     <enumeration value="ldaps"/>\r
294                                 </restriction>\r
295                             </simpleType>\r
296                 </attribute>\r
297                 <attribute name="name" type="conf:string" use="required"/>\r
298                 <attribute name="port" type="unsignedInt" use="optional"/>\r
299                 <attribute name="applicationId" type="conf:string" use="optional"/>\r
300                 <attributeGroup ref="conf:ContentSettings"/>\r
301         </complexType>\r
302     </element>\r
303 \r
304     <element name="Path">\r
305         <complexType>\r
306                 <sequence>\r
307                 <choice minOccurs="0">\r
308                         <element ref="conf:htaccess"/>\r
309                                         <element ref="conf:AccessControl"/>\r
310                         <element ref="conf:AccessControlProvider"/>\r
311                     </choice>\r
312                         <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>\r
313                 </sequence>\r
314                 <attribute name="name" type="conf:string" use="required"/>\r
315                 <attribute name="applicationId" type="conf:string" use="optional"/>\r
316                 <attributeGroup ref="conf:ContentSettings"/>\r
317         </complexType>\r
318     </element>\r
319 \r
320         <element name="Applications">\r
321                 <annotation>\r
322                         <documentation>Container for global settings and application-specific overrides</documentation>\r
323                 </annotation>\r
324                 <complexType>\r
325                         <sequence>\r
326                                 <element ref="conf:Sessions"/>\r
327                                 <element ref="conf:Errors"/>\r
328                                 <element ref="conf:CredentialUse" minOccurs="0"/>\r
329                                 <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>
330                 <element name="MetadataProvider" type="conf:PluggableType"/>
331                                 <element name="TrustEngine" type="conf:PluggableType"/>\r
332                                 <element ref="conf:Application" minOccurs="0" maxOccurs="unbounded"/>\r
333                         </sequence>\r
334                         <attribute name="id" type="conf:string" fixed="default"/>\r
335                         <attribute name="providerId" type="anyURI" use="required"/>\r
336                         <attribute name="homeURL" type="anyURI" use="optional"/>\r
337                 <anyAttribute namespace="##other" processContents="lax"/>\r
338                 </complexType>\r
339         </element>\r
340         \r
341         <element name="Application">\r
342                 <annotation>\r
343                         <documentation>Container for application-specific overrides</documentation>\r
344                 </annotation>\r
345                 <complexType>\r
346                         <sequence>\r
347                                 <element ref="conf:Sessions" minOccurs="0"/>\r
348                                 <element ref="conf:Errors" minOccurs="0"/>\r
349                                 <element ref="conf:CredentialUse" minOccurs="0"/>\r
350                                 <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>\r
351                                 <element name="MetadataProvider" type="conf:PluggableType" minOccurs="0"/>\r
352                                 <element name="TrustEngine" type="conf:PluggableType" minOccurs="0"/>\r
353                         </sequence>\r
354                         <attribute name="id" type="conf:string" use="required"/>\r
355                         <attribute name="providerId" type="anyURI" use="optional"/>\r
356                         <attribute name="homeURL" type="anyURI" use="optional"/>\r
357                 <anyAttribute namespace="##other" processContents="lax"/>\r
358                 </complexType>\r
359         </element>\r
360 \r
361         <element name="Sessions">\r
362                 <annotation>\r
363                         <documentation>Container for specifying protocol handlers and session policy</documentation>\r
364                 </annotation>\r
365                 <complexType>\r
366                         <choice maxOccurs="unbounded">\r
367                                 <element ref="conf:SessionInitiator"/>\r
368                                 <element ref="md:AssertionConsumerService"/>\r
369                                 <element ref="md:SingleLogoutService"/>\r
370                                 <element ref="md:ManageNameIDService"/>\r
371                                 <element name="Handler">
372                                         <complexType>\r
373                                                 <complexContent>\r
374                                                         <restriction base="conf:PluggableType">\r
375                                                                 <sequence>\r
376                                                                         <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
377                                                                 </sequence>\r
378                                                                 <attribute name="Location" type="anyURI" use="required"/>\r
379                                                         </restriction>\r
380                                                 </complexContent>\r
381                                         </complexType>\r
382                                 </element>\r
383                         </choice>\r
384                         <attribute name="handlerURL" type="anyURI" use="optional"/>\r
385                         <attribute name="handlerSSL" type="boolean" use="optional" default="true"/>\r
386                         <attribute name="cookieName" type="conf:string" use="optional"/>\r
387                         <attribute name="cookieProps" type="conf:string" use="optional"/>\r
388                         <attribute name="idpHistory" type="boolean" use="optional" default="true"/>\r
389                         <attribute name="idpHistoryDays" type="unsignedInt" use="optional"/>\r
390                         <attribute name="lifetime" type="unsignedInt" use="optional"/>\r
391                         <attribute name="timeout" type="unsignedInt" use="optional"/>\r
392                         <attribute name="checkAddress" type="boolean" use="optional"/>\r
393                         <attribute name="consistentAddress" type="boolean" use="optional" default="true"/>\r
394                         <attribute name="validate" type="boolean" use="optional"/>\r
395                         <anyAttribute namespace="##other" processContents="lax"/>\r
396                 </complexType>\r
397         </element>\r
398         <element name="SessionInitiator">\r
399                 <annotation>\r
400                         <documentation>Used to specify handlers that can issue AuthnRequests</documentation>\r
401                 </annotation>\r
402                 <complexType>\r
403                         <sequence>\r
404                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
405                         </sequence>\r
406                         <attribute name="Location" type="anyURI" use="required"/>\r
407                         <attribute name="Binding" type="anyURI" use="required"/>\r
408                         <attribute name="wayfURL" type="anyURI" use="optional"/>\r
409                         <attribute name="wayfBinding" type="anyURI" use="optional"/>\r
410                         <attribute name="checkCDC" type="anyURI" use="optional"/>\r
411                         <attribute name="isDefault" type="boolean" use="optional"/>\r
412                         <attribute name="id" type="conf:string" use="optional"/>\r
413                         <anyAttribute namespace="##any" processContents="lax"/>\r
414                 </complexType>\r
415         </element>\r
416 \r
417         <element name="Errors">\r
418                 <annotation>\r
419                         <documentation>Container for error templates and associated details</documentation>\r
420                 </annotation>\r
421                 <complexType>\r
422                         <sequence>\r
423                                 <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
424                         </sequence>\r
425                         <attribute name="session" type="anyURI" use="required"/>\r
426                         <attribute name="metadata" type="anyURI" use="optional"/>\r
427                         <attribute name="rm" type="anyURI" use="optional"/>\r
428                         <attribute name="access" type="anyURI" use="optional"/>\r
429                         <attribute name="ssl" type="anyURI" use="optional"/>\r
430                         <attribute name="supportContact" type="conf:string" use="optional"/>\r
431                         <attribute name="logoLocation" type="anyURI" use="optional"/>\r
432                         <attribute name="styleSheet" type="anyURI" use="optional"/>\r
433                         <anyAttribute namespace="##any" processContents="lax"/>\r
434                 </complexType>\r
435         </element>\r
436 \r
437         <attributeGroup name="CredentialUseGroup">\r
438                 <attribute name="TLS" type="conf:string" use="optional"/>\r
439                 <attribute name="Signing" type="conf:string" use="optional"/>\r
440                 <attribute name="signRequest" type="boolean" use="optional" default="false"/>\r
441                 <attribute name="signatureAlg" type="anyURI" use="optional"/>\r
442                 <attribute name="signedAssertions" type="boolean" use="optional" default="false"/>\r
443                 <attribute name="authType" use="optional">\r
444                         <simpleType>\r
445                                 <restriction base="conf:string">\r
446                                         <enumeration value="basic"/>\r
447                                         <enumeration value="digest"/>\r
448                                         <enumeration value="ntlm"/>\r
449                                         <enumeration value="gss"/>\r
450                                 </restriction>\r
451                         </simpleType>\r
452                 </attribute>\r
453                 <attribute name="authUsername" use="optional"/>\r
454                 <attribute name="authPassword" use="optional"/>\r
455         </attributeGroup>\r
456 \r
457         <element name="CredentialUse">\r
458                 <annotation>\r
459                         <documentation>Container for specifying security methods to use with particular peers</documentation>\r
460                 </annotation>\r
461                 <complexType>\r
462                         <sequence>\r
463                                 <element name="RelyingParty" minOccurs="0" maxOccurs="unbounded">\r
464                                         <complexType>\r
465                                                 <sequence>\r
466                                                         <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
467                                                 </sequence>\r
468                                                 <attribute name="Name" type="conf:string" use="required"/>\r
469                                                 <attributeGroup ref="conf:CredentialUseGroup"/>\r
470                                                 <anyAttribute namespace="##other" processContents="lax"/>\r
471                                         </complexType>\r
472                                 </element>\r
473                                 <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
474                         </sequence>\r
475                         <attributeGroup ref="conf:CredentialUseGroup"/>\r
476                 <anyAttribute namespace="##other" processContents="lax"/>\r
477                 </complexType>\r
478         </element>\r
479         \r
480         <element name="Credentials">
481                 <annotation>\r
482                         <documentation>Container for specifying sources of credentials</documentation>\r
483                 </annotation>\r
484                 <complexType>\r
485                         <sequence>\r
486                                 <element name="CredentialResolver" minOccurs="1" maxOccurs="unbounded">
487                                         <annotation>\r
488                                                 <documentation>References CredentialResolver plugins</documentation>\r
489                                         </annotation>\r
490                                         <complexType>
491                                                 <complexContent>
492                                                         <restriction base="conf:PluggableType">
493                                                                 <sequence>
494                                                                         <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
495                                                                 </sequence>
496                                                                 <attribute name="id" type="conf:string" use="required"/>\r
497                                                                 <anyAttribute namespace="##any" processContents="lax"/>
498                                                         </restriction>
499                                                 </complexContent>
500                                         </complexType>
501                                 </element>\r
502                         </sequence>
503                 </complexType>
504         </element>\r
505         \r
506         <element name="SecurityPolicies">
507                 <annotation>\r
508                         <documentation>Container for specifying sets of policy rules to apply to incoming messages</documentation>\r
509                 </annotation>\r
510                 <complexType>\r
511                         <sequence>\r
512                                 <element name="Policy" minOccurs="1" maxOccurs="unbounded">\r
513                                         <annotation>\r
514                                                 <documentation>Specifies a set of SecurityPolicyRule plugins</documentation>\r
515                                         </annotation>\r
516                                         <complexType>\r
517                                                 <sequence>
518                                                         <element name="Rule" type="conf:PluggableType" minOccurs="1" maxOccurs="unbounded"/>
519                                                 </sequence>
520                                                 <attribute name="id" type="conf:string" use="required"/>\r
521                                         </complexType>\r
522                                 </element>\r
523                         </sequence>\r
524                         <attribute name="default" type="conf:string" use="required"/>\r
525                 </complexType>\r
526         </element>\r
527         \r
528 </schema>\r