]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/acr/schemas/schema-for-xslt20.xsd
Introduce CMS JShell
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / schemas / schema-for-xslt20.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" targetNamespace="http://www.w3.org/1999/XSL/Transform" elementFormDefault="qualified">
3
4 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
5 <xs:annotation>
6 <xs:documentation>
7
8 This is a schema for XSLT 2.0 stylesheets.
9
10 It defines all the elements that appear in the XSLT namespace; it also
11 provides hooks that allow the inclusion of user-defined literal result elements,
12 extension instructions, and top-level data elements.
13
14 The schema is derived (with kind permission) from a schema for XSLT 1.0 stylesheets
15 produced by Asir S Vedamuthu of WebMethods Inc.
16
17 This schema is available for use under the conditions of the W3C Software License
18 published at http://www.w3.org/Consortium/Legal/copyright-software-19980720
19
20 The schema is organized as follows:
21
22 PART A: definitions of complex types and model groups used as the basis
23 for element definitions
24 PART B: definitions of individual XSLT elements
25 PART C: definitions for literal result elements
26 PART D: definitions of simple types used in attribute definitions
27
28 This schema does not attempt to define all the constraints that apply to a valid
29 XSLT 2.0 stylesheet module. It is the intention that all valid stylesheet modules
30 should conform to this schema; however, the schema is non-normative and in the event
31 of any conflict, the text of the Recommendation takes precedence.
32
33 This schema does not implement the special rules that apply when a stylesheet
34 has sections that use forwards-compatible-mode. In this mode, setting version="3.0"
35 allows elements from the XSLT namespace to be used that are not defined in XSLT 2.0.
36
37 Simplified stylesheets (those with a literal result element as the outermost element)
38 will validate against this schema only if validation starts in lax mode.
39
40 This version is dated 2007-03-16
41 Authors: Michael H Kay, Saxonica Limited
42 Jeni Tennison, Jeni Tennison Consulting Ltd.
43
44 2007-03-15: added xsl:document element
45 revised xsl:sequence element
46 see http://www.w3.org/Bugs/Public/show_bug.cgi?id=4237
47
48 </xs:documentation>
49 </xs:annotation>
50 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
51
52 <!--
53 The declaration of xml:space and xml:lang may need to be commented out because
54 of problems processing the schema using various tools
55 -->
56
57 <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
58
59 <!--
60 An XSLT stylesheet may contain an in-line schema within an xsl:import-schema element,
61 so the Schema for schemas needs to be imported
62 -->
63
64 <xs:import namespace="http://www.w3.org/2001/XMLSchema" schemaLocation="XMLSchema.xsd"/>
65
66 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
67 <xs:annotation>
68 <xs:documentation>
69 PART A: definitions of complex types and model groups used as the basis
70 for element definitions
71 </xs:documentation>
72 </xs:annotation>
73 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
74
75 <xs:complexType name="generic-element-type" mixed="true">
76 <xs:attribute name="default-collation" type="xsl:uri-list"/>
77 <xs:attribute name="exclude-result-prefixes" type="xsl:prefix-list-or-all"/>
78 <xs:attribute name="extension-element-prefixes" type="xsl:prefix-list"/>
79 <xs:attribute name="use-when" type="xsl:expression"/>
80 <xs:attribute name="xpath-default-namespace" type="xs:anyURI"/>
81 <xs:anyAttribute namespace="##other" processContents="lax"/>
82 </xs:complexType>
83
84 <xs:complexType name="versioned-element-type" mixed="true">
85 <xs:complexContent>
86 <xs:extension base="xsl:generic-element-type">
87 <xs:attribute name="version" type="xs:decimal" use="optional"/>
88 </xs:extension>
89 </xs:complexContent>
90 </xs:complexType>
91
92 <xs:complexType name="element-only-versioned-element-type" mixed="false">
93 <xs:complexContent>
94 <xs:restriction base="xsl:versioned-element-type">
95 <xs:anyAttribute namespace="##other" processContents="lax"/>
96 </xs:restriction>
97 </xs:complexContent>
98 </xs:complexType>
99
100 <xs:complexType name="sequence-constructor">
101 <xs:complexContent mixed="true">
102 <xs:extension base="xsl:versioned-element-type">
103 <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
104 </xs:extension>
105 </xs:complexContent>
106 </xs:complexType>
107
108 <xs:group name="sequence-constructor-group">
109 <xs:choice>
110 <xs:element ref="xsl:variable"/>
111 <xs:element ref="xsl:instruction"/>
112 <xs:group ref="xsl:result-elements"/>
113 </xs:choice>
114 </xs:group>
115
116 <xs:element name="declaration" type="xsl:generic-element-type" abstract="true"/>
117
118 <xs:element name="instruction" type="xsl:versioned-element-type" abstract="true"/>
119
120 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
121 <xs:annotation>
122 <xs:documentation>
123 PART B: definitions of individual XSLT elements
124 Elements are listed in alphabetical order.
125 </xs:documentation>
126 </xs:annotation>
127 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
128
129 <xs:element name="analyze-string" substitutionGroup="xsl:instruction">
130 <xs:complexType>
131 <xs:complexContent>
132 <xs:extension base="xsl:element-only-versioned-element-type">
133 <xs:sequence>
134 <xs:element ref="xsl:matching-substring" minOccurs="0"/>
135 <xs:element ref="xsl:non-matching-substring" minOccurs="0"/>
136 <xs:element ref="xsl:fallback" minOccurs="0" maxOccurs="unbounded"/>
137 </xs:sequence>
138 <xs:attribute name="select" type="xsl:expression" use="required"/>
139 <xs:attribute name="regex" type="xsl:avt" use="required"/>
140 <xs:attribute name="flags" type="xsl:avt" default=""/>
141 </xs:extension>
142 </xs:complexContent>
143 </xs:complexType>
144 </xs:element>
145
146 <xs:element name="apply-imports" substitutionGroup="xsl:instruction">
147 <xs:complexType>
148 <xs:complexContent>
149 <xs:extension base="xsl:element-only-versioned-element-type">
150 <xs:sequence>
151 <xs:element ref="xsl:with-param" minOccurs="0" maxOccurs="unbounded"/>
152 </xs:sequence>
153 </xs:extension>
154 </xs:complexContent>
155 </xs:complexType>
156 </xs:element>
157
158 <xs:element name="apply-templates" substitutionGroup="xsl:instruction">
159 <xs:complexType>
160 <xs:complexContent>
161 <xs:extension base="xsl:element-only-versioned-element-type">
162 <xs:choice minOccurs="0" maxOccurs="unbounded">
163 <xs:element ref="xsl:sort"/>
164 <xs:element ref="xsl:with-param"/>
165 </xs:choice>
166 <xs:attribute name="select" type="xsl:expression" default="child::node()"/>
167 <xs:attribute name="mode" type="xsl:mode"/>
168 </xs:extension>
169 </xs:complexContent>
170 </xs:complexType>
171 </xs:element>
172
173 <xs:element name="attribute" substitutionGroup="xsl:instruction">
174 <xs:complexType>
175 <xs:complexContent mixed="true">
176 <xs:extension base="xsl:sequence-constructor">
177 <xs:attribute name="name" type="xsl:avt" use="required"/>
178 <xs:attribute name="namespace" type="xsl:avt"/>
179 <xs:attribute name="select" type="xsl:expression"/>
180 <xs:attribute name="separator" type="xsl:avt"/>
181 <xs:attribute name="type" type="xsl:QName"/>
182 <xs:attribute name="validation" type="xsl:validation-type"/>
183 </xs:extension>
184 </xs:complexContent>
185 </xs:complexType>
186 </xs:element>
187
188 <xs:element name="attribute-set" substitutionGroup="xsl:declaration">
189 <xs:complexType>
190 <xs:complexContent>
191 <xs:extension base="xsl:element-only-versioned-element-type">
192 <xs:sequence minOccurs="0" maxOccurs="unbounded">
193 <xs:element ref="xsl:attribute"/>
194 </xs:sequence>
195 <xs:attribute name="name" type="xsl:QName" use="required"/>
196 <xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
197 </xs:extension>
198 </xs:complexContent>
199 </xs:complexType>
200 </xs:element>
201
202 <xs:element name="call-template" substitutionGroup="xsl:instruction">
203 <xs:complexType>
204 <xs:complexContent>
205 <xs:extension base="xsl:element-only-versioned-element-type">
206 <xs:sequence>
207 <xs:element ref="xsl:with-param" minOccurs="0" maxOccurs="unbounded"/>
208 </xs:sequence>
209 <xs:attribute name="name" type="xsl:QName" use="required"/>
210 </xs:extension>
211 </xs:complexContent>
212 </xs:complexType>
213 </xs:element>
214
215 <xs:element name="character-map" substitutionGroup="xsl:declaration">
216 <xs:complexType>
217 <xs:complexContent>
218 <xs:extension base="xsl:element-only-versioned-element-type">
219 <xs:sequence>
220 <xs:element ref="xsl:output-character" minOccurs="0" maxOccurs="unbounded"/>
221 </xs:sequence>
222 <xs:attribute name="name" type="xsl:QName" use="required"/>
223 <xs:attribute name="use-character-maps" type="xsl:QNames" default=""/>
224 </xs:extension>
225 </xs:complexContent>
226 </xs:complexType>
227 </xs:element>
228
229 <xs:element name="choose" substitutionGroup="xsl:instruction">
230 <xs:complexType>
231 <xs:complexContent>
232 <xs:extension base="xsl:element-only-versioned-element-type">
233 <xs:sequence>
234 <xs:element ref="xsl:when" maxOccurs="unbounded"/>
235 <xs:element ref="xsl:otherwise" minOccurs="0"/>
236 </xs:sequence>
237 </xs:extension>
238 </xs:complexContent>
239 </xs:complexType>
240 </xs:element>
241
242 <xs:element name="comment" substitutionGroup="xsl:instruction">
243 <xs:complexType>
244 <xs:complexContent mixed="true">
245 <xs:extension base="xsl:sequence-constructor">
246 <xs:attribute name="select" type="xsl:expression"/>
247 </xs:extension>
248 </xs:complexContent>
249 </xs:complexType>
250 </xs:element>
251
252 <xs:element name="copy" substitutionGroup="xsl:instruction">
253 <xs:complexType>
254 <xs:complexContent mixed="true">
255 <xs:extension base="xsl:sequence-constructor">
256 <xs:attribute name="copy-namespaces" type="xsl:yes-or-no" default="yes"/>
257 <xs:attribute name="inherit-namespaces" type="xsl:yes-or-no" default="yes"/>
258 <xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
259 <xs:attribute name="type" type="xsl:QName"/>
260 <xs:attribute name="validation" type="xsl:validation-type"/>
261 </xs:extension>
262 </xs:complexContent>
263 </xs:complexType>
264 </xs:element>
265
266 <xs:element name="copy-of" substitutionGroup="xsl:instruction">
267 <xs:complexType>
268 <xs:complexContent mixed="true">
269 <xs:extension base="xsl:versioned-element-type">
270 <xs:attribute name="select" type="xsl:expression" use="required"/>
271 <xs:attribute name="copy-namespaces" type="xsl:yes-or-no" default="yes"/>
272 <xs:attribute name="type" type="xsl:QName"/>
273 <xs:attribute name="validation" type="xsl:validation-type"/>
274 </xs:extension>
275 </xs:complexContent>
276 </xs:complexType>
277 </xs:element>
278
279 <xs:element name="document" substitutionGroup="xsl:instruction">
280 <xs:complexType>
281 <xs:complexContent mixed="true">
282 <xs:extension base="xsl:sequence-constructor">
283 <xs:attribute name="type" type="xsl:QName"/>
284 <xs:attribute name="validation" type="xsl:validation-type"/>
285 </xs:extension>
286 </xs:complexContent>
287 </xs:complexType>
288 </xs:element>
289
290 <xs:element name="decimal-format" substitutionGroup="xsl:declaration">
291 <xs:complexType>
292 <xs:complexContent>
293 <xs:extension base="xsl:element-only-versioned-element-type">
294 <xs:attribute name="name" type="xsl:QName"/>
295 <xs:attribute name="decimal-separator" type="xsl:char" default="."/>
296 <xs:attribute name="grouping-separator" type="xsl:char" default=","/>
297 <xs:attribute name="infinity" type="xs:string" default="Infinity"/>
298 <xs:attribute name="minus-sign" type="xsl:char" default="-"/>
299 <xs:attribute name="NaN" type="xs:string" default="NaN"/>
300 <xs:attribute name="percent" type="xsl:char" default="%"/>
301 <xs:attribute name="per-mille" type="xsl:char" default="‰"/>
302 <xs:attribute name="zero-digit" type="xsl:char" default="0"/>
303 <xs:attribute name="digit" type="xsl:char" default="#"/>
304 <xs:attribute name="pattern-separator" type="xsl:char" default=";"/>
305 </xs:extension>
306 </xs:complexContent>
307 </xs:complexType>
308 </xs:element>
309
310 <xs:element name="element" substitutionGroup="xsl:instruction">
311 <xs:complexType mixed="true">
312 <xs:complexContent>
313 <xs:extension base="xsl:sequence-constructor">
314 <xs:attribute name="name" type="xsl:avt" use="required"/>
315 <xs:attribute name="namespace" type="xsl:avt"/>
316 <xs:attribute name="inherit-namespaces" type="xsl:yes-or-no" default="yes"/>
317 <xs:attribute name="use-attribute-sets" type="xsl:QNames" default=""/>
318 <xs:attribute name="type" type="xsl:QName"/>
319 <xs:attribute name="validation" type="xsl:validation-type"/>
320 </xs:extension>
321 </xs:complexContent>
322 </xs:complexType>
323 </xs:element>
324
325 <xs:element name="fallback" substitutionGroup="xsl:instruction" type="xsl:sequence-constructor"/>
326
327 <xs:element name="for-each" substitutionGroup="xsl:instruction">
328 <xs:complexType>
329 <xs:complexContent mixed="true">
330 <xs:extension base="xsl:versioned-element-type">
331 <xs:sequence>
332 <xs:element ref="xsl:sort" minOccurs="0" maxOccurs="unbounded"/>
333 <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
334 </xs:sequence>
335 <xs:attribute name="select" type="xsl:expression" use="required"/>
336 </xs:extension>
337 </xs:complexContent>
338 </xs:complexType>
339 </xs:element>
340
341 <xs:element name="for-each-group" substitutionGroup="xsl:instruction">
342 <xs:complexType>
343 <xs:complexContent mixed="true">
344 <xs:extension base="xsl:versioned-element-type">
345 <xs:sequence>
346 <xs:element ref="xsl:sort" minOccurs="0" maxOccurs="unbounded"/>
347 <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
348 </xs:sequence>
349 <xs:attribute name="select" type="xsl:expression" use="required"/>
350 <xs:attribute name="group-by" type="xsl:expression"/>
351 <xs:attribute name="group-adjacent" type="xsl:expression"/>
352 <xs:attribute name="group-starting-with" type="xsl:pattern"/>
353 <xs:attribute name="group-ending-with" type="xsl:pattern"/>
354 <xs:attribute name="collation" type="xs:anyURI"/>
355 </xs:extension>
356 </xs:complexContent>
357 </xs:complexType>
358 </xs:element>
359
360 <xs:element name="function" substitutionGroup="xsl:declaration">
361 <xs:complexType>
362 <xs:complexContent mixed="true">
363 <xs:extension base="xsl:versioned-element-type">
364 <xs:sequence>
365 <xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
366 <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
367 </xs:sequence>
368 <xs:attribute name="name" type="xsl:QName" use="required"/>
369 <xs:attribute name="override" type="xsl:yes-or-no" default="yes"/>
370 <xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
371 </xs:extension>
372 </xs:complexContent>
373 </xs:complexType>
374 </xs:element>
375
376 <xs:element name="if" substitutionGroup="xsl:instruction">
377 <xs:complexType>
378 <xs:complexContent mixed="true">
379 <xs:extension base="xsl:sequence-constructor">
380 <xs:attribute name="test" type="xsl:expression" use="required"/>
381 </xs:extension>
382 </xs:complexContent>
383 </xs:complexType>
384 </xs:element>
385
386 <xs:element name="import">
387 <xs:complexType>
388 <xs:complexContent>
389 <xs:extension base="xsl:element-only-versioned-element-type">
390 <xs:attribute name="href" type="xs:anyURI" use="required"/>
391 </xs:extension>
392 </xs:complexContent>
393 </xs:complexType>
394 </xs:element>
395
396 <xs:element name="import-schema" substitutionGroup="xsl:declaration">
397 <xs:complexType>
398 <xs:complexContent>
399 <xs:extension base="xsl:element-only-versioned-element-type">
400 <xs:sequence>
401 <xs:element ref="xs:schema" minOccurs="0" maxOccurs="1"/>
402 </xs:sequence>
403 <xs:attribute name="namespace" type="xs:anyURI"/>
404 <xs:attribute name="schema-location" type="xs:anyURI"/>
405 </xs:extension>
406 </xs:complexContent>
407 </xs:complexType>
408 </xs:element>
409
410 <xs:element name="include" substitutionGroup="xsl:declaration">
411 <xs:complexType>
412 <xs:complexContent>
413 <xs:extension base="xsl:element-only-versioned-element-type">
414 <xs:attribute name="href" type="xs:anyURI" use="required"/>
415 </xs:extension>
416 </xs:complexContent>
417 </xs:complexType>
418 </xs:element>
419
420 <xs:element name="key" substitutionGroup="xsl:declaration">
421 <xs:complexType>
422 <xs:complexContent mixed="true">
423 <xs:extension base="xsl:sequence-constructor">
424 <xs:attribute name="name" type="xsl:QName" use="required"/>
425 <xs:attribute name="match" type="xsl:pattern" use="required"/>
426 <xs:attribute name="use" type="xsl:expression"/>
427 <xs:attribute name="collation" type="xs:anyURI"/>
428 </xs:extension>
429 </xs:complexContent>
430 </xs:complexType>
431 </xs:element>
432
433 <xs:element name="matching-substring" type="xsl:sequence-constructor"/>
434
435 <xs:element name="message" substitutionGroup="xsl:instruction">
436 <xs:complexType>
437 <xs:complexContent mixed="true">
438 <xs:extension base="xsl:sequence-constructor">
439 <xs:attribute name="select" type="xsl:expression"/>
440 <xs:attribute name="terminate" type="xsl:avt" default="no"/>
441 </xs:extension>
442 </xs:complexContent>
443 </xs:complexType>
444 </xs:element>
445
446 <xs:element name="namespace" substitutionGroup="xsl:instruction">
447 <xs:complexType>
448 <xs:complexContent mixed="true">
449 <xs:extension base="xsl:sequence-constructor">
450 <xs:attribute name="name" type="xsl:avt" use="required"/>
451 <xs:attribute name="select" type="xsl:expression"/>
452 </xs:extension>
453 </xs:complexContent>
454 </xs:complexType>
455 </xs:element>
456
457 <xs:element name="namespace-alias" substitutionGroup="xsl:declaration">
458 <xs:complexType>
459 <xs:complexContent>
460 <xs:extension base="xsl:element-only-versioned-element-type">
461 <xs:attribute name="stylesheet-prefix" type="xsl:prefix-or-default" use="required"/>
462 <xs:attribute name="result-prefix" type="xsl:prefix-or-default" use="required"/>
463 </xs:extension>
464 </xs:complexContent>
465 </xs:complexType>
466 </xs:element>
467
468 <xs:element name="next-match" substitutionGroup="xsl:instruction">
469 <xs:complexType>
470 <xs:complexContent>
471 <xs:extension base="xsl:element-only-versioned-element-type">
472 <xs:choice minOccurs="0" maxOccurs="unbounded">
473 <xs:element ref="xsl:with-param"/>
474 <xs:element ref="xsl:fallback"/>
475 </xs:choice>
476 </xs:extension>
477 </xs:complexContent>
478 </xs:complexType>
479 </xs:element>
480
481 <xs:element name="non-matching-substring" type="xsl:sequence-constructor"/>
482
483 <xs:element name="number" substitutionGroup="xsl:instruction">
484 <xs:complexType>
485 <xs:complexContent mixed="true">
486 <xs:extension base="xsl:versioned-element-type">
487 <xs:attribute name="value" type="xsl:expression"/>
488 <xs:attribute name="select" type="xsl:expression"/>
489 <xs:attribute name="level" type="xsl:level" default="single"/>
490 <xs:attribute name="count" type="xsl:pattern"/>
491 <xs:attribute name="from" type="xsl:pattern"/>
492 <xs:attribute name="format" type="xsl:avt" default="1"/>
493 <xs:attribute name="lang" type="xsl:avt"/>
494 <xs:attribute name="letter-value" type="xsl:avt"/>
495 <xs:attribute name="ordinal" type="xsl:avt"/>
496 <xs:attribute name="grouping-separator" type="xsl:avt"/>
497 <xs:attribute name="grouping-size" type="xsl:avt"/>
498 </xs:extension>
499 </xs:complexContent>
500 </xs:complexType>
501 </xs:element>
502
503 <xs:element name="otherwise" type="xsl:sequence-constructor"/>
504
505 <xs:element name="output" substitutionGroup="xsl:declaration">
506 <xs:complexType>
507 <xs:complexContent mixed="true">
508 <xs:extension base="xsl:generic-element-type">
509 <xs:attribute name="name" type="xsl:QName"/>
510 <xs:attribute name="method" type="xsl:method"/>
511 <xs:attribute name="byte-order-mark" type="xsl:yes-or-no"/>
512 <xs:attribute name="cdata-section-elements" type="xsl:QNames"/>
513 <xs:attribute name="doctype-public" type="xs:string"/>
514 <xs:attribute name="doctype-system" type="xs:string"/>
515 <xs:attribute name="encoding" type="xs:string"/>
516 <xs:attribute name="escape-uri-attributes" type="xsl:yes-or-no"/>
517 <xs:attribute name="include-content-type" type="xsl:yes-or-no"/>
518 <xs:attribute name="indent" type="xsl:yes-or-no"/>
519 <xs:attribute name="media-type" type="xs:string"/>
520 <xs:attribute name="normalization-form" type="xs:NMTOKEN"/>
521 <xs:attribute name="omit-xml-declaration" type="xsl:yes-or-no"/>
522 <xs:attribute name="standalone" type="xsl:yes-or-no-or-omit"/>
523 <xs:attribute name="undeclare-prefixes" type="xsl:yes-or-no"/>
524 <xs:attribute name="use-character-maps" type="xsl:QNames"/>
525 <xs:attribute name="version" type="xs:NMTOKEN"/>
526 </xs:extension>
527 </xs:complexContent>
528 </xs:complexType>
529 </xs:element>
530
531 <xs:element name="output-character">
532 <xs:complexType>
533 <xs:complexContent>
534 <xs:extension base="xsl:element-only-versioned-element-type">
535 <xs:attribute name="character" type="xsl:char" use="required"/>
536 <xs:attribute name="string" type="xs:string" use="required"/>
537 </xs:extension>
538 </xs:complexContent>
539 </xs:complexType>
540 </xs:element>
541
542 <xs:element name="param">
543 <xs:complexType>
544 <xs:complexContent mixed="true">
545 <xs:extension base="xsl:sequence-constructor">
546 <xs:attribute name="name" type="xsl:QName" use="required"/>
547 <xs:attribute name="select" type="xsl:expression"/>
548 <xs:attribute name="as" type="xsl:sequence-type"/>
549 <xs:attribute name="required" type="xsl:yes-or-no"/>
550 <xs:attribute name="tunnel" type="xsl:yes-or-no"/>
551 </xs:extension>
552 </xs:complexContent>
553 </xs:complexType>
554 </xs:element>
555
556 <xs:element name="perform-sort" substitutionGroup="xsl:instruction">
557 <xs:complexType>
558 <xs:complexContent mixed="true">
559 <xs:extension base="xsl:versioned-element-type">
560 <xs:sequence>
561 <xs:element ref="xsl:sort" minOccurs="1" maxOccurs="unbounded"/>
562 <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
563 </xs:sequence>
564 <xs:attribute name="select" type="xsl:expression"/>
565 </xs:extension>
566 </xs:complexContent>
567 </xs:complexType>
568 </xs:element>
569
570 <xs:element name="preserve-space" substitutionGroup="xsl:declaration">
571 <xs:complexType>
572 <xs:complexContent>
573 <xs:extension base="xsl:element-only-versioned-element-type">
574 <xs:attribute name="elements" type="xsl:nametests" use="required"/>
575 </xs:extension>
576 </xs:complexContent>
577 </xs:complexType>
578 </xs:element>
579
580 <xs:element name="processing-instruction" substitutionGroup="xsl:instruction">
581 <xs:complexType>
582 <xs:complexContent mixed="true">
583 <xs:extension base="xsl:sequence-constructor">
584 <xs:attribute name="name" type="xsl:avt" use="required"/>
585 <xs:attribute name="select" type="xsl:expression"/>
586 </xs:extension>
587 </xs:complexContent>
588 </xs:complexType>
589 </xs:element>
590
591 <xs:element name="result-document" substitutionGroup="xsl:instruction">
592 <xs:complexType>
593 <xs:complexContent mixed="true">
594 <xs:extension base="xsl:sequence-constructor">
595 <xs:attribute name="format" type="xsl:avt"/>
596 <xs:attribute name="href" type="xsl:avt"/>
597 <xs:attribute name="type" type="xsl:QName"/>
598 <xs:attribute name="validation" type="xsl:validation-type"/>
599 <xs:attribute name="method" type="xsl:avt"/>
600 <xs:attribute name="byte-order-mark" type="xsl:avt"/>
601 <xs:attribute name="cdata-section-elements" type="xsl:avt"/>
602 <xs:attribute name="doctype-public" type="xsl:avt"/>
603 <xs:attribute name="doctype-system" type="xsl:avt"/>
604 <xs:attribute name="encoding" type="xsl:avt"/>
605 <xs:attribute name="escape-uri-attributes" type="xsl:avt"/>
606 <xs:attribute name="include-content-type" type="xsl:avt"/>
607 <xs:attribute name="indent" type="xsl:avt"/>
608 <xs:attribute name="media-type" type="xsl:avt"/>
609 <xs:attribute name="normalization-form" type="xsl:avt"/>
610 <xs:attribute name="omit-xml-declaration" type="xsl:avt"/>
611 <xs:attribute name="standalone" type="xsl:avt"/>
612 <xs:attribute name="undeclare-prefixes" type="xsl:avt"/>
613 <xs:attribute name="use-character-maps" type="xsl:QNames"/>
614 <xs:attribute name="output-version" type="xsl:avt"/>
615 </xs:extension>
616 </xs:complexContent>
617 </xs:complexType>
618 </xs:element>
619
620 <xs:element name="sequence" substitutionGroup="xsl:instruction">
621 <xs:complexType>
622 <xs:complexContent mixed="true">
623 <xs:extension base="xsl:element-only-versioned-element-type">
624 <xs:sequence minOccurs="0" maxOccurs="unbounded">
625 <xs:element ref="xsl:fallback"/>
626 </xs:sequence>
627 <xs:attribute name="select" type="xsl:expression"/>
628 </xs:extension>
629 </xs:complexContent>
630 </xs:complexType>
631 </xs:element>
632
633 <xs:element name="sort">
634 <xs:complexType>
635 <xs:complexContent mixed="true">
636 <xs:extension base="xsl:sequence-constructor">
637 <xs:attribute name="select" type="xsl:expression"/>
638 <xs:attribute name="lang" type="xsl:avt"/>
639 <xs:attribute name="data-type" type="xsl:avt" default="text"/>
640 <xs:attribute name="order" type="xsl:avt" default="ascending"/>
641 <xs:attribute name="case-order" type="xsl:avt"/>
642 <xs:attribute name="collation" type="xsl:avt"/>
643 <xs:attribute name="stable" type="xsl:yes-or-no"/>
644 </xs:extension>
645 </xs:complexContent>
646 </xs:complexType>
647 </xs:element>
648
649 <xs:element name="strip-space" substitutionGroup="xsl:declaration">
650 <xs:complexType>
651 <xs:complexContent>
652 <xs:extension base="xsl:element-only-versioned-element-type">
653 <xs:attribute name="elements" type="xsl:nametests" use="required"/>
654 </xs:extension>
655 </xs:complexContent>
656 </xs:complexType>
657 </xs:element>
658
659 <xs:element name="stylesheet" substitutionGroup="xsl:transform"/>
660
661 <xs:element name="template" substitutionGroup="xsl:declaration">
662 <xs:complexType>
663 <xs:complexContent mixed="true">
664 <xs:extension base="xsl:versioned-element-type">
665 <xs:sequence>
666 <xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
667 <xs:group ref="xsl:sequence-constructor-group" minOccurs="0" maxOccurs="unbounded"/>
668 </xs:sequence>
669 <xs:attribute name="match" type="xsl:pattern"/>
670 <xs:attribute name="priority" type="xs:decimal"/>
671 <xs:attribute name="mode" type="xsl:modes"/>
672 <xs:attribute name="name" type="xsl:QName"/>
673 <xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
674 </xs:extension>
675 </xs:complexContent>
676 </xs:complexType>
677 </xs:element>
678
679 <xs:complexType name="text-element-base-type">
680 <xs:simpleContent>
681 <xs:restriction base="xsl:versioned-element-type">
682 <xs:simpleType>
683 <xs:restriction base="xs:string"/>
684 </xs:simpleType>
685 <xs:anyAttribute namespace="##other" processContents="lax"/>
686 </xs:restriction>
687 </xs:simpleContent>
688 </xs:complexType>
689
690 <xs:element name="text" substitutionGroup="xsl:instruction">
691 <xs:complexType>
692 <xs:simpleContent>
693 <xs:extension base="xsl:text-element-base-type">
694 <xs:attribute name="disable-output-escaping" type="xsl:yes-or-no" default="no"/>
695 </xs:extension>
696 </xs:simpleContent>
697 </xs:complexType>
698 </xs:element>
699
700 <xs:complexType name="transform-element-base-type">
701 <xs:complexContent>
702 <xs:restriction base="xsl:element-only-versioned-element-type">
703 <xs:attribute name="version" type="xs:decimal" use="required"/>
704 <xs:anyAttribute namespace="##other" processContents="lax"/>
705 </xs:restriction>
706 </xs:complexContent>
707 </xs:complexType>
708
709 <xs:element name="transform">
710 <xs:complexType>
711 <xs:complexContent>
712 <xs:extension base="xsl:transform-element-base-type">
713 <xs:sequence>
714 <xs:element ref="xsl:import" minOccurs="0" maxOccurs="unbounded"/>
715 <xs:choice minOccurs="0" maxOccurs="unbounded">
716 <xs:element ref="xsl:declaration"/>
717 <xs:element ref="xsl:variable"/>
718 <xs:element ref="xsl:param"/>
719 <xs:any namespace="##other" processContents="lax"/> <!-- weaker than XSLT 1.0 -->
720 </xs:choice>
721 </xs:sequence>
722 <xs:attribute name="id" type="xs:ID"/>
723 <xs:attribute name="default-validation" type="xsl:validation-strip-or-preserve" default="strip"/>
724 <xs:attribute name="input-type-annotations" type="xsl:input-type-annotations-type" default="unspecified"/>
725 </xs:extension>
726 </xs:complexContent>
727 </xs:complexType>
728 </xs:element>
729
730 <xs:element name="value-of" substitutionGroup="xsl:instruction">
731 <xs:complexType>
732 <xs:complexContent mixed="true">
733 <xs:extension base="xsl:sequence-constructor">
734 <xs:attribute name="select" type="xsl:expression"/>
735 <xs:attribute name="separator" type="xsl:avt"/>
736 <xs:attribute name="disable-output-escaping" type="xsl:yes-or-no" default="no"/>
737 </xs:extension>
738 </xs:complexContent>
739 </xs:complexType>
740 </xs:element>
741
742 <xs:element name="variable">
743 <xs:complexType>
744 <xs:complexContent mixed="true">
745 <xs:extension base="xsl:sequence-constructor">
746 <xs:attribute name="name" type="xsl:QName" use="required"/>
747 <xs:attribute name="select" type="xsl:expression" use="optional"/>
748 <xs:attribute name="as" type="xsl:sequence-type" use="optional"/>
749 </xs:extension>
750 </xs:complexContent>
751 </xs:complexType>
752 </xs:element>
753
754 <xs:element name="when">
755 <xs:complexType>
756 <xs:complexContent mixed="true">
757 <xs:extension base="xsl:sequence-constructor">
758 <xs:attribute name="test" type="xsl:expression" use="required"/>
759 </xs:extension>
760 </xs:complexContent>
761 </xs:complexType>
762 </xs:element>
763
764 <xs:element name="with-param">
765 <xs:complexType>
766 <xs:complexContent mixed="true">
767 <xs:extension base="xsl:sequence-constructor">
768 <xs:attribute name="name" type="xsl:QName" use="required"/>
769 <xs:attribute name="select" type="xsl:expression"/>
770 <xs:attribute name="as" type="xsl:sequence-type"/>
771 <xs:attribute name="tunnel" type="xsl:yes-or-no"/>
772 </xs:extension>
773 </xs:complexContent>
774 </xs:complexType>
775 </xs:element>
776
777 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
778 <xs:annotation>
779 <xs:documentation>
780 PART C: definition of literal result elements
781
782 There are three ways to define the literal result elements
783 permissible in a stylesheet.
784
785 (a) do nothing. This allows any element to be used as a literal
786 result element, provided it is not in the XSLT namespace
787
788 (b) declare all permitted literal result elements as members
789 of the xsl:literal-result-element substitution group
790
791 (c) redefine the model group xsl:result-elements to accommodate
792 all permitted literal result elements.
793
794 Literal result elements are allowed to take certain attributes
795 in the XSLT namespace. These are defined in the attribute group
796 literal-result-element-attributes, which can be included in the
797 definition of any literal result element.
798
799 </xs:documentation>
800 </xs:annotation>
801 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
802
803 <xs:element name="literal-result-element" abstract="true" type="xs:anyType"/>
804
805 <xs:attributeGroup name="literal-result-element-attributes">
806 <xs:attribute name="default-collation" form="qualified" type="xsl:uri-list"/>
807 <xs:attribute name="extension-element-prefixes" form="qualified" type="xsl:prefixes"/>
808 <xs:attribute name="exclude-result-prefixes" form="qualified" type="xsl:prefixes"/>
809 <xs:attribute name="xpath-default-namespace" form="qualified" type="xs:anyURI"/>
810 <xs:attribute name="inherit-namespaces" form="qualified" type="xsl:yes-or-no" default="yes"/>
811 <xs:attribute name="use-attribute-sets" form="qualified" type="xsl:QNames" default=""/>
812 <xs:attribute name="use-when" form="qualified" type="xsl:expression"/>
813 <xs:attribute name="version" form="qualified" type="xs:decimal"/>
814 <xs:attribute name="type" form="qualified" type="xsl:QName"/>
815 <xs:attribute name="validation" form="qualified" type="xsl:validation-type"/>
816 </xs:attributeGroup>
817
818 <xs:group name="result-elements">
819 <xs:choice>
820 <xs:element ref="xsl:literal-result-element"/>
821 <xs:any namespace="##other" processContents="lax"/>
822 <xs:any namespace="##local" processContents="lax"/>
823 </xs:choice>
824 </xs:group>
825
826
827 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
828 <xs:annotation>
829 <xs:documentation>
830 PART D: definitions of simple types used in stylesheet attributes
831 </xs:documentation>
832 </xs:annotation>
833 <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
834
835 <xs:simpleType name="avt">
836 <xs:annotation>
837 <xs:documentation>
838 This type is used for all attributes that allow an attribute value template.
839 The general rules for the syntax of attribute value templates, and the specific
840 rules for each such attribute, are described in the XSLT 2.0 Recommendation.
841 </xs:documentation>
842 </xs:annotation>
843 <xs:restriction base="xs:string"/>
844 </xs:simpleType>
845
846 <xs:simpleType name="char">
847 <xs:annotation>
848 <xs:documentation>
849 A string containing exactly one character.
850 </xs:documentation>
851 </xs:annotation>
852 <xs:restriction base="xs:string">
853 <xs:length value="1"/>
854 </xs:restriction>
855 </xs:simpleType>
856
857 <xs:simpleType name="expression">
858 <xs:annotation>
859 <xs:documentation>
860 An XPath 2.0 expression.
861 </xs:documentation>
862 </xs:annotation>
863 <xs:restriction base="xs:token">
864 <xs:pattern value=".+"/>
865 </xs:restriction>
866 </xs:simpleType>
867
868 <xs:simpleType name="input-type-annotations-type">
869 <xs:annotation>
870 <xs:documentation>
871 Describes how type annotations in source documents are handled.
872 </xs:documentation>
873 </xs:annotation>
874 <xs:restriction base="xs:token">
875 <xs:enumeration value="preserve"/>
876 <xs:enumeration value="strip"/>
877 <xs:enumeration value="unspecified"/>
878 </xs:restriction>
879 </xs:simpleType>
880
881 <xs:simpleType name="level">
882 <xs:annotation>
883 <xs:documentation>
884 The level attribute of xsl:number:
885 one of single, multiple, or any.
886 </xs:documentation>
887 </xs:annotation>
888 <xs:restriction base="xs:NCName">
889 <xs:enumeration value="single"/>
890 <xs:enumeration value="multiple"/>
891 <xs:enumeration value="any"/>
892 </xs:restriction>
893 </xs:simpleType>
894
895 <xs:simpleType name="mode">
896 <xs:annotation>
897 <xs:documentation>
898 The mode attribute of xsl:apply-templates:
899 either a QName, or #current, or #default.
900 </xs:documentation>
901 </xs:annotation>
902 <xs:union memberTypes="xsl:QName">
903 <xs:simpleType>
904 <xs:restriction base="xs:token">
905 <xs:enumeration value="#default"/>
906 <xs:enumeration value="#current"/>
907 </xs:restriction>
908 </xs:simpleType>
909 </xs:union>
910 </xs:simpleType>
911
912 <xs:simpleType name="modes">
913 <xs:annotation>
914 <xs:documentation>
915 The mode attribute of xsl:template:
916 either a list, each member being either a QName or #default;
917 or the value #all
918 </xs:documentation>
919 </xs:annotation>
920 <xs:union>
921 <xs:simpleType>
922 <xs:list>
923 <xs:simpleType>
924 <xs:union memberTypes="xsl:QName">
925 <xs:simpleType>
926 <xs:restriction base="xs:token">
927 <xs:enumeration value="#default"/>
928 </xs:restriction>
929 </xs:simpleType>
930 </xs:union>
931 </xs:simpleType>
932 </xs:list>
933 </xs:simpleType>
934 <xs:simpleType>
935 <xs:restriction base="xs:token">
936 <xs:enumeration value="#all"/>
937 </xs:restriction>
938 </xs:simpleType>
939 </xs:union>
940 </xs:simpleType>
941
942 <xs:simpleType name="nametests">
943 <xs:annotation>
944 <xs:documentation>
945 A list of NameTests, as defined in the XPath 2.0 Recommendation.
946 Each NameTest is either a QName, or "*", or "prefix:*", or "*:localname"
947 </xs:documentation>
948 </xs:annotation>
949 <xs:list>
950 <xs:simpleType>
951 <xs:union memberTypes="xsl:QName">
952 <xs:simpleType>
953 <xs:restriction base="xs:token">
954 <xs:enumeration value="*"/>
955 </xs:restriction>
956 </xs:simpleType>
957 <xs:simpleType>
958 <xs:restriction base="xs:token">
959 <xs:pattern value="\i\c*:\*"/>
960 <xs:pattern value="\*:\i\c*"/>
961 </xs:restriction>
962 </xs:simpleType>
963 </xs:union>
964 </xs:simpleType>
965 </xs:list>
966 </xs:simpleType>
967
968 <xs:simpleType name="prefixes">
969 <xs:list itemType="xs:NCName"/>
970 </xs:simpleType>
971
972 <xs:simpleType name="prefix-list-or-all">
973 <xs:union memberTypes="xsl:prefix-list">
974 <xs:simpleType>
975 <xs:restriction base="xs:token">
976 <xs:enumeration value="#all"/>
977 </xs:restriction>
978 </xs:simpleType>
979 </xs:union>
980 </xs:simpleType>
981
982 <xs:simpleType name="prefix-list">
983 <xs:list itemType="xsl:prefix-or-default"/>
984 </xs:simpleType>
985
986 <xs:simpleType name="method">
987 <xs:annotation>
988 <xs:documentation>
989 The method attribute of xsl:output:
990 Either one of the recognized names "xml", "xhtml", "html", "text",
991 or a QName that must include a prefix.
992 </xs:documentation>
993 </xs:annotation>
994 <xs:union>
995 <xs:simpleType>
996 <xs:restriction base="xs:NCName">
997 <xs:enumeration value="xml"/>
998 <xs:enumeration value="xhtml"/>
999 <xs:enumeration value="html"/>
1000 <xs:enumeration value="text"/>
1001 </xs:restriction>
1002 </xs:simpleType>
1003 <xs:simpleType>
1004 <xs:restriction base="xsl:QName">
1005 <xs:pattern value="\c*:\c*"/>
1006 </xs:restriction>
1007 </xs:simpleType>
1008 </xs:union>
1009 </xs:simpleType>
1010
1011 <xs:simpleType name="pattern">
1012 <xs:annotation>
1013 <xs:documentation>
1014 A match pattern as defined in the XSLT 2.0 Recommendation.
1015 The syntax for patterns is a restricted form of the syntax for
1016 XPath 2.0 expressions.
1017 </xs:documentation>
1018 </xs:annotation>
1019 <xs:restriction base="xsl:expression"/>
1020 </xs:simpleType>
1021
1022 <xs:simpleType name="prefix-or-default">
1023 <xs:annotation>
1024 <xs:documentation>
1025 Either a namespace prefix, or #default.
1026 Used in the xsl:namespace-alias element.
1027 </xs:documentation>
1028 </xs:annotation>
1029 <xs:union memberTypes="xs:NCName">
1030 <xs:simpleType>
1031 <xs:restriction base="xs:token">
1032 <xs:enumeration value="#default"/>
1033 </xs:restriction>
1034 </xs:simpleType>
1035 </xs:union>
1036 </xs:simpleType>
1037
1038 <xs:simpleType name="QNames">
1039 <xs:annotation>
1040 <xs:documentation>
1041 A list of QNames.
1042 Used in the [xsl:]use-attribute-sets attribute of various elements,
1043 and in the cdata-section-elements attribute of xsl:output
1044 </xs:documentation>
1045 </xs:annotation>
1046 <xs:list itemType="xsl:QName"/>
1047 </xs:simpleType>
1048
1049 <xs:simpleType name="QName">
1050 <xs:annotation>
1051 <xs:documentation>
1052 A QName.
1053 This schema does not use the built-in type xs:QName, but rather defines its own
1054 QName type. Although xs:QName would define the correct validation on these attributes,
1055 a schema processor would expand unprefixed QNames incorrectly when constructing the PSVI,
1056 because (as defined in XML Schema errata) an unprefixed xs:QName is assumed to be in
1057 the default namespace, which is not the correct assumption for XSLT.
1058 The data type is defined as a restriction of the built-in type Name, restricted
1059 so that it can only contain one colon which must not be the first or last character.
1060 </xs:documentation>
1061 </xs:annotation>
1062 <xs:restriction base="xs:Name">
1063 <xs:pattern value="([^:]+:)?[^:]+"/>
1064 </xs:restriction>
1065 </xs:simpleType>
1066
1067 <xs:simpleType name="sequence-type">
1068 <xs:annotation>
1069 <xs:documentation>
1070 The description of a data type, conforming to the
1071 SequenceType production defined in the XPath 2.0 Recommendation
1072 </xs:documentation>
1073 </xs:annotation>
1074 <xs:restriction base="xs:token">
1075 <xs:pattern value=".+"/>
1076 </xs:restriction>
1077 </xs:simpleType>
1078
1079 <xs:simpleType name="uri-list">
1080 <xs:list itemType="xs:anyURI"/>
1081 </xs:simpleType>
1082
1083 <xs:simpleType name="validation-strip-or-preserve">
1084 <xs:annotation>
1085 <xs:documentation>
1086 Describes different ways of type-annotating an element or attribute.
1087 </xs:documentation>
1088 </xs:annotation>
1089 <xs:restriction base="xsl:validation-type">
1090 <xs:enumeration value="preserve"/>
1091 <xs:enumeration value="strip"/>
1092 </xs:restriction>
1093 </xs:simpleType>
1094
1095 <xs:simpleType name="validation-type">
1096 <xs:annotation>
1097 <xs:documentation>
1098 Describes different ways of type-annotating an element or attribute.
1099 </xs:documentation>
1100 </xs:annotation>
1101 <xs:restriction base="xs:token">
1102 <xs:enumeration value="strict"/>
1103 <xs:enumeration value="lax"/>
1104 <xs:enumeration value="preserve"/>
1105 <xs:enumeration value="strip"/>
1106 </xs:restriction>
1107 </xs:simpleType>
1108
1109 <xs:simpleType name="yes-or-no">
1110 <xs:annotation>
1111 <xs:documentation>
1112 One of the values "yes" or "no".
1113 </xs:documentation>
1114 </xs:annotation>
1115 <xs:restriction base="xs:token">
1116 <xs:enumeration value="yes"/>
1117 <xs:enumeration value="no"/>
1118 </xs:restriction>
1119 </xs:simpleType>
1120
1121 <xs:simpleType name="yes-or-no-or-omit">
1122 <xs:annotation>
1123 <xs:documentation>
1124 One of the values "yes" or "no" or "omit".
1125 </xs:documentation>
1126 </xs:annotation>
1127 <xs:restriction base="xs:token">
1128 <xs:enumeration value="yes"/>
1129 <xs:enumeration value="no"/>
1130 <xs:enumeration value="omit"/>
1131 </xs:restriction>
1132 </xs:simpleType>
1133
1134 </xs:schema>