frameworks-capybara 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -37,6 +37,7 @@ The following environment variables can be set to configure your tests:
37
37
  CELERITY_JS_ENABLED (string - 'true', 'false') - determines whether Celerity (HTMLUnit) attempts to execute javascript
38
38
  XVFB - (string - 'true', 'false') - determines whether XVFB is used to run browser (i.e. headless Firefox on *nix platform)
39
39
  FW_CERT_LOCATION - path to client certificate (combined pem)
40
+ CHROME_SWITCHES - pass in any allowed switches for the Selenium chrome driver (http://peter.sh/experiments/chromium-command-line-switches/) e.g. CHROME_SWITCHES="--user-agent=Mozilla/5.0 (PLAYSTATION 3; 3.55)"
40
41
 
41
42
  Here is a sample cucumber.yml:
42
43
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.1.4
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{frameworks-capybara}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["mcrmfc"]
12
- s.date = %q{2011-12-20}
12
+ s.date = %q{2011-12-29}
13
13
  s.description = %q{gem to aid setup of Capybara for testing bbc sites}
14
14
  s.email = %q{mcrobbins@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -40,7 +40,9 @@ Gem::Specification.new do |s|
40
40
  "schemas/xhtml-special.ent",
41
41
  "schemas/xhtml-symbol.ent",
42
42
  "schemas/xhtml1-strict.dtd",
43
+ "schemas/xhtml1-strict.xsd",
43
44
  "schemas/xhtml1-transitional.dtd",
45
+ "schemas/xml.xsd",
44
46
  "spec/frameworks_capybara_spec.rb",
45
47
  "spec/frameworks_cucumber_spec.rb",
46
48
  "spec/spec_helper.rb"
@@ -48,7 +50,7 @@ Gem::Specification.new do |s|
48
50
  s.homepage = %q{http://github.com/mcrmfc/frameworks-capybara}
49
51
  s.licenses = ["MIT"]
50
52
  s.require_paths = ["lib"]
51
- s.rubygems_version = %q{1.3.7}
53
+ s.rubygems_version = %q{1.6.0}
52
54
  s.summary = %q{gem to aid setup of Capybara for testing bbc sites}
53
55
  s.test_files = [
54
56
  "spec/frameworks_capybara_spec.rb",
@@ -57,7 +59,6 @@ Gem::Specification.new do |s|
57
59
  ]
58
60
 
59
61
  if s.respond_to? :specification_version then
60
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
61
62
  s.specification_version = 3
62
63
 
63
64
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -82,7 +82,7 @@ module Capybara
82
82
  "-//W3C//DTD XHTML 1.0 Strict//EN" => {:dtd => "#{File.dirname( __FILE__)}/../../schemas/xhtml1-strict.dtd", :type => :strict},
83
83
  "-//W3C//DTD XHTML 1.0 Transitional//EN" => {:dtd => "#{File.dirname( __FILE__)}/../../schemas/xhtml1-transitional.dtd", :type => :transitional},
84
84
  "-//W3C//DTD XHTML+RDFa 1.0//EN" => {:dtd => "#{File.dirname( __FILE__)}/../../schemas/xhtml-rdfa-1.dtd", :type => :rdfa}}
85
-
85
+ #I highly recomment NOT using this method
86
86
  def validate(source)
87
87
  doctype = source.scan(/\"(.*?)\"/)[0].to_s
88
88
 
@@ -93,11 +93,22 @@ module Capybara
93
93
 
94
94
  raise "RDFA Validation not currently supported due to issues in Nokogiri" if type == :rdfa
95
95
 
96
- source = source.gsub(/PUBLIC \"-\/\/W3C\/\/DTD XHTML.*?\/\/EN\" \"http:\/\/www.w3.org.*?\"/, "SYSTEM \"#{dtd}\"")
97
- doc = Nokogiri::XML(source) { |cfg|
98
- cfg.noent.dtdload.dtdvalid
99
- }
100
- errors = doc.validate
96
+ if(RUBY_PLATFORM == 'java') #this works
97
+ source = source.gsub(/PUBLIC \"-\/\/W3C\/\/DTD XHTML.*?\/\/EN\" \"http:\/\/www.w3.org.*?\"/, "SYSTEM \"#{dtd}\"")
98
+ doc = Nokogiri::XML(source) { |cfg|
99
+ cfg.noent.dtdload.dtdvalid
100
+ }
101
+ doc = Nokogiri::XML(source)
102
+ errors = doc.validate
103
+ else #this doesn't - nokogiri issues
104
+ require 'open-uri'
105
+ doc = Nokogiri::XML(open(driver.current_url, :proxy => ENV['PROXY_URL'])) do |config|
106
+ config.strict.noent
107
+ end
108
+ #xsd = Nokogiri::XML::Schema(File.read("#{File.dirname( __FILE__)}/../../schemas/xhtml1-strict.xsd"))
109
+ xsd = Nokogiri::XML::Schema(open('http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd', :proxy => ENV['PROXY_URL']))
110
+ errors = xsd.validate(doc)
111
+ end
101
112
  raise "Page (#{current_url}) failed XHTML vaidation (or Nokogiri Freaked out...please manually check against W3C), errors:#{errors.to_s}" unless errors == []
102
113
  end
103
114
  end
@@ -0,0 +1,2211 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema version="1.0" xml:lang="en"
3
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
4
+ targetNamespace="http://www.w3.org/1999/xhtml"
5
+ xmlns="http://www.w3.org/1999/xhtml"
6
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
7
+ elementFormDefault="qualified">
8
+
9
+ <xs:annotation>
10
+ <xs:documentation>
11
+ XHTML 1.0 (Second Edition) Strict in XML Schema
12
+
13
+ This is the same as HTML 4 Strict except for
14
+ changes due to the differences between XML and SGML.
15
+
16
+ Namespace = http://www.w3.org/1999/xhtml
17
+
18
+ For further information, see: http://www.w3.org/TR/xhtml1
19
+
20
+ Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
21
+ All Rights Reserved.
22
+
23
+ The DTD version is identified by the PUBLIC and SYSTEM identifiers:
24
+
25
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
26
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
27
+
28
+ $Id: xhtml1-strict.xsd,v 1.2 2002/08/28 08:05:44 mimasa Exp $
29
+ </xs:documentation>
30
+ </xs:annotation>
31
+
32
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
33
+ schemaLocation="/Users/robbim02/workspace/frameworks-capybara/schemas/xml.xsd"/>
34
+
35
+ <xs:annotation>
36
+ <xs:documentation>
37
+ ================ Character mnemonic entities =========================
38
+
39
+ XHTML entity sets are identified by the PUBLIC and SYSTEM identifiers:
40
+
41
+ PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
42
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent"
43
+
44
+ PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
45
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent"
46
+
47
+ PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
48
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent"
49
+ </xs:documentation>
50
+ </xs:annotation>
51
+
52
+ <xs:annotation>
53
+ <xs:documentation>
54
+ ================== Imported Names ====================================
55
+ </xs:documentation>
56
+ </xs:annotation>
57
+
58
+ <xs:simpleType name="ContentType">
59
+ <xs:annotation>
60
+ <xs:documentation>
61
+ media type, as per [RFC2045]
62
+ </xs:documentation>
63
+ </xs:annotation>
64
+ <xs:restriction base="xs:string"/>
65
+ </xs:simpleType>
66
+
67
+ <xs:simpleType name="ContentTypes">
68
+ <xs:annotation>
69
+ <xs:documentation>
70
+ comma-separated list of media types, as per [RFC2045]
71
+ </xs:documentation>
72
+ </xs:annotation>
73
+ <xs:restriction base="xs:string"/>
74
+ </xs:simpleType>
75
+
76
+ <xs:simpleType name="Charset">
77
+ <xs:annotation>
78
+ <xs:documentation>
79
+ a character encoding, as per [RFC2045]
80
+ </xs:documentation>
81
+ </xs:annotation>
82
+ <xs:restriction base="xs:string"/>
83
+ </xs:simpleType>
84
+
85
+ <xs:simpleType name="Charsets">
86
+ <xs:annotation>
87
+ <xs:documentation>
88
+ a space separated list of character encodings, as per [RFC2045]
89
+ </xs:documentation>
90
+ </xs:annotation>
91
+ <xs:restriction base="xs:string"/>
92
+ </xs:simpleType>
93
+
94
+ <xs:simpleType name="LanguageCode">
95
+ <xs:annotation>
96
+ <xs:documentation>
97
+ a language code, as per [RFC3066]
98
+ </xs:documentation>
99
+ </xs:annotation>
100
+ <xs:restriction base="xs:language"/>
101
+ </xs:simpleType>
102
+
103
+ <xs:simpleType name="Character">
104
+ <xs:annotation>
105
+ <xs:documentation>
106
+ a single character, as per section 2.2 of [XML]
107
+ </xs:documentation>
108
+ </xs:annotation>
109
+ <xs:restriction base="xs:string">
110
+ <xs:length value="1" fixed="true"/>
111
+ </xs:restriction>
112
+ </xs:simpleType>
113
+
114
+ <xs:simpleType name="Number">
115
+ <xs:annotation>
116
+ <xs:documentation>
117
+ one or more digits
118
+ </xs:documentation>
119
+ </xs:annotation>
120
+ <xs:restriction base="xs:nonNegativeInteger">
121
+ <xs:pattern value="[0-9]+"/>
122
+ </xs:restriction>
123
+ </xs:simpleType>
124
+
125
+ <xs:simpleType name="tabindexNumber">
126
+ <xs:annotation>
127
+ <xs:documentation>
128
+ tabindex attribute specifies the position of the current element
129
+ in the tabbing order for the current document. This value must be
130
+ a number between 0 and 32767. User agents should ignore leading zeros.
131
+ </xs:documentation>
132
+ </xs:annotation>
133
+ <xs:restriction base="Number">
134
+ <xs:minInclusive value="0"/>
135
+ <xs:maxInclusive value="32767"/>
136
+ </xs:restriction>
137
+ </xs:simpleType>
138
+
139
+ <xs:simpleType name="LinkTypes">
140
+ <xs:annotation>
141
+ <xs:documentation>
142
+ space-separated list of link types
143
+ </xs:documentation>
144
+ </xs:annotation>
145
+ <xs:restriction base="xs:NMTOKENS"/>
146
+ </xs:simpleType>
147
+
148
+ <xs:simpleType name="MediaDesc">
149
+ <xs:annotation>
150
+ <xs:documentation>
151
+ single or comma-separated list of media descriptors
152
+ </xs:documentation>
153
+ </xs:annotation>
154
+ <xs:restriction base="xs:string">
155
+ <xs:pattern value="[^,]+(,\s*[^,]+)*"/>
156
+ </xs:restriction>
157
+ </xs:simpleType>
158
+
159
+ <xs:simpleType name="URI">
160
+ <xs:annotation>
161
+ <xs:documentation>
162
+ a Uniform Resource Identifier, see [RFC2396]
163
+ </xs:documentation>
164
+ </xs:annotation>
165
+ <xs:restriction base="xs:anyURI"/>
166
+ </xs:simpleType>
167
+
168
+ <xs:simpleType name="UriList">
169
+ <xs:annotation>
170
+ <xs:documentation>
171
+ a space separated list of Uniform Resource Identifiers
172
+ </xs:documentation>
173
+ </xs:annotation>
174
+ <xs:restriction base="xs:string"/>
175
+ </xs:simpleType>
176
+
177
+ <xs:simpleType name="Datetime">
178
+ <xs:annotation>
179
+ <xs:documentation>
180
+ date and time information. ISO date format
181
+ </xs:documentation>
182
+ </xs:annotation>
183
+ <xs:restriction base="xs:dateTime"/>
184
+ </xs:simpleType>
185
+
186
+ <xs:simpleType name="Script">
187
+ <xs:annotation>
188
+ <xs:documentation>
189
+ script expression
190
+ </xs:documentation>
191
+ </xs:annotation>
192
+ <xs:restriction base="xs:string"/>
193
+ </xs:simpleType>
194
+
195
+ <xs:simpleType name="StyleSheet">
196
+ <xs:annotation>
197
+ <xs:documentation>
198
+ style sheet data
199
+ </xs:documentation>
200
+ </xs:annotation>
201
+ <xs:restriction base="xs:string"/>
202
+ </xs:simpleType>
203
+
204
+ <xs:simpleType name="Text">
205
+ <xs:annotation>
206
+ <xs:documentation>
207
+ used for titles etc.
208
+ </xs:documentation>
209
+ </xs:annotation>
210
+ <xs:restriction base="xs:string"/>
211
+ </xs:simpleType>
212
+
213
+ <xs:simpleType name="Length">
214
+ <xs:annotation>
215
+ <xs:documentation>
216
+ nn for pixels or nn% for percentage length
217
+ </xs:documentation>
218
+ </xs:annotation>
219
+ <xs:restriction base="xs:string">
220
+ <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)"/>
221
+ </xs:restriction>
222
+ </xs:simpleType>
223
+
224
+ <xs:simpleType name="MultiLength">
225
+ <xs:annotation>
226
+ <xs:documentation>
227
+ pixel, percentage, or relative
228
+ </xs:documentation>
229
+ </xs:annotation>
230
+ <xs:restriction base="xs:string">
231
+ <xs:pattern value="[-+]?(\d+|\d+(\.\d+)?%)|[1-9]?(\d+)?\*"/>
232
+ </xs:restriction>
233
+ </xs:simpleType>
234
+
235
+ <xs:simpleType name="Pixels">
236
+ <xs:annotation>
237
+ <xs:documentation>
238
+ integer representing length in pixels
239
+ </xs:documentation>
240
+ </xs:annotation>
241
+ <xs:restriction base="xs:nonNegativeInteger"/>
242
+ </xs:simpleType>
243
+
244
+ <xs:annotation>
245
+ <xs:documentation>
246
+ these are used for image maps
247
+ </xs:documentation>
248
+ </xs:annotation>
249
+
250
+ <xs:simpleType name="Shape">
251
+ <xs:restriction base="xs:token">
252
+ <xs:enumeration value="rect"/>
253
+ <xs:enumeration value="circle"/>
254
+ <xs:enumeration value="poly"/>
255
+ <xs:enumeration value="default"/>
256
+ </xs:restriction>
257
+ </xs:simpleType>
258
+
259
+ <xs:simpleType name="Coords">
260
+ <xs:annotation>
261
+ <xs:documentation>
262
+ comma separated list of lengths
263
+ </xs:documentation>
264
+ </xs:annotation>
265
+ <xs:restriction base="xs:string">
266
+ <xs:pattern
267
+ value="[-+]?(\d+|\d+(\.\d+)?%)(,\s*[-+]?(\d+|\d+(\.\d+)?%))*"/>
268
+ </xs:restriction>
269
+ </xs:simpleType>
270
+
271
+ <xs:annotation>
272
+ <xs:documentation>
273
+ =================== Generic Attributes ===============================
274
+ </xs:documentation>
275
+ </xs:annotation>
276
+
277
+ <xs:attributeGroup name="coreattrs">
278
+ <xs:annotation>
279
+ <xs:documentation>
280
+ core attributes common to most elements
281
+ id document-wide unique id
282
+ class space separated list of classes
283
+ style associated style info
284
+ title advisory title/amplification
285
+ </xs:documentation>
286
+ </xs:annotation>
287
+ <xs:attribute name="id" type="xs:ID"/>
288
+ <xs:attribute name="class" type="xs:NMTOKENS"/>
289
+ <xs:attribute name="style" type="StyleSheet"/>
290
+ <xs:attribute name="title" type="Text"/>
291
+ </xs:attributeGroup>
292
+
293
+ <xs:attributeGroup name="i18n">
294
+ <xs:annotation>
295
+ <xs:documentation>
296
+ internationalization attributes
297
+ lang language code (backwards compatible)
298
+ xml:lang language code (as per XML 1.0 spec)
299
+ dir direction for weak/neutral text
300
+ </xs:documentation>
301
+ </xs:annotation>
302
+ <xs:attribute name="lang" type="LanguageCode"/>
303
+ <xs:attribute ref="xml:lang"/>
304
+ <xs:attribute name="dir">
305
+ <xs:simpleType>
306
+ <xs:restriction base="xs:token">
307
+ <xs:enumeration value="ltr"/>
308
+ <xs:enumeration value="rtl"/>
309
+ </xs:restriction>
310
+ </xs:simpleType>
311
+ </xs:attribute>
312
+ </xs:attributeGroup>
313
+
314
+ <xs:attributeGroup name="events">
315
+ <xs:annotation>
316
+ <xs:documentation>
317
+ attributes for common UI events
318
+ onclick a pointer button was clicked
319
+ ondblclick a pointer button was double clicked
320
+ onmousedown a pointer button was pressed down
321
+ onmouseup a pointer button was released
322
+ onmousemove a pointer was moved onto the element
323
+ onmouseout a pointer was moved away from the element
324
+ onkeypress a key was pressed and released
325
+ onkeydown a key was pressed down
326
+ onkeyup a key was released
327
+ </xs:documentation>
328
+ </xs:annotation>
329
+ <xs:attribute name="onclick" type="Script"/>
330
+ <xs:attribute name="ondblclick" type="Script"/>
331
+ <xs:attribute name="onmousedown" type="Script"/>
332
+ <xs:attribute name="onmouseup" type="Script"/>
333
+ <xs:attribute name="onmouseover" type="Script"/>
334
+ <xs:attribute name="onmousemove" type="Script"/>
335
+ <xs:attribute name="onmouseout" type="Script"/>
336
+ <xs:attribute name="onkeypress" type="Script"/>
337
+ <xs:attribute name="onkeydown" type="Script"/>
338
+ <xs:attribute name="onkeyup" type="Script"/>
339
+ </xs:attributeGroup>
340
+
341
+ <xs:attributeGroup name="focus">
342
+ <xs:annotation>
343
+ <xs:documentation>
344
+ attributes for elements that can get the focus
345
+ accesskey accessibility key character
346
+ tabindex position in tabbing order
347
+ onfocus the element got the focus
348
+ onblur the element lost the focus
349
+ </xs:documentation>
350
+ </xs:annotation>
351
+ <xs:attribute name="accesskey" type="Character"/>
352
+ <xs:attribute name="tabindex" type="tabindexNumber"/>
353
+ <xs:attribute name="onfocus" type="Script"/>
354
+ <xs:attribute name="onblur" type="Script"/>
355
+ </xs:attributeGroup>
356
+
357
+ <xs:attributeGroup name="attrs">
358
+ <xs:attributeGroup ref="coreattrs"/>
359
+ <xs:attributeGroup ref="i18n"/>
360
+ <xs:attributeGroup ref="events"/>
361
+ </xs:attributeGroup>
362
+
363
+ <xs:annotation>
364
+ <xs:documentation>
365
+ =================== Text Elements ====================================
366
+ </xs:documentation>
367
+ </xs:annotation>
368
+
369
+ <xs:group name="special.pre">
370
+ <xs:choice>
371
+ <xs:element ref="br"/>
372
+ <xs:element ref="span"/>
373
+ <xs:element ref="bdo"/>
374
+ <xs:element ref="map"/>
375
+ </xs:choice>
376
+ </xs:group>
377
+
378
+ <xs:group name="special">
379
+ <xs:choice>
380
+ <xs:group ref="special.pre"/>
381
+ <xs:element ref="object"/>
382
+ <xs:element ref="img"/>
383
+ </xs:choice>
384
+ </xs:group>
385
+
386
+ <xs:group name="fontstyle">
387
+ <xs:choice>
388
+ <xs:element ref="tt"/>
389
+ <xs:element ref="i"/>
390
+ <xs:element ref="b"/>
391
+ <xs:element ref="big"/>
392
+ <xs:element ref="small"/>
393
+ </xs:choice>
394
+ </xs:group>
395
+
396
+ <xs:group name="phrase">
397
+ <xs:choice>
398
+ <xs:element ref="em"/>
399
+ <xs:element ref="strong"/>
400
+ <xs:element ref="dfn"/>
401
+ <xs:element ref="code"/>
402
+ <xs:element ref="q"/>
403
+ <xs:element ref="samp"/>
404
+ <xs:element ref="kbd"/>
405
+ <xs:element ref="var"/>
406
+ <xs:element ref="cite"/>
407
+ <xs:element ref="abbr"/>
408
+ <xs:element ref="acronym"/>
409
+ <xs:element ref="sub"/>
410
+ <xs:element ref="sup"/>
411
+ </xs:choice>
412
+ </xs:group>
413
+
414
+ <xs:group name="inline.forms">
415
+ <xs:choice>
416
+ <xs:element ref="input"/>
417
+ <xs:element ref="select"/>
418
+ <xs:element ref="textarea"/>
419
+ <xs:element ref="label"/>
420
+ <xs:element ref="button"/>
421
+ </xs:choice>
422
+ </xs:group>
423
+
424
+ <xs:group name="misc.inline">
425
+ <xs:choice>
426
+ <xs:element ref="ins"/>
427
+ <xs:element ref="del"/>
428
+ <xs:element ref="script"/>
429
+ </xs:choice>
430
+ </xs:group>
431
+
432
+ <xs:group name="misc">
433
+ <xs:annotation>
434
+ <xs:documentation>
435
+ these can only occur at block level
436
+ </xs:documentation>
437
+ </xs:annotation>
438
+ <xs:choice>
439
+ <xs:element ref="noscript"/>
440
+ <xs:group ref="misc.inline"/>
441
+ </xs:choice>
442
+ </xs:group>
443
+
444
+ <xs:group name="inline">
445
+ <xs:choice>
446
+ <xs:element ref="a"/>
447
+ <xs:group ref="special"/>
448
+ <xs:group ref="fontstyle"/>
449
+ <xs:group ref="phrase"/>
450
+ <xs:group ref="inline.forms"/>
451
+ </xs:choice>
452
+ </xs:group>
453
+
454
+ <xs:complexType name="Inline" mixed="true">
455
+ <xs:annotation>
456
+ <xs:documentation>
457
+ "Inline" covers inline or "text-level" elements
458
+ </xs:documentation>
459
+ </xs:annotation>
460
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
461
+ <xs:group ref="inline"/>
462
+ <xs:group ref="misc.inline"/>
463
+ </xs:choice>
464
+ </xs:complexType>
465
+
466
+ <xs:annotation>
467
+ <xs:documentation>
468
+ ================== Block level elements ==============================
469
+ </xs:documentation>
470
+ </xs:annotation>
471
+
472
+ <xs:group name="heading">
473
+ <xs:choice>
474
+ <xs:element ref="h1"/>
475
+ <xs:element ref="h2"/>
476
+ <xs:element ref="h3"/>
477
+ <xs:element ref="h4"/>
478
+ <xs:element ref="h5"/>
479
+ <xs:element ref="h6"/>
480
+ </xs:choice>
481
+ </xs:group>
482
+
483
+ <xs:group name="lists">
484
+ <xs:choice>
485
+ <xs:element ref="ul"/>
486
+ <xs:element ref="ol"/>
487
+ <xs:element ref="dl"/>
488
+ </xs:choice>
489
+ </xs:group>
490
+
491
+ <xs:group name="blocktext">
492
+ <xs:choice>
493
+ <xs:element ref="pre"/>
494
+ <xs:element ref="hr"/>
495
+ <xs:element ref="blockquote"/>
496
+ <xs:element ref="address"/>
497
+ </xs:choice>
498
+ </xs:group>
499
+
500
+ <xs:group name="block">
501
+ <xs:choice>
502
+ <xs:element ref="p"/>
503
+ <xs:group ref="heading"/>
504
+ <xs:element ref="div"/>
505
+ <xs:group ref="lists"/>
506
+ <xs:group ref="blocktext"/>
507
+ <xs:element ref="fieldset"/>
508
+ <xs:element ref="table"/>
509
+ </xs:choice>
510
+ </xs:group>
511
+
512
+ <xs:complexType name="Block">
513
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
514
+ <xs:group ref="block"/>
515
+ <xs:element ref="form"/>
516
+ <xs:group ref="misc"/>
517
+ </xs:choice>
518
+ </xs:complexType>
519
+
520
+ <xs:complexType name="Flow" mixed="true">
521
+ <xs:annotation>
522
+ <xs:documentation>
523
+ "Flow" mixes block and inline and is used for list items etc.
524
+ </xs:documentation>
525
+ </xs:annotation>
526
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
527
+ <xs:group ref="block"/>
528
+ <xs:element ref="form"/>
529
+ <xs:group ref="inline"/>
530
+ <xs:group ref="misc"/>
531
+ </xs:choice>
532
+ </xs:complexType>
533
+
534
+ <xs:annotation>
535
+ <xs:documentation>
536
+ ================== Content models for exclusions =====================
537
+ </xs:documentation>
538
+ </xs:annotation>
539
+
540
+ <xs:complexType name="a.content" mixed="true">
541
+ <xs:annotation>
542
+ <xs:documentation>
543
+ a elements use "Inline" excluding a
544
+ </xs:documentation>
545
+ </xs:annotation>
546
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
547
+ <xs:group ref="special"/>
548
+ <xs:group ref="fontstyle"/>
549
+ <xs:group ref="phrase"/>
550
+ <xs:group ref="inline.forms"/>
551
+ <xs:group ref="misc.inline"/>
552
+ </xs:choice>
553
+ </xs:complexType>
554
+
555
+ <xs:complexType name="pre.content" mixed="true">
556
+ <xs:annotation>
557
+ <xs:documentation>
558
+ pre uses "Inline" excluding big, small, sup or sup
559
+ </xs:documentation>
560
+ </xs:annotation>
561
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
562
+ <xs:element ref="a"/>
563
+ <xs:group ref="fontstyle"/>
564
+ <xs:group ref="phrase"/>
565
+ <xs:group ref="special.pre"/>
566
+ <xs:group ref="misc.inline"/>
567
+ <xs:group ref="inline.forms"/>
568
+ </xs:choice>
569
+ </xs:complexType>
570
+
571
+ <xs:complexType name="form.content">
572
+ <xs:annotation>
573
+ <xs:documentation>
574
+ form uses "Block" excluding form
575
+ </xs:documentation>
576
+ </xs:annotation>
577
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
578
+ <xs:group ref="block"/>
579
+ <xs:group ref="misc"/>
580
+ </xs:choice>
581
+ </xs:complexType>
582
+
583
+ <xs:complexType name="button.content" mixed="true">
584
+ <xs:annotation>
585
+ <xs:documentation>
586
+ button uses "Flow" but excludes a, form and form controls
587
+ </xs:documentation>
588
+ </xs:annotation>
589
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
590
+ <xs:element ref="p"/>
591
+ <xs:group ref="heading"/>
592
+ <xs:element ref="div"/>
593
+ <xs:group ref="lists"/>
594
+ <xs:group ref="blocktext"/>
595
+ <xs:element ref="table"/>
596
+ <xs:group ref="special"/>
597
+ <xs:group ref="fontstyle"/>
598
+ <xs:group ref="phrase"/>
599
+ <xs:group ref="misc"/>
600
+ </xs:choice>
601
+ </xs:complexType>
602
+
603
+ <xs:annotation>
604
+ <xs:documentation>
605
+ ================ Document Structure ==================================
606
+ </xs:documentation>
607
+ </xs:annotation>
608
+
609
+ <xs:element name="html">
610
+ <xs:complexType>
611
+ <xs:sequence>
612
+ <xs:element ref="head"/>
613
+ <xs:element ref="body"/>
614
+ </xs:sequence>
615
+ <xs:attributeGroup ref="i18n"/>
616
+ <xs:attribute name="id" type="xs:ID"/>
617
+ </xs:complexType>
618
+ </xs:element>
619
+
620
+ <xs:annotation>
621
+ <xs:documentation>
622
+ ================ Document Head =======================================
623
+ </xs:documentation>
624
+ </xs:annotation>
625
+
626
+ <xs:group name="head.misc">
627
+ <xs:sequence>
628
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
629
+ <xs:element ref="script"/>
630
+ <xs:element ref="style"/>
631
+ <xs:element ref="meta"/>
632
+ <xs:element ref="link"/>
633
+ <xs:element ref="object"/>
634
+ </xs:choice>
635
+ </xs:sequence>
636
+ </xs:group>
637
+
638
+ <xs:element name="head">
639
+ <xs:annotation>
640
+ <xs:documentation>
641
+ content model is "head.misc" combined with a single
642
+ title and an optional base element in any order
643
+ </xs:documentation>
644
+ </xs:annotation>
645
+ <xs:complexType>
646
+ <xs:sequence>
647
+ <xs:group ref="head.misc"/>
648
+ <xs:choice>
649
+ <xs:sequence>
650
+ <xs:element ref="title"/>
651
+ <xs:group ref="head.misc"/>
652
+ <xs:sequence minOccurs="0">
653
+ <xs:element ref="base"/>
654
+ <xs:group ref="head.misc"/>
655
+ </xs:sequence>
656
+ </xs:sequence>
657
+ <xs:sequence>
658
+ <xs:element ref="base"/>
659
+ <xs:group ref="head.misc"/>
660
+ <xs:element ref="title"/>
661
+ <xs:group ref="head.misc"/>
662
+ </xs:sequence>
663
+ </xs:choice>
664
+ </xs:sequence>
665
+ <xs:attributeGroup ref="i18n"/>
666
+ <xs:attribute name="id" type="xs:ID"/>
667
+ <xs:attribute name="profile" type="URI"/>
668
+ </xs:complexType>
669
+ </xs:element>
670
+
671
+ <xs:element name="title">
672
+ <xs:annotation>
673
+ <xs:documentation>
674
+ The title element is not considered part of the flow of text.
675
+ It should be displayed, for example as the page header or
676
+ window title. Exactly one title is required per document.
677
+ </xs:documentation>
678
+ </xs:annotation>
679
+ <xs:complexType mixed="true">
680
+ <xs:attributeGroup ref="i18n"/>
681
+ <xs:attribute name="id" type="xs:ID"/>
682
+ </xs:complexType>
683
+ </xs:element>
684
+
685
+ <xs:element name="base">
686
+ <xs:annotation>
687
+ <xs:documentation>
688
+ document base URI
689
+ </xs:documentation>
690
+ </xs:annotation>
691
+ <xs:complexType>
692
+ <xs:attribute name="href" use="required" type="URI"/>
693
+ <xs:attribute name="id" type="xs:ID"/>
694
+ </xs:complexType>
695
+ </xs:element>
696
+
697
+ <xs:element name="meta">
698
+ <xs:annotation>
699
+ <xs:documentation>
700
+ generic metainformation
701
+ </xs:documentation>
702
+ </xs:annotation>
703
+ <xs:complexType>
704
+ <xs:attributeGroup ref="i18n"/>
705
+ <xs:attribute name="id" type="xs:ID"/>
706
+ <xs:attribute name="http-equiv"/>
707
+ <xs:attribute name="name"/>
708
+ <xs:attribute name="content" use="required"/>
709
+ <xs:attribute name="scheme"/>
710
+ </xs:complexType>
711
+ </xs:element>
712
+
713
+ <xs:element name="link">
714
+ <xs:annotation>
715
+ <xs:documentation>
716
+ Relationship values can be used in principle:
717
+
718
+ a) for document specific toolbars/menus when used
719
+ with the link element in document head e.g.
720
+ start, contents, previous, next, index, end, help
721
+ b) to link to a separate style sheet (rel="stylesheet")
722
+ c) to make a link to a script (rel="script")
723
+ d) by stylesheets to control how collections of
724
+ html nodes are rendered into printed documents
725
+ e) to make a link to a printable version of this document
726
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
727
+ </xs:documentation>
728
+ </xs:annotation>
729
+ <xs:complexType>
730
+ <xs:attributeGroup ref="attrs"/>
731
+ <xs:attribute name="charset" type="Charset"/>
732
+ <xs:attribute name="href" type="URI"/>
733
+ <xs:attribute name="hreflang" type="LanguageCode"/>
734
+ <xs:attribute name="type" type="ContentType"/>
735
+ <xs:attribute name="rel" type="LinkTypes"/>
736
+ <xs:attribute name="rev" type="LinkTypes"/>
737
+ <xs:attribute name="media" type="MediaDesc"/>
738
+ </xs:complexType>
739
+ </xs:element>
740
+
741
+ <xs:element name="style">
742
+ <xs:annotation>
743
+ <xs:documentation>
744
+ style info, which may include CDATA sections
745
+ </xs:documentation>
746
+ </xs:annotation>
747
+ <xs:complexType mixed="true">
748
+ <xs:attributeGroup ref="i18n"/>
749
+ <xs:attribute name="id" type="xs:ID"/>
750
+ <xs:attribute name="type" use="required" type="ContentType"/>
751
+ <xs:attribute name="media" type="MediaDesc"/>
752
+ <xs:attribute name="title" type="Text"/>
753
+ <xs:attribute ref="xml:space" fixed="preserve"/>
754
+ </xs:complexType>
755
+ </xs:element>
756
+
757
+ <xs:element name="script">
758
+ <xs:annotation>
759
+ <xs:documentation>
760
+ script statements, which may include CDATA sections
761
+ </xs:documentation>
762
+ </xs:annotation>
763
+ <xs:complexType mixed="true">
764
+ <xs:attribute name="id" type="xs:ID"/>
765
+ <xs:attribute name="charset" type="Charset"/>
766
+ <xs:attribute name="type" use="required" type="ContentType"/>
767
+ <xs:attribute name="src" type="URI"/>
768
+ <xs:attribute name="defer">
769
+ <xs:simpleType>
770
+ <xs:restriction base="xs:token">
771
+ <xs:enumeration value="defer"/>
772
+ </xs:restriction>
773
+ </xs:simpleType>
774
+ </xs:attribute>
775
+ <xs:attribute ref="xml:space" fixed="preserve"/>
776
+ </xs:complexType>
777
+ </xs:element>
778
+
779
+ <xs:element name="noscript">
780
+ <xs:annotation>
781
+ <xs:documentation>
782
+ alternate content container for non script-based rendering
783
+ </xs:documentation>
784
+ </xs:annotation>
785
+ <xs:complexType>
786
+ <xs:complexContent>
787
+ <xs:extension base="Block">
788
+ <xs:attributeGroup ref="attrs"/>
789
+ </xs:extension>
790
+ </xs:complexContent>
791
+ </xs:complexType>
792
+ </xs:element>
793
+
794
+ <xs:annotation>
795
+ <xs:documentation>
796
+ =================== Document Body ====================================
797
+ </xs:documentation>
798
+ </xs:annotation>
799
+
800
+ <xs:element name="body">
801
+ <xs:complexType>
802
+ <xs:complexContent>
803
+ <xs:extension base="Block">
804
+ <xs:attributeGroup ref="attrs"/>
805
+ <xs:attribute name="onload" type="Script"/>
806
+ <xs:attribute name="onunload" type="Script"/>
807
+ </xs:extension>
808
+ </xs:complexContent>
809
+ </xs:complexType>
810
+ </xs:element>
811
+
812
+ <xs:element name="div">
813
+ <xs:annotation>
814
+ <xs:documentation>
815
+ generic language/style container
816
+ </xs:documentation>
817
+ </xs:annotation>
818
+ <xs:complexType mixed="true">
819
+ <xs:complexContent>
820
+ <xs:extension base="Flow">
821
+ <xs:attributeGroup ref="attrs"/>
822
+ </xs:extension>
823
+ </xs:complexContent>
824
+ </xs:complexType>
825
+ </xs:element>
826
+
827
+ <xs:annotation>
828
+ <xs:documentation>
829
+ =================== Paragraphs =======================================
830
+ </xs:documentation>
831
+ </xs:annotation>
832
+
833
+ <xs:element name="p">
834
+ <xs:complexType mixed="true">
835
+ <xs:complexContent>
836
+ <xs:extension base="Inline">
837
+ <xs:attributeGroup ref="attrs"/>
838
+ </xs:extension>
839
+ </xs:complexContent>
840
+ </xs:complexType>
841
+ </xs:element>
842
+
843
+ <xs:annotation>
844
+ <xs:documentation>
845
+ =================== Headings =========================================
846
+
847
+ There are six levels of headings from h1 (the most important)
848
+ to h6 (the least important).
849
+ </xs:documentation>
850
+ </xs:annotation>
851
+
852
+ <xs:element name="h1">
853
+ <xs:complexType mixed="true">
854
+ <xs:complexContent>
855
+ <xs:extension base="Inline">
856
+ <xs:attributeGroup ref="attrs"/>
857
+ </xs:extension>
858
+ </xs:complexContent>
859
+ </xs:complexType>
860
+ </xs:element>
861
+
862
+ <xs:element name="h2">
863
+ <xs:complexType mixed="true">
864
+ <xs:complexContent>
865
+ <xs:extension base="Inline">
866
+ <xs:attributeGroup ref="attrs"/>
867
+ </xs:extension>
868
+ </xs:complexContent>
869
+ </xs:complexType>
870
+ </xs:element>
871
+
872
+ <xs:element name="h3">
873
+ <xs:complexType mixed="true">
874
+ <xs:complexContent>
875
+ <xs:extension base="Inline">
876
+ <xs:attributeGroup ref="attrs"/>
877
+ </xs:extension>
878
+ </xs:complexContent>
879
+ </xs:complexType>
880
+ </xs:element>
881
+
882
+ <xs:element name="h4">
883
+ <xs:complexType mixed="true">
884
+ <xs:complexContent>
885
+ <xs:extension base="Inline">
886
+ <xs:attributeGroup ref="attrs"/>
887
+ </xs:extension>
888
+ </xs:complexContent>
889
+ </xs:complexType>
890
+ </xs:element>
891
+
892
+ <xs:element name="h5">
893
+ <xs:complexType mixed="true">
894
+ <xs:complexContent>
895
+ <xs:extension base="Inline">
896
+ <xs:attributeGroup ref="attrs"/>
897
+ </xs:extension>
898
+ </xs:complexContent>
899
+ </xs:complexType>
900
+ </xs:element>
901
+
902
+ <xs:element name="h6">
903
+ <xs:complexType mixed="true">
904
+ <xs:complexContent>
905
+ <xs:extension base="Inline">
906
+ <xs:attributeGroup ref="attrs"/>
907
+ </xs:extension>
908
+ </xs:complexContent>
909
+ </xs:complexType>
910
+ </xs:element>
911
+
912
+ <xs:annotation>
913
+ <xs:documentation>
914
+ =================== Lists ============================================
915
+ </xs:documentation>
916
+ </xs:annotation>
917
+
918
+ <xs:element name="ul">
919
+ <xs:annotation>
920
+ <xs:documentation>
921
+ Unordered list
922
+ </xs:documentation>
923
+ </xs:annotation>
924
+ <xs:complexType>
925
+ <xs:sequence>
926
+ <xs:element maxOccurs="unbounded" ref="li"/>
927
+ </xs:sequence>
928
+ <xs:attributeGroup ref="attrs"/>
929
+ </xs:complexType>
930
+ </xs:element>
931
+
932
+ <xs:element name="ol">
933
+ <xs:annotation>
934
+ <xs:documentation>
935
+ Ordered (numbered) list
936
+ </xs:documentation>
937
+ </xs:annotation>
938
+ <xs:complexType>
939
+ <xs:sequence>
940
+ <xs:element maxOccurs="unbounded" ref="li"/>
941
+ </xs:sequence>
942
+ <xs:attributeGroup ref="attrs"/>
943
+ </xs:complexType>
944
+ </xs:element>
945
+
946
+ <xs:element name="li">
947
+ <xs:annotation>
948
+ <xs:documentation>
949
+ list item
950
+ </xs:documentation>
951
+ </xs:annotation>
952
+ <xs:complexType mixed="true">
953
+ <xs:complexContent>
954
+ <xs:extension base="Flow">
955
+ <xs:attributeGroup ref="attrs"/>
956
+ </xs:extension>
957
+ </xs:complexContent>
958
+ </xs:complexType>
959
+ </xs:element>
960
+
961
+ <xs:annotation>
962
+ <xs:documentation>
963
+ definition lists - dt for term, dd for its definition
964
+ </xs:documentation>
965
+ </xs:annotation>
966
+
967
+ <xs:element name="dl">
968
+ <xs:complexType>
969
+ <xs:choice maxOccurs="unbounded">
970
+ <xs:element ref="dt"/>
971
+ <xs:element ref="dd"/>
972
+ </xs:choice>
973
+ <xs:attributeGroup ref="attrs"/>
974
+ </xs:complexType>
975
+ </xs:element>
976
+
977
+ <xs:element name="dt">
978
+ <xs:complexType mixed="true">
979
+ <xs:complexContent>
980
+ <xs:extension base="Inline">
981
+ <xs:attributeGroup ref="attrs"/>
982
+ </xs:extension>
983
+ </xs:complexContent>
984
+ </xs:complexType>
985
+ </xs:element>
986
+
987
+ <xs:element name="dd">
988
+ <xs:complexType mixed="true">
989
+ <xs:complexContent>
990
+ <xs:extension base="Flow">
991
+ <xs:attributeGroup ref="attrs"/>
992
+ </xs:extension>
993
+ </xs:complexContent>
994
+ </xs:complexType>
995
+ </xs:element>
996
+
997
+ <xs:annotation>
998
+ <xs:documentation>
999
+ =================== Address ==========================================
1000
+ </xs:documentation>
1001
+ </xs:annotation>
1002
+
1003
+ <xs:element name="address">
1004
+ <xs:annotation>
1005
+ <xs:documentation>
1006
+ information on author
1007
+ </xs:documentation>
1008
+ </xs:annotation>
1009
+ <xs:complexType mixed="true">
1010
+ <xs:complexContent>
1011
+ <xs:extension base="Inline">
1012
+ <xs:attributeGroup ref="attrs"/>
1013
+ </xs:extension>
1014
+ </xs:complexContent>
1015
+ </xs:complexType>
1016
+ </xs:element>
1017
+
1018
+ <xs:annotation>
1019
+ <xs:documentation>
1020
+ =================== Horizontal Rule ==================================
1021
+ </xs:documentation>
1022
+ </xs:annotation>
1023
+
1024
+ <xs:element name="hr">
1025
+ <xs:complexType>
1026
+ <xs:attributeGroup ref="attrs"/>
1027
+ </xs:complexType>
1028
+ </xs:element>
1029
+
1030
+ <xs:annotation>
1031
+ <xs:documentation>
1032
+ =================== Preformatted Text ================================
1033
+ </xs:documentation>
1034
+ </xs:annotation>
1035
+
1036
+ <xs:element name="pre">
1037
+ <xs:annotation>
1038
+ <xs:documentation>
1039
+ content is "Inline" excluding "img|object|big|small|sub|sup"
1040
+ </xs:documentation>
1041
+ </xs:annotation>
1042
+ <xs:complexType mixed="true">
1043
+ <xs:complexContent>
1044
+ <xs:extension base="pre.content">
1045
+ <xs:attributeGroup ref="attrs"/>
1046
+ <xs:attribute ref="xml:space" fixed="preserve"/>
1047
+ </xs:extension>
1048
+ </xs:complexContent>
1049
+ </xs:complexType>
1050
+ </xs:element>
1051
+
1052
+ <xs:annotation>
1053
+ <xs:documentation>
1054
+ =================== Block-like Quotes ================================
1055
+ </xs:documentation>
1056
+ </xs:annotation>
1057
+
1058
+ <xs:element name="blockquote">
1059
+ <xs:complexType>
1060
+ <xs:complexContent>
1061
+ <xs:extension base="Block">
1062
+ <xs:attributeGroup ref="attrs"/>
1063
+ <xs:attribute name="cite" type="URI"/>
1064
+ </xs:extension>
1065
+ </xs:complexContent>
1066
+ </xs:complexType>
1067
+ </xs:element>
1068
+
1069
+ <xs:annotation>
1070
+ <xs:documentation>
1071
+ =================== Inserted/Deleted Text ============================
1072
+
1073
+ ins/del are allowed in block and inline content, but its
1074
+ inappropriate to include block content within an ins element
1075
+ occurring in inline content.
1076
+ </xs:documentation>
1077
+ </xs:annotation>
1078
+
1079
+ <xs:element name="ins">
1080
+ <xs:complexType mixed="true">
1081
+ <xs:complexContent>
1082
+ <xs:extension base="Flow">
1083
+ <xs:attributeGroup ref="attrs"/>
1084
+ <xs:attribute name="cite" type="URI"/>
1085
+ <xs:attribute name="datetime" type="Datetime"/>
1086
+ </xs:extension>
1087
+ </xs:complexContent>
1088
+ </xs:complexType>
1089
+ </xs:element>
1090
+
1091
+ <xs:element name="del">
1092
+ <xs:complexType mixed="true">
1093
+ <xs:complexContent>
1094
+ <xs:extension base="Flow">
1095
+ <xs:attributeGroup ref="attrs"/>
1096
+ <xs:attribute name="cite" type="URI"/>
1097
+ <xs:attribute name="datetime" type="Datetime"/>
1098
+ </xs:extension>
1099
+ </xs:complexContent>
1100
+ </xs:complexType>
1101
+ </xs:element>
1102
+
1103
+ <xs:annotation>
1104
+ <xs:documentation>
1105
+ ================== The Anchor Element ================================
1106
+ </xs:documentation>
1107
+ </xs:annotation>
1108
+
1109
+ <xs:element name="a">
1110
+ <xs:annotation>
1111
+ <xs:documentation>
1112
+ content is "Inline" except that anchors shouldn't be nested
1113
+ </xs:documentation>
1114
+ </xs:annotation>
1115
+ <xs:complexType mixed="true">
1116
+ <xs:complexContent>
1117
+ <xs:extension base="a.content">
1118
+ <xs:attributeGroup ref="attrs"/>
1119
+ <xs:attributeGroup ref="focus"/>
1120
+ <xs:attribute name="charset" type="Charset"/>
1121
+ <xs:attribute name="type" type="ContentType"/>
1122
+ <xs:attribute name="name" type="xs:NMTOKEN"/>
1123
+ <xs:attribute name="href" type="URI"/>
1124
+ <xs:attribute name="hreflang" type="LanguageCode"/>
1125
+ <xs:attribute name="rel" type="LinkTypes"/>
1126
+ <xs:attribute name="rev" type="LinkTypes"/>
1127
+ <xs:attribute name="shape" default="rect" type="Shape"/>
1128
+ <xs:attribute name="coords" type="Coords"/>
1129
+ </xs:extension>
1130
+ </xs:complexContent>
1131
+ </xs:complexType>
1132
+ </xs:element>
1133
+
1134
+ <xs:annotation>
1135
+ <xs:documentation>
1136
+ ===================== Inline Elements ================================
1137
+ </xs:documentation>
1138
+ </xs:annotation>
1139
+
1140
+ <xs:element name="span">
1141
+ <xs:annotation>
1142
+ <xs:documentation>
1143
+ generic language/style container
1144
+ </xs:documentation>
1145
+ </xs:annotation>
1146
+ <xs:complexType mixed="true">
1147
+ <xs:complexContent>
1148
+ <xs:extension base="Inline">
1149
+ <xs:attributeGroup ref="attrs"/>
1150
+ </xs:extension>
1151
+ </xs:complexContent>
1152
+ </xs:complexType>
1153
+ </xs:element>
1154
+
1155
+ <xs:element name="bdo">
1156
+ <xs:annotation>
1157
+ <xs:documentation>
1158
+ I18N BiDi over-ride
1159
+ </xs:documentation>
1160
+ </xs:annotation>
1161
+ <xs:complexType mixed="true">
1162
+ <xs:complexContent>
1163
+ <xs:extension base="Inline">
1164
+ <xs:attributeGroup ref="coreattrs"/>
1165
+ <xs:attributeGroup ref="events"/>
1166
+ <xs:attribute name="lang" type="LanguageCode"/>
1167
+ <xs:attribute ref="xml:lang"/>
1168
+ <xs:attribute name="dir" use="required">
1169
+ <xs:simpleType>
1170
+ <xs:restriction base="xs:token">
1171
+ <xs:enumeration value="ltr"/>
1172
+ <xs:enumeration value="rtl"/>
1173
+ </xs:restriction>
1174
+ </xs:simpleType>
1175
+ </xs:attribute>
1176
+ </xs:extension>
1177
+ </xs:complexContent>
1178
+ </xs:complexType>
1179
+ </xs:element>
1180
+
1181
+ <xs:element name="br">
1182
+ <xs:annotation>
1183
+ <xs:documentation>
1184
+ forced line break
1185
+ </xs:documentation>
1186
+ </xs:annotation>
1187
+ <xs:complexType>
1188
+ <xs:attributeGroup ref="coreattrs"/>
1189
+ </xs:complexType>
1190
+ </xs:element>
1191
+
1192
+ <xs:element name="em">
1193
+ <xs:annotation>
1194
+ <xs:documentation>
1195
+ emphasis
1196
+ </xs:documentation>
1197
+ </xs:annotation>
1198
+ <xs:complexType mixed="true">
1199
+ <xs:complexContent>
1200
+ <xs:extension base="Inline">
1201
+ <xs:attributeGroup ref="attrs"/>
1202
+ </xs:extension>
1203
+ </xs:complexContent>
1204
+ </xs:complexType>
1205
+ </xs:element>
1206
+
1207
+ <xs:element name="strong">
1208
+ <xs:annotation>
1209
+ <xs:documentation>
1210
+ strong emphasis
1211
+ </xs:documentation>
1212
+ </xs:annotation>
1213
+ <xs:complexType mixed="true">
1214
+ <xs:complexContent>
1215
+ <xs:extension base="Inline">
1216
+ <xs:attributeGroup ref="attrs"/>
1217
+ </xs:extension>
1218
+ </xs:complexContent>
1219
+ </xs:complexType>
1220
+ </xs:element>
1221
+
1222
+ <xs:element name="dfn">
1223
+ <xs:annotation>
1224
+ <xs:documentation>
1225
+ definitional
1226
+ </xs:documentation>
1227
+ </xs:annotation>
1228
+ <xs:complexType mixed="true">
1229
+ <xs:complexContent>
1230
+ <xs:extension base="Inline">
1231
+ <xs:attributeGroup ref="attrs"/>
1232
+ </xs:extension>
1233
+ </xs:complexContent>
1234
+ </xs:complexType>
1235
+ </xs:element>
1236
+
1237
+ <xs:element name="code">
1238
+ <xs:annotation>
1239
+ <xs:documentation>
1240
+ program code
1241
+ </xs:documentation>
1242
+ </xs:annotation>
1243
+ <xs:complexType mixed="true">
1244
+ <xs:complexContent>
1245
+ <xs:extension base="Inline">
1246
+ <xs:attributeGroup ref="attrs"/>
1247
+ </xs:extension>
1248
+ </xs:complexContent>
1249
+ </xs:complexType>
1250
+ </xs:element>
1251
+
1252
+ <xs:element name="samp">
1253
+ <xs:annotation>
1254
+ <xs:documentation>
1255
+ sample
1256
+ </xs:documentation>
1257
+ </xs:annotation>
1258
+ <xs:complexType mixed="true">
1259
+ <xs:complexContent>
1260
+ <xs:extension base="Inline">
1261
+ <xs:attributeGroup ref="attrs"/>
1262
+ </xs:extension>
1263
+ </xs:complexContent>
1264
+ </xs:complexType>
1265
+ </xs:element>
1266
+
1267
+ <xs:element name="kbd">
1268
+ <xs:annotation>
1269
+ <xs:documentation>
1270
+ something user would type
1271
+ </xs:documentation>
1272
+ </xs:annotation>
1273
+ <xs:complexType mixed="true">
1274
+ <xs:complexContent>
1275
+ <xs:extension base="Inline">
1276
+ <xs:attributeGroup ref="attrs"/>
1277
+ </xs:extension>
1278
+ </xs:complexContent>
1279
+ </xs:complexType>
1280
+ </xs:element>
1281
+
1282
+ <xs:element name="var">
1283
+ <xs:annotation>
1284
+ <xs:documentation>
1285
+ variable
1286
+ </xs:documentation>
1287
+ </xs:annotation>
1288
+ <xs:complexType mixed="true">
1289
+ <xs:complexContent>
1290
+ <xs:extension base="Inline">
1291
+ <xs:attributeGroup ref="attrs"/>
1292
+ </xs:extension>
1293
+ </xs:complexContent>
1294
+ </xs:complexType>
1295
+ </xs:element>
1296
+
1297
+ <xs:element name="cite">
1298
+ <xs:annotation>
1299
+ <xs:documentation>
1300
+ citation
1301
+ </xs:documentation>
1302
+ </xs:annotation>
1303
+ <xs:complexType mixed="true">
1304
+ <xs:complexContent>
1305
+ <xs:extension base="Inline">
1306
+ <xs:attributeGroup ref="attrs"/>
1307
+ </xs:extension>
1308
+ </xs:complexContent>
1309
+ </xs:complexType>
1310
+ </xs:element>
1311
+
1312
+ <xs:element name="abbr">
1313
+ <xs:annotation>
1314
+ <xs:documentation>
1315
+ abbreviation
1316
+ </xs:documentation>
1317
+ </xs:annotation>
1318
+ <xs:complexType mixed="true">
1319
+ <xs:complexContent>
1320
+ <xs:extension base="Inline">
1321
+ <xs:attributeGroup ref="attrs"/>
1322
+ </xs:extension>
1323
+ </xs:complexContent>
1324
+ </xs:complexType>
1325
+ </xs:element>
1326
+
1327
+ <xs:element name="acronym">
1328
+ <xs:annotation>
1329
+ <xs:documentation>
1330
+ acronym
1331
+ </xs:documentation>
1332
+ </xs:annotation>
1333
+ <xs:complexType mixed="true">
1334
+ <xs:complexContent>
1335
+ <xs:extension base="Inline">
1336
+ <xs:attributeGroup ref="attrs"/>
1337
+ </xs:extension>
1338
+ </xs:complexContent>
1339
+ </xs:complexType>
1340
+ </xs:element>
1341
+
1342
+ <xs:element name="q">
1343
+ <xs:annotation>
1344
+ <xs:documentation>
1345
+ inlined quote
1346
+ </xs:documentation>
1347
+ </xs:annotation>
1348
+ <xs:complexType mixed="true">
1349
+ <xs:complexContent>
1350
+ <xs:extension base="Inline">
1351
+ <xs:attributeGroup ref="attrs"/>
1352
+ <xs:attribute name="cite" type="URI"/>
1353
+ </xs:extension>
1354
+ </xs:complexContent>
1355
+ </xs:complexType>
1356
+ </xs:element>
1357
+
1358
+ <xs:element name="sub">
1359
+ <xs:annotation>
1360
+ <xs:documentation>
1361
+ subscript
1362
+ </xs:documentation>
1363
+ </xs:annotation>
1364
+ <xs:complexType mixed="true">
1365
+ <xs:complexContent>
1366
+ <xs:extension base="Inline">
1367
+ <xs:attributeGroup ref="attrs"/>
1368
+ </xs:extension>
1369
+ </xs:complexContent>
1370
+ </xs:complexType>
1371
+ </xs:element>
1372
+
1373
+ <xs:element name="sup">
1374
+ <xs:annotation>
1375
+ <xs:documentation>
1376
+ superscript
1377
+ </xs:documentation>
1378
+ </xs:annotation>
1379
+ <xs:complexType mixed="true">
1380
+ <xs:complexContent>
1381
+ <xs:extension base="Inline">
1382
+ <xs:attributeGroup ref="attrs"/>
1383
+ </xs:extension>
1384
+ </xs:complexContent>
1385
+ </xs:complexType>
1386
+ </xs:element>
1387
+
1388
+ <xs:element name="tt">
1389
+ <xs:annotation>
1390
+ <xs:documentation>
1391
+ fixed pitch font
1392
+ </xs:documentation>
1393
+ </xs:annotation>
1394
+ <xs:complexType mixed="true">
1395
+ <xs:complexContent>
1396
+ <xs:extension base="Inline">
1397
+ <xs:attributeGroup ref="attrs"/>
1398
+ </xs:extension>
1399
+ </xs:complexContent>
1400
+ </xs:complexType>
1401
+ </xs:element>
1402
+
1403
+ <xs:element name="i">
1404
+ <xs:annotation>
1405
+ <xs:documentation>
1406
+ italic font
1407
+ </xs:documentation>
1408
+ </xs:annotation>
1409
+ <xs:complexType mixed="true">
1410
+ <xs:complexContent>
1411
+ <xs:extension base="Inline">
1412
+ <xs:attributeGroup ref="attrs"/>
1413
+ </xs:extension>
1414
+ </xs:complexContent>
1415
+ </xs:complexType>
1416
+ </xs:element>
1417
+
1418
+ <xs:element name="b">
1419
+ <xs:annotation>
1420
+ <xs:documentation>
1421
+ bold font
1422
+ </xs:documentation>
1423
+ </xs:annotation>
1424
+ <xs:complexType mixed="true">
1425
+ <xs:complexContent>
1426
+ <xs:extension base="Inline">
1427
+ <xs:attributeGroup ref="attrs"/>
1428
+ </xs:extension>
1429
+ </xs:complexContent>
1430
+ </xs:complexType>
1431
+ </xs:element>
1432
+
1433
+ <xs:element name="big">
1434
+ <xs:annotation>
1435
+ <xs:documentation>
1436
+ bigger font
1437
+ </xs:documentation>
1438
+ </xs:annotation>
1439
+ <xs:complexType mixed="true">
1440
+ <xs:complexContent>
1441
+ <xs:extension base="Inline">
1442
+ <xs:attributeGroup ref="attrs"/>
1443
+ </xs:extension>
1444
+ </xs:complexContent>
1445
+ </xs:complexType>
1446
+ </xs:element>
1447
+
1448
+ <xs:element name="small">
1449
+ <xs:annotation>
1450
+ <xs:documentation>
1451
+ smaller font
1452
+ </xs:documentation>
1453
+ </xs:annotation>
1454
+ <xs:complexType mixed="true">
1455
+ <xs:complexContent>
1456
+ <xs:extension base="Inline">
1457
+ <xs:attributeGroup ref="attrs"/>
1458
+ </xs:extension>
1459
+ </xs:complexContent>
1460
+ </xs:complexType>
1461
+ </xs:element>
1462
+
1463
+ <xs:annotation>
1464
+ <xs:documentation>
1465
+ ==================== Object ======================================
1466
+
1467
+ object is used to embed objects as part of HTML pages.
1468
+ param elements should precede other content. Parameters
1469
+ can also be expressed as attribute/value pairs on the
1470
+ object element itself when brevity is desired.
1471
+ </xs:documentation>
1472
+ </xs:annotation>
1473
+
1474
+ <xs:element name="object">
1475
+ <xs:complexType mixed="true">
1476
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
1477
+ <xs:element ref="param"/>
1478
+ <xs:group ref="block"/>
1479
+ <xs:element ref="form"/>
1480
+ <xs:group ref="inline"/>
1481
+ <xs:group ref="misc"/>
1482
+ </xs:choice>
1483
+ <xs:attributeGroup ref="attrs"/>
1484
+ <xs:attribute name="declare">
1485
+ <xs:simpleType>
1486
+ <xs:restriction base="xs:token">
1487
+ <xs:enumeration value="declare"/>
1488
+ </xs:restriction>
1489
+ </xs:simpleType>
1490
+ </xs:attribute>
1491
+ <xs:attribute name="classid" type="URI"/>
1492
+ <xs:attribute name="codebase" type="URI"/>
1493
+ <xs:attribute name="data" type="URI"/>
1494
+ <xs:attribute name="type" type="ContentType"/>
1495
+ <xs:attribute name="codetype" type="ContentType"/>
1496
+ <xs:attribute name="archive" type="UriList"/>
1497
+ <xs:attribute name="standby" type="Text"/>
1498
+ <xs:attribute name="height" type="Length"/>
1499
+ <xs:attribute name="width" type="Length"/>
1500
+ <xs:attribute name="usemap" type="URI"/>
1501
+ <xs:attribute name="name" type="xs:NMTOKEN"/>
1502
+ <xs:attribute name="tabindex" type="tabindexNumber"/>
1503
+ </xs:complexType>
1504
+ </xs:element>
1505
+
1506
+ <xs:element name="param">
1507
+ <xs:annotation>
1508
+ <xs:documentation>
1509
+ param is used to supply a named property value.
1510
+ In XML it would seem natural to follow RDF and support an
1511
+ abbreviated syntax where the param elements are replaced
1512
+ by attribute value pairs on the object start tag.
1513
+ </xs:documentation>
1514
+ </xs:annotation>
1515
+ <xs:complexType>
1516
+ <xs:attribute name="id" type="xs:ID"/>
1517
+ <xs:attribute name="name"/>
1518
+ <xs:attribute name="value"/>
1519
+ <xs:attribute name="valuetype" default="data">
1520
+ <xs:simpleType>
1521
+ <xs:restriction base="xs:token">
1522
+ <xs:enumeration value="data"/>
1523
+ <xs:enumeration value="ref"/>
1524
+ <xs:enumeration value="object"/>
1525
+ </xs:restriction>
1526
+ </xs:simpleType>
1527
+ </xs:attribute>
1528
+ <xs:attribute name="type" type="ContentType"/>
1529
+ </xs:complexType>
1530
+ </xs:element>
1531
+
1532
+ <xs:annotation>
1533
+ <xs:documentation>
1534
+ =================== Images ===========================================
1535
+
1536
+ To avoid accessibility problems for people who aren't
1537
+ able to see the image, you should provide a text
1538
+ description using the alt and longdesc attributes.
1539
+ In addition, avoid the use of server-side image maps.
1540
+ Note that in this DTD there is no name attribute. That
1541
+ is only available in the transitional and frameset DTD.
1542
+ </xs:documentation>
1543
+ </xs:annotation>
1544
+
1545
+ <xs:element name="img">
1546
+ <xs:complexType>
1547
+ <xs:attributeGroup ref="attrs"/>
1548
+ <xs:attribute name="src" use="required" type="URI"/>
1549
+ <xs:attribute name="alt" use="required" type="Text"/>
1550
+ <xs:attribute name="longdesc" type="URI"/>
1551
+ <xs:attribute name="height" type="Length"/>
1552
+ <xs:attribute name="width" type="Length"/>
1553
+ <xs:attribute name="usemap" type="URI">
1554
+ <xs:annotation>
1555
+ <xs:documentation>
1556
+ usemap points to a map element which may be in this document
1557
+ or an external document, although the latter is not widely supported
1558
+ </xs:documentation>
1559
+ </xs:annotation>
1560
+ </xs:attribute>
1561
+ <xs:attribute name="ismap">
1562
+ <xs:simpleType>
1563
+ <xs:restriction base="xs:token">
1564
+ <xs:enumeration value="ismap"/>
1565
+ </xs:restriction>
1566
+ </xs:simpleType>
1567
+ </xs:attribute>
1568
+ </xs:complexType>
1569
+ </xs:element>
1570
+
1571
+ <xs:annotation>
1572
+ <xs:documentation>
1573
+ ================== Client-side image maps ============================
1574
+
1575
+ These can be placed in the same document or grouped in a
1576
+ separate document although this isn't yet widely supported
1577
+ </xs:documentation>
1578
+ </xs:annotation>
1579
+
1580
+ <xs:element name="map">
1581
+ <xs:complexType>
1582
+ <xs:choice>
1583
+ <xs:choice maxOccurs="unbounded">
1584
+ <xs:group ref="block"/>
1585
+ <xs:element ref="form"/>
1586
+ <xs:group ref="misc"/>
1587
+ </xs:choice>
1588
+ <xs:element maxOccurs="unbounded" ref="area"/>
1589
+ </xs:choice>
1590
+ <xs:attributeGroup ref="i18n"/>
1591
+ <xs:attributeGroup ref="events"/>
1592
+ <xs:attribute name="id" use="required" type="xs:ID"/>
1593
+ <xs:attribute name="class"/>
1594
+ <xs:attribute name="style" type="StyleSheet"/>
1595
+ <xs:attribute name="title" type="Text"/>
1596
+ <xs:attribute name="name" type="xs:NMTOKEN"/>
1597
+ </xs:complexType>
1598
+ </xs:element>
1599
+
1600
+ <xs:element name="area">
1601
+ <xs:complexType>
1602
+ <xs:attributeGroup ref="attrs"/>
1603
+ <xs:attributeGroup ref="focus"/>
1604
+ <xs:attribute name="shape" default="rect" type="Shape"/>
1605
+ <xs:attribute name="coords" type="Coords"/>
1606
+ <xs:attribute name="href" type="URI"/>
1607
+ <xs:attribute name="nohref">
1608
+ <xs:simpleType>
1609
+ <xs:restriction base="xs:token">
1610
+ <xs:enumeration value="nohref"/>
1611
+ </xs:restriction>
1612
+ </xs:simpleType>
1613
+ </xs:attribute>
1614
+ <xs:attribute name="alt" use="required" type="Text"/>
1615
+ </xs:complexType>
1616
+ </xs:element>
1617
+
1618
+ <xs:annotation>
1619
+ <xs:documentation>
1620
+ ================ Forms ===============================================
1621
+ </xs:documentation>
1622
+ </xs:annotation>
1623
+
1624
+ <xs:element name="form">
1625
+ <xs:complexType>
1626
+ <xs:complexContent>
1627
+ <xs:extension base="form.content">
1628
+ <xs:attributeGroup ref="attrs"/>
1629
+ <xs:attribute name="action" use="required" type="URI"/>
1630
+ <xs:attribute name="method" default="get">
1631
+ <xs:simpleType>
1632
+ <xs:restriction base="xs:token">
1633
+ <xs:enumeration value="get"/>
1634
+ <xs:enumeration value="post"/>
1635
+ </xs:restriction>
1636
+ </xs:simpleType>
1637
+ </xs:attribute>
1638
+ <xs:attribute name="enctype" type="ContentType"
1639
+ default="application/x-www-form-urlencoded"/>
1640
+ <xs:attribute name="onsubmit" type="Script"/>
1641
+ <xs:attribute name="onreset" type="Script"/>
1642
+ <xs:attribute name="accept" type="ContentTypes"/>
1643
+ <xs:attribute name="accept-charset" type="Charsets"/>
1644
+ </xs:extension>
1645
+ </xs:complexContent>
1646
+ </xs:complexType>
1647
+ </xs:element>
1648
+
1649
+ <xs:element name="label">
1650
+ <xs:annotation>
1651
+ <xs:documentation>
1652
+ Each label must not contain more than ONE field
1653
+ Label elements shouldn't be nested.
1654
+ </xs:documentation>
1655
+ </xs:annotation>
1656
+ <xs:complexType mixed="true">
1657
+ <xs:complexContent>
1658
+ <xs:extension base="Inline">
1659
+ <xs:attributeGroup ref="attrs"/>
1660
+ <xs:attribute name="for" type="xs:IDREF"/>
1661
+ <xs:attribute name="accesskey" type="Character"/>
1662
+ <xs:attribute name="onfocus" type="Script"/>
1663
+ <xs:attribute name="onblur" type="Script"/>
1664
+ </xs:extension>
1665
+ </xs:complexContent>
1666
+ </xs:complexType>
1667
+ </xs:element>
1668
+
1669
+ <xs:simpleType name="InputType">
1670
+ <xs:restriction base="xs:token">
1671
+ <xs:enumeration value="text"/>
1672
+ <xs:enumeration value="password"/>
1673
+ <xs:enumeration value="checkbox"/>
1674
+ <xs:enumeration value="radio"/>
1675
+ <xs:enumeration value="submit"/>
1676
+ <xs:enumeration value="reset"/>
1677
+ <xs:enumeration value="file"/>
1678
+ <xs:enumeration value="hidden"/>
1679
+ <xs:enumeration value="image"/>
1680
+ <xs:enumeration value="button"/>
1681
+ </xs:restriction>
1682
+ </xs:simpleType>
1683
+
1684
+ <xs:element name="input">
1685
+ <xs:annotation>
1686
+ <xs:documentation>
1687
+ form control
1688
+ </xs:documentation>
1689
+ </xs:annotation>
1690
+ <xs:complexType>
1691
+ <xs:attributeGroup ref="attrs"/>
1692
+ <xs:attributeGroup ref="focus"/>
1693
+ <xs:attribute name="type" default="text" type="InputType"/>
1694
+ <xs:attribute name="name">
1695
+ <xs:annotation>
1696
+ <xs:documentation>
1697
+ the name attribute is required for all but submit &amp; reset
1698
+ </xs:documentation>
1699
+ </xs:annotation>
1700
+ </xs:attribute>
1701
+ <xs:attribute name="value"/>
1702
+ <xs:attribute name="checked">
1703
+ <xs:simpleType>
1704
+ <xs:restriction base="xs:token">
1705
+ <xs:enumeration value="checked"/>
1706
+ </xs:restriction>
1707
+ </xs:simpleType>
1708
+ </xs:attribute>
1709
+ <xs:attribute name="disabled">
1710
+ <xs:simpleType>
1711
+ <xs:restriction base="xs:token">
1712
+ <xs:enumeration value="disabled"/>
1713
+ </xs:restriction>
1714
+ </xs:simpleType>
1715
+ </xs:attribute>
1716
+ <xs:attribute name="readonly">
1717
+ <xs:simpleType>
1718
+ <xs:restriction base="xs:token">
1719
+ <xs:enumeration value="readonly"/>
1720
+ </xs:restriction>
1721
+ </xs:simpleType>
1722
+ </xs:attribute>
1723
+ <xs:attribute name="size"/>
1724
+ <xs:attribute name="maxlength" type="Number"/>
1725
+ <xs:attribute name="src" type="URI"/>
1726
+ <xs:attribute name="alt"/>
1727
+ <xs:attribute name="usemap" type="URI"/>
1728
+ <xs:attribute name="onselect" type="Script"/>
1729
+ <xs:attribute name="onchange" type="Script"/>
1730
+ <xs:attribute name="accept" type="ContentTypes"/>
1731
+ </xs:complexType>
1732
+ </xs:element>
1733
+
1734
+ <xs:element name="select">
1735
+ <xs:annotation>
1736
+ <xs:documentation>
1737
+ option selector
1738
+ </xs:documentation>
1739
+ </xs:annotation>
1740
+ <xs:complexType>
1741
+ <xs:choice maxOccurs="unbounded">
1742
+ <xs:element ref="optgroup"/>
1743
+ <xs:element ref="option"/>
1744
+ </xs:choice>
1745
+ <xs:attributeGroup ref="attrs"/>
1746
+ <xs:attribute name="name"/>
1747
+ <xs:attribute name="size" type="Number"/>
1748
+ <xs:attribute name="multiple">
1749
+ <xs:simpleType>
1750
+ <xs:restriction base="xs:token">
1751
+ <xs:enumeration value="multiple"/>
1752
+ </xs:restriction>
1753
+ </xs:simpleType>
1754
+ </xs:attribute>
1755
+ <xs:attribute name="disabled">
1756
+ <xs:simpleType>
1757
+ <xs:restriction base="xs:token">
1758
+ <xs:enumeration value="disabled"/>
1759
+ </xs:restriction>
1760
+ </xs:simpleType>
1761
+ </xs:attribute>
1762
+ <xs:attribute name="tabindex" type="tabindexNumber"/>
1763
+ <xs:attribute name="onfocus" type="Script"/>
1764
+ <xs:attribute name="onblur" type="Script"/>
1765
+ <xs:attribute name="onchange" type="Script"/>
1766
+ </xs:complexType>
1767
+ </xs:element>
1768
+
1769
+ <xs:element name="optgroup">
1770
+ <xs:annotation>
1771
+ <xs:documentation>
1772
+ option group
1773
+ </xs:documentation>
1774
+ </xs:annotation>
1775
+ <xs:complexType>
1776
+ <xs:sequence>
1777
+ <xs:element maxOccurs="unbounded" ref="option"/>
1778
+ </xs:sequence>
1779
+ <xs:attributeGroup ref="attrs"/>
1780
+ <xs:attribute name="disabled">
1781
+ <xs:simpleType>
1782
+ <xs:restriction base="xs:token">
1783
+ <xs:enumeration value="disabled"/>
1784
+ </xs:restriction>
1785
+ </xs:simpleType>
1786
+ </xs:attribute>
1787
+ <xs:attribute name="label" use="required" type="Text"/>
1788
+ </xs:complexType>
1789
+ </xs:element>
1790
+
1791
+ <xs:element name="option">
1792
+ <xs:annotation>
1793
+ <xs:documentation>
1794
+ selectable choice
1795
+ </xs:documentation>
1796
+ </xs:annotation>
1797
+ <xs:complexType mixed="true">
1798
+ <xs:attributeGroup ref="attrs"/>
1799
+ <xs:attribute name="selected">
1800
+ <xs:simpleType>
1801
+ <xs:restriction base="xs:token">
1802
+ <xs:enumeration value="selected"/>
1803
+ </xs:restriction>
1804
+ </xs:simpleType>
1805
+ </xs:attribute>
1806
+ <xs:attribute name="disabled">
1807
+ <xs:simpleType>
1808
+ <xs:restriction base="xs:token">
1809
+ <xs:enumeration value="disabled"/>
1810
+ </xs:restriction>
1811
+ </xs:simpleType>
1812
+ </xs:attribute>
1813
+ <xs:attribute name="label" type="Text"/>
1814
+ <xs:attribute name="value"/>
1815
+ </xs:complexType>
1816
+ </xs:element>
1817
+
1818
+ <xs:element name="textarea">
1819
+ <xs:annotation>
1820
+ <xs:documentation>
1821
+ multi-line text field
1822
+ </xs:documentation>
1823
+ </xs:annotation>
1824
+ <xs:complexType mixed="true">
1825
+ <xs:attributeGroup ref="attrs"/>
1826
+ <xs:attributeGroup ref="focus"/>
1827
+ <xs:attribute name="name"/>
1828
+ <xs:attribute name="rows" use="required" type="Number"/>
1829
+ <xs:attribute name="cols" use="required" type="Number"/>
1830
+ <xs:attribute name="disabled">
1831
+ <xs:simpleType>
1832
+ <xs:restriction base="xs:token">
1833
+ <xs:enumeration value="disabled"/>
1834
+ </xs:restriction>
1835
+ </xs:simpleType>
1836
+ </xs:attribute>
1837
+ <xs:attribute name="readonly">
1838
+ <xs:simpleType>
1839
+ <xs:restriction base="xs:token">
1840
+ <xs:enumeration value="readonly"/>
1841
+ </xs:restriction>
1842
+ </xs:simpleType>
1843
+ </xs:attribute>
1844
+ <xs:attribute name="onselect" type="Script"/>
1845
+ <xs:attribute name="onchange" type="Script"/>
1846
+ </xs:complexType>
1847
+ </xs:element>
1848
+
1849
+ <xs:element name="fieldset">
1850
+ <xs:annotation>
1851
+ <xs:documentation>
1852
+ The fieldset element is used to group form fields.
1853
+ Only one legend element should occur in the content
1854
+ and if present should only be preceded by whitespace.
1855
+
1856
+ NOTE: this content model is different from the XHTML 1.0 DTD,
1857
+ closer to the intended content model in HTML4 DTD
1858
+ </xs:documentation>
1859
+ </xs:annotation>
1860
+ <xs:complexType mixed="true">
1861
+ <xs:sequence>
1862
+ <xs:element ref="legend"/>
1863
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
1864
+ <xs:group ref="block"/>
1865
+ <xs:element ref="form"/>
1866
+ <xs:group ref="inline"/>
1867
+ <xs:group ref="misc"/>
1868
+ </xs:choice>
1869
+ </xs:sequence>
1870
+ <xs:attributeGroup ref="attrs"/>
1871
+ </xs:complexType>
1872
+ </xs:element>
1873
+
1874
+ <xs:element name="legend">
1875
+ <xs:annotation>
1876
+ <xs:documentation>
1877
+ fieldset label
1878
+ </xs:documentation>
1879
+ </xs:annotation>
1880
+ <xs:complexType mixed="true">
1881
+ <xs:complexContent>
1882
+ <xs:extension base="Inline">
1883
+ <xs:attributeGroup ref="attrs"/>
1884
+ <xs:attribute name="accesskey" type="Character"/>
1885
+ </xs:extension>
1886
+ </xs:complexContent>
1887
+ </xs:complexType>
1888
+ </xs:element>
1889
+
1890
+ <xs:element name="button">
1891
+ <xs:annotation>
1892
+ <xs:documentation>
1893
+ Content is "Flow" excluding a, form and form controls
1894
+ </xs:documentation>
1895
+ </xs:annotation>
1896
+ <xs:complexType mixed="true">
1897
+ <xs:complexContent>
1898
+ <xs:extension base="button.content">
1899
+ <xs:attributeGroup ref="attrs"/>
1900
+ <xs:attributeGroup ref="focus"/>
1901
+ <xs:attribute name="name"/>
1902
+ <xs:attribute name="value"/>
1903
+ <xs:attribute name="type" default="submit">
1904
+ <xs:simpleType>
1905
+ <xs:restriction base="xs:token">
1906
+ <xs:enumeration value="button"/>
1907
+ <xs:enumeration value="submit"/>
1908
+ <xs:enumeration value="reset"/>
1909
+ </xs:restriction>
1910
+ </xs:simpleType>
1911
+ </xs:attribute>
1912
+ <xs:attribute name="disabled">
1913
+ <xs:simpleType>
1914
+ <xs:restriction base="xs:token">
1915
+ <xs:enumeration value="disabled"/>
1916
+ </xs:restriction>
1917
+ </xs:simpleType>
1918
+ </xs:attribute>
1919
+ </xs:extension>
1920
+ </xs:complexContent>
1921
+ </xs:complexType>
1922
+ </xs:element>
1923
+
1924
+ <xs:annotation>
1925
+ <xs:documentation>
1926
+ ======================= Tables =======================================
1927
+
1928
+ Derived from IETF HTML table standard, see [RFC1942]
1929
+ </xs:documentation>
1930
+ </xs:annotation>
1931
+
1932
+ <xs:simpleType name="TFrame">
1933
+ <xs:annotation>
1934
+ <xs:documentation>
1935
+ The border attribute sets the thickness of the frame around the
1936
+ table. The default units are screen pixels.
1937
+
1938
+ The frame attribute specifies which parts of the frame around
1939
+ the table should be rendered. The values are not the same as
1940
+ CALS to avoid a name clash with the valign attribute.
1941
+ </xs:documentation>
1942
+ </xs:annotation>
1943
+ <xs:restriction base="xs:token">
1944
+ <xs:enumeration value="void"/>
1945
+ <xs:enumeration value="above"/>
1946
+ <xs:enumeration value="below"/>
1947
+ <xs:enumeration value="hsides"/>
1948
+ <xs:enumeration value="lhs"/>
1949
+ <xs:enumeration value="rhs"/>
1950
+ <xs:enumeration value="vsides"/>
1951
+ <xs:enumeration value="box"/>
1952
+ <xs:enumeration value="border"/>
1953
+ </xs:restriction>
1954
+ </xs:simpleType>
1955
+
1956
+ <xs:simpleType name="TRules">
1957
+ <xs:annotation>
1958
+ <xs:documentation>
1959
+ The rules attribute defines which rules to draw between cells:
1960
+
1961
+ If rules is absent then assume:
1962
+ "none" if border is absent or border="0" otherwise "all"
1963
+ </xs:documentation>
1964
+ </xs:annotation>
1965
+ <xs:restriction base="xs:token">
1966
+ <xs:enumeration value="none"/>
1967
+ <xs:enumeration value="groups"/>
1968
+ <xs:enumeration value="rows"/>
1969
+ <xs:enumeration value="cols"/>
1970
+ <xs:enumeration value="all"/>
1971
+ </xs:restriction>
1972
+ </xs:simpleType>
1973
+
1974
+ <xs:attributeGroup name="cellhalign">
1975
+ <xs:annotation>
1976
+ <xs:documentation>
1977
+ horizontal alignment attributes for cell contents
1978
+
1979
+ char alignment char, e.g. char=':'
1980
+ charoff offset for alignment char
1981
+ </xs:documentation>
1982
+ </xs:annotation>
1983
+ <xs:attribute name="align">
1984
+ <xs:simpleType>
1985
+ <xs:restriction base="xs:token">
1986
+ <xs:enumeration value="left"/>
1987
+ <xs:enumeration value="center"/>
1988
+ <xs:enumeration value="right"/>
1989
+ <xs:enumeration value="justify"/>
1990
+ <xs:enumeration value="char"/>
1991
+ </xs:restriction>
1992
+ </xs:simpleType>
1993
+ </xs:attribute>
1994
+ <xs:attribute name="char" type="Character"/>
1995
+ <xs:attribute name="charoff" type="Length"/>
1996
+ </xs:attributeGroup>
1997
+
1998
+ <xs:attributeGroup name="cellvalign">
1999
+ <xs:annotation>
2000
+ <xs:documentation>
2001
+ vertical alignment attributes for cell contents
2002
+ </xs:documentation>
2003
+ </xs:annotation>
2004
+ <xs:attribute name="valign">
2005
+ <xs:simpleType>
2006
+ <xs:restriction base="xs:token">
2007
+ <xs:enumeration value="top"/>
2008
+ <xs:enumeration value="middle"/>
2009
+ <xs:enumeration value="bottom"/>
2010
+ <xs:enumeration value="baseline"/>
2011
+ </xs:restriction>
2012
+ </xs:simpleType>
2013
+ </xs:attribute>
2014
+ </xs:attributeGroup>
2015
+
2016
+ <xs:element name="table">
2017
+ <xs:complexType>
2018
+ <xs:sequence>
2019
+ <xs:element minOccurs="0" ref="caption"/>
2020
+ <xs:choice>
2021
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
2022
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="colgroup"/>
2023
+ </xs:choice>
2024
+ <xs:element minOccurs="0" ref="thead"/>
2025
+ <xs:element minOccurs="0" ref="tfoot"/>
2026
+ <xs:choice>
2027
+ <xs:element maxOccurs="unbounded" ref="tbody"/>
2028
+ <xs:element maxOccurs="unbounded" ref="tr"/>
2029
+ </xs:choice>
2030
+ </xs:sequence>
2031
+ <xs:attributeGroup ref="attrs"/>
2032
+ <xs:attribute name="summary" type="Text"/>
2033
+ <xs:attribute name="width" type="Length"/>
2034
+ <xs:attribute name="border" type="Pixels"/>
2035
+ <xs:attribute name="frame" type="TFrame"/>
2036
+ <xs:attribute name="rules" type="TRules"/>
2037
+ <xs:attribute name="cellspacing" type="Length"/>
2038
+ <xs:attribute name="cellpadding" type="Length"/>
2039
+ </xs:complexType>
2040
+ </xs:element>
2041
+
2042
+ <xs:element name="caption">
2043
+ <xs:complexType mixed="true">
2044
+ <xs:complexContent>
2045
+ <xs:extension base="Inline">
2046
+ <xs:attributeGroup ref="attrs"/>
2047
+ </xs:extension>
2048
+ </xs:complexContent>
2049
+ </xs:complexType>
2050
+ </xs:element>
2051
+
2052
+ <xs:annotation>
2053
+ <xs:documentation>
2054
+ Use thead to duplicate headers when breaking table
2055
+ across page boundaries, or for static headers when
2056
+ tbody sections are rendered in scrolling panel.
2057
+
2058
+ Use tfoot to duplicate footers when breaking table
2059
+ across page boundaries, or for static footers when
2060
+ tbody sections are rendered in scrolling panel.
2061
+
2062
+ Use multiple tbody sections when rules are needed
2063
+ between groups of table rows.
2064
+ </xs:documentation>
2065
+ </xs:annotation>
2066
+
2067
+ <xs:element name="thead">
2068
+ <xs:complexType>
2069
+ <xs:sequence>
2070
+ <xs:element maxOccurs="unbounded" ref="tr"/>
2071
+ </xs:sequence>
2072
+ <xs:attributeGroup ref="attrs"/>
2073
+ <xs:attributeGroup ref="cellhalign"/>
2074
+ <xs:attributeGroup ref="cellvalign"/>
2075
+ </xs:complexType>
2076
+ </xs:element>
2077
+
2078
+ <xs:element name="tfoot">
2079
+ <xs:complexType>
2080
+ <xs:sequence>
2081
+ <xs:element maxOccurs="unbounded" ref="tr"/>
2082
+ </xs:sequence>
2083
+ <xs:attributeGroup ref="attrs"/>
2084
+ <xs:attributeGroup ref="cellhalign"/>
2085
+ <xs:attributeGroup ref="cellvalign"/>
2086
+ </xs:complexType>
2087
+ </xs:element>
2088
+
2089
+ <xs:element name="tbody">
2090
+ <xs:complexType>
2091
+ <xs:sequence>
2092
+ <xs:element maxOccurs="unbounded" ref="tr"/>
2093
+ </xs:sequence>
2094
+ <xs:attributeGroup ref="attrs"/>
2095
+ <xs:attributeGroup ref="cellhalign"/>
2096
+ <xs:attributeGroup ref="cellvalign"/>
2097
+ </xs:complexType>
2098
+ </xs:element>
2099
+
2100
+ <xs:element name="colgroup">
2101
+ <xs:annotation>
2102
+ <xs:documentation>
2103
+ colgroup groups a set of col elements. It allows you to group
2104
+ several semantically related columns together.
2105
+ </xs:documentation>
2106
+ </xs:annotation>
2107
+ <xs:complexType>
2108
+ <xs:sequence>
2109
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="col"/>
2110
+ </xs:sequence>
2111
+ <xs:attributeGroup ref="attrs"/>
2112
+ <xs:attribute name="span" default="1" type="Number"/>
2113
+ <xs:attribute name="width" type="MultiLength"/>
2114
+ <xs:attributeGroup ref="cellhalign"/>
2115
+ <xs:attributeGroup ref="cellvalign"/>
2116
+ </xs:complexType>
2117
+ </xs:element>
2118
+
2119
+ <xs:element name="col">
2120
+ <xs:annotation>
2121
+ <xs:documentation>
2122
+ col elements define the alignment properties for cells in
2123
+ one or more columns.
2124
+
2125
+ The width attribute specifies the width of the columns, e.g.
2126
+
2127
+ width=64 width in screen pixels
2128
+ width=0.5* relative width of 0.5
2129
+
2130
+ The span attribute causes the attributes of one
2131
+ col element to apply to more than one column.
2132
+ </xs:documentation>
2133
+ </xs:annotation>
2134
+ <xs:complexType>
2135
+ <xs:attributeGroup ref="attrs"/>
2136
+ <xs:attribute name="span" default="1" type="Number"/>
2137
+ <xs:attribute name="width" type="MultiLength"/>
2138
+ <xs:attributeGroup ref="cellhalign"/>
2139
+ <xs:attributeGroup ref="cellvalign"/>
2140
+ </xs:complexType>
2141
+ </xs:element>
2142
+
2143
+ <xs:element name="tr">
2144
+ <xs:complexType>
2145
+ <xs:choice maxOccurs="unbounded">
2146
+ <xs:element ref="th"/>
2147
+ <xs:element ref="td"/>
2148
+ </xs:choice>
2149
+ <xs:attributeGroup ref="attrs"/>
2150
+ <xs:attributeGroup ref="cellhalign"/>
2151
+ <xs:attributeGroup ref="cellvalign"/>
2152
+ </xs:complexType>
2153
+ </xs:element>
2154
+
2155
+ <xs:simpleType name="Scope">
2156
+ <xs:annotation>
2157
+ <xs:documentation>
2158
+ Scope is simpler than headers attribute for common tables
2159
+ </xs:documentation>
2160
+ </xs:annotation>
2161
+ <xs:restriction base="xs:token">
2162
+ <xs:enumeration value="row"/>
2163
+ <xs:enumeration value="col"/>
2164
+ <xs:enumeration value="rowgroup"/>
2165
+ <xs:enumeration value="colgroup"/>
2166
+ </xs:restriction>
2167
+ </xs:simpleType>
2168
+
2169
+ <xs:annotation>
2170
+ <xs:documentation>
2171
+ th is for headers, td for data and for cells acting as both
2172
+ </xs:documentation>
2173
+ </xs:annotation>
2174
+
2175
+ <xs:element name="th">
2176
+ <xs:complexType mixed="true">
2177
+ <xs:complexContent>
2178
+ <xs:extension base="Flow">
2179
+ <xs:attributeGroup ref="attrs"/>
2180
+ <xs:attribute name="abbr" type="Text"/>
2181
+ <xs:attribute name="axis"/>
2182
+ <xs:attribute name="headers" type="xs:IDREFS"/>
2183
+ <xs:attribute name="scope" type="Scope"/>
2184
+ <xs:attribute name="rowspan" default="1" type="Number"/>
2185
+ <xs:attribute name="colspan" default="1" type="Number"/>
2186
+ <xs:attributeGroup ref="cellhalign"/>
2187
+ <xs:attributeGroup ref="cellvalign"/>
2188
+ </xs:extension>
2189
+ </xs:complexContent>
2190
+ </xs:complexType>
2191
+ </xs:element>
2192
+
2193
+ <xs:element name="td">
2194
+ <xs:complexType mixed="true">
2195
+ <xs:complexContent>
2196
+ <xs:extension base="Flow">
2197
+ <xs:attributeGroup ref="attrs"/>
2198
+ <xs:attribute name="abbr" type="Text"/>
2199
+ <xs:attribute name="axis"/>
2200
+ <xs:attribute name="headers" type="xs:IDREFS"/>
2201
+ <xs:attribute name="scope" type="Scope"/>
2202
+ <xs:attribute name="rowspan" default="1" type="Number"/>
2203
+ <xs:attribute name="colspan" default="1" type="Number"/>
2204
+ <xs:attributeGroup ref="cellhalign"/>
2205
+ <xs:attributeGroup ref="cellvalign"/>
2206
+ </xs:extension>
2207
+ </xs:complexContent>
2208
+ </xs:complexType>
2209
+ </xs:element>
2210
+
2211
+ </xs:schema>