camelpunch-markup_validity 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. data/.autotest +23 -0
  2. data/CHANGELOG.rdoc +22 -0
  3. data/Manifest.txt +105 -0
  4. data/README.rdoc +101 -0
  5. data/Rakefile +15 -0
  6. data/lib/markup_validity.rb +12 -0
  7. data/lib/markup_validity/MarkUp.html +1095 -0
  8. data/lib/markup_validity/SCHEMA.html +90 -0
  9. data/lib/markup_validity/assertions.rb +32 -0
  10. data/lib/markup_validity/examples.html +25 -0
  11. data/lib/markup_validity/rspec.rb +77 -0
  12. data/lib/markup_validity/templates.html +15 -0
  13. data/lib/markup_validity/validator.rb +65 -0
  14. data/lib/markup_validity/xframes-1.xsd +166 -0
  15. data/lib/markup_validity/xhtml-access-1.xsd +43 -0
  16. data/lib/markup_validity/xhtml-applet-1.xsd +66 -0
  17. data/lib/markup_validity/xhtml-attribs-1.xsd +67 -0
  18. data/lib/markup_validity/xhtml-base-1.xsd +31 -0
  19. data/lib/markup_validity/xhtml-basic-form-1.xsd +195 -0
  20. data/lib/markup_validity/xhtml-basic-table-1.xsd +169 -0
  21. data/lib/markup_validity/xhtml-basic10-model-1.xsd +385 -0
  22. data/lib/markup_validity/xhtml-basic10-module-redefines-1.xsd +61 -0
  23. data/lib/markup_validity/xhtml-basic10-modules-1.xsd +233 -0
  24. data/lib/markup_validity/xhtml-basic10.xsd +99 -0
  25. data/lib/markup_validity/xhtml-basic11-model-1.xsd +622 -0
  26. data/lib/markup_validity/xhtml-basic11-modules-1.xsd +508 -0
  27. data/lib/markup_validity/xhtml-basic11.xsd +105 -0
  28. data/lib/markup_validity/xhtml-bdo-1.xsd +72 -0
  29. data/lib/markup_validity/xhtml-blkphras-1.xsd +155 -0
  30. data/lib/markup_validity/xhtml-blkpres-1.xsd +32 -0
  31. data/lib/markup_validity/xhtml-blkstruct-1.xsd +44 -0
  32. data/lib/markup_validity/xhtml-charent-1.xsd +38 -0
  33. data/lib/markup_validity/xhtml-copyright-1.xsd +29 -0
  34. data/lib/markup_validity/xhtml-csismap-1.xsd +91 -0
  35. data/lib/markup_validity/xhtml-datatypes-1.xsd +177 -0
  36. data/lib/markup_validity/xhtml-edit-1.xsd +34 -0
  37. data/lib/markup_validity/xhtml-events-1.xsd +130 -0
  38. data/lib/markup_validity/xhtml-form-1.xsd +321 -0
  39. data/lib/markup_validity/xhtml-frames-1.xsd +113 -0
  40. data/lib/markup_validity/xhtml-framework-1.xsd +62 -0
  41. data/lib/markup_validity/xhtml-hypertext-1.xsd +47 -0
  42. data/lib/markup_validity/xhtml-iframe-1.xsd +68 -0
  43. data/lib/markup_validity/xhtml-image-1.xsd +40 -0
  44. data/lib/markup_validity/xhtml-inlphras-1.xsd +158 -0
  45. data/lib/markup_validity/xhtml-inlpres-1.xsd +34 -0
  46. data/lib/markup_validity/xhtml-inlstruct-1.xsd +45 -0
  47. data/lib/markup_validity/xhtml-inlstyle-1.xsd +22 -0
  48. data/lib/markup_validity/xhtml-inputmode-1.xsd +35 -0
  49. data/lib/markup_validity/xhtml-lat1.ent +196 -0
  50. data/lib/markup_validity/xhtml-legacy-1.xsd +97 -0
  51. data/lib/markup_validity/xhtml-link-1.xsd +45 -0
  52. data/lib/markup_validity/xhtml-list-1.xsd +94 -0
  53. data/lib/markup_validity/xhtml-meta-1.xsd +54 -0
  54. data/lib/markup_validity/xhtml-metaAttributes-1.xsd +39 -0
  55. data/lib/markup_validity/xhtml-misc-1.xsd +441 -0
  56. data/lib/markup_validity/xhtml-nameident-1.xsd +63 -0
  57. data/lib/markup_validity/xhtml-notations-1.xsd +69 -0
  58. data/lib/markup_validity/xhtml-object-1.xsd +71 -0
  59. data/lib/markup_validity/xhtml-param-1.xsd +46 -0
  60. data/lib/markup_validity/xhtml-pres-1.xsd +46 -0
  61. data/lib/markup_validity/xhtml-print-1.xsd +85 -0
  62. data/lib/markup_validity/xhtml-print-model-1.xsd +604 -0
  63. data/lib/markup_validity/xhtml-print-modules-1.xsd +422 -0
  64. data/lib/markup_validity/xhtml-rdfa-1.dtd +438 -0
  65. data/lib/markup_validity/xhtml-rdfa-1.xsd +116 -0
  66. data/lib/markup_validity/xhtml-rdfa-model-1.xsd +461 -0
  67. data/lib/markup_validity/xhtml-rdfa-modules-1.xsd +548 -0
  68. data/lib/markup_validity/xhtml-ruby-1.xsd +170 -0
  69. data/lib/markup_validity/xhtml-ruby-basic-1.xsd +84 -0
  70. data/lib/markup_validity/xhtml-script-1.xsd +65 -0
  71. data/lib/markup_validity/xhtml-special.ent +80 -0
  72. data/lib/markup_validity/xhtml-ssismap-1.xsd +38 -0
  73. data/lib/markup_validity/xhtml-struct-1.xsd +85 -0
  74. data/lib/markup_validity/xhtml-style-1.xsd +47 -0
  75. data/lib/markup_validity/xhtml-symbol.ent +237 -0
  76. data/lib/markup_validity/xhtml-table-1.xsd +267 -0
  77. data/lib/markup_validity/xhtml-target-1.xsd +49 -0
  78. data/lib/markup_validity/xhtml-text-1.xsd +62 -0
  79. data/lib/markup_validity/xhtml1-strict.dtd +978 -0
  80. data/lib/markup_validity/xhtml1-strict.xsd +2211 -0
  81. data/lib/markup_validity/xhtml1-transitional.dtd +1201 -0
  82. data/lib/markup_validity/xhtml1-transitional.xsd +2755 -0
  83. data/lib/markup_validity/xhtml11-model-1.xsd +715 -0
  84. data/lib/markup_validity/xhtml11-module-redefines-1.xsd +335 -0
  85. data/lib/markup_validity/xhtml11-modules-1.xsd +605 -0
  86. data/lib/markup_validity/xhtml11.xsd +107 -0
  87. data/lib/markup_validity/xhtml2.xsd +21 -0
  88. data/lib/markup_validity/xml-events-1.xsd +73 -0
  89. data/lib/markup_validity/xml-events-2.xsd +73 -0
  90. data/lib/markup_validity/xml-events-attribs-1.xsd +73 -0
  91. data/lib/markup_validity/xml-events-attribs-2.xsd +75 -0
  92. data/lib/markup_validity/xml-events-copyright-1.xsd +34 -0
  93. data/lib/markup_validity/xml-events-copyright-2.xsd +34 -0
  94. data/lib/markup_validity/xml-handlers-1.xsd +136 -0
  95. data/lib/markup_validity/xml-handlers-2.xsd +98 -0
  96. data/lib/markup_validity/xml-script-1.xsd +38 -0
  97. data/lib/markup_validity/xml.xsd +286 -0
  98. data/spec/matcher_spec.rb +55 -0
  99. data/test/assets/invalid_entity.xhtml +109 -0
  100. data/test/assets/invalid_entity_transitional.xhtml +109 -0
  101. data/test/assets/order.xml +24 -0
  102. data/test/assets/shipment.xsd +33 -0
  103. data/test/helper.rb +96 -0
  104. data/test/test_markup_validity.rb +105 -0
  105. metadata +198 -0
@@ -0,0 +1,90 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <title>Index of /MarkUp/SCHEMA</title>
6
+ </head>
7
+ <body>
8
+ <h1>Index of /MarkUp/SCHEMA</h1>
9
+ <table><tr><th><img src="/icons/blank.gif" alt="[ICO]" width="20" height="22" /></th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr /></th></tr>
10
+ <tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]" width="20" height="22" /></td><td><a href="/MarkUp/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
11
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]" width="20" height="22" /></td><td><a href="templates/">templates/</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right"> - </td></tr>
12
+ <tr><td valign="top"><img src="/icons/folder.gif" alt="[DIR]" width="20" height="22" /></td><td><a href="examples/">examples/</a></td><td align="right">11-Jun-2008 17:26 </td><td align="right"> - </td></tr>
13
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-script-1.xsd">xml-script-1.xsd</a></td><td align="right">25-Jun-2008 14:36 </td><td align="right">1.4K</td></tr>
14
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-handlers-2.xsd">xml-handlers-2.xsd</a></td><td align="right">15-Feb-2007 23:03 </td><td align="right">3.3K</td></tr>
15
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-handlers-1.xsd">xml-handlers-1.xsd</a></td><td align="right">25-Jun-2008 14:36 </td><td align="right">4.8K</td></tr>
16
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-events-copyright-2.xsd">xml-events-copyright-2.xsd</a></td><td align="right">15-Feb-2007 23:03 </td><td align="right">1.2K</td></tr>
17
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-events-copyright-1.xsd">xml-events-copyright-1.xsd</a></td><td align="right">01-Aug-2003 18:14 </td><td align="right">1.2K</td></tr>
18
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-events-attribs-2.xsd">xml-events-attribs-2.xsd</a></td><td align="right">25-Jun-2008 14:36 </td><td align="right">2.5K</td></tr>
19
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-events-attribs-1.xsd">xml-events-attribs-1.xsd</a></td><td align="right">25-Jun-2008 14:36 </td><td align="right">2.4K</td></tr>
20
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-events-2.xsd">xml-events-2.xsd</a></td><td align="right">25-Jun-2008 14:36 </td><td align="right">2.5K</td></tr>
21
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xml-events-1.xsd">xml-events-1.xsd</a></td><td align="right">25-Jun-2008 14:36 </td><td align="right">2.5K</td></tr>
22
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml11.xsd">xhtml11.xsd</a></td><td align="right">21-Jun-2008 19:42 </td><td align="right">3.7K</td></tr>
23
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml11-modules-1.xsd">xhtml11-modules-1.xsd</a></td><td align="right">06-Jan-2009 15:45 </td><td align="right"> 22K</td></tr>
24
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml11-module-redefines-1.xsd">xhtml11-module-redefines-1.xsd</a></td><td align="right">01-Oct-2003 16:50 </td><td align="right"> 11K</td></tr>
25
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml11-model-1.xsd">xhtml11-model-1.xsd</a></td><td align="right">21-Jun-2008 19:42 </td><td align="right"> 21K</td></tr>
26
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml2.xsd">xhtml2.xsd</a></td><td align="right">14-Jun-2005 15:30 </td><td align="right">619 </td></tr>
27
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-text-1.xsd">xhtml-text-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">2.1K</td></tr>
28
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-target-1.xsd">xhtml-target-1.xsd</a></td><td align="right">08-Oct-2008 20:29 </td><td align="right">1.6K</td></tr>
29
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-table-1.xsd">xhtml-table-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right"> 12K</td></tr>
30
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-style-1.xsd">xhtml-style-1.xsd</a></td><td align="right">08-Oct-2008 20:28 </td><td align="right">2.0K</td></tr>
31
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-struct-1.xsd">xhtml-struct-1.xsd</a></td><td align="right">05-Jul-2008 04:16 </td><td align="right">4.1K</td></tr>
32
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-ssismap-1.xsd">xhtml-ssismap-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">1.6K</td></tr>
33
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-script-1.xsd">xhtml-script-1.xsd</a></td><td align="right">08-Oct-2008 20:28 </td><td align="right">2.8K</td></tr>
34
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-ruby-basic-1.xsd">xhtml-ruby-basic-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">3.3K</td></tr>
35
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-ruby-1.xsd">xhtml-ruby-1.xsd</a></td><td align="right">06-Jan-2009 15:45 </td><td align="right">5.1K</td></tr>
36
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-rdfa-modules-1.xsd">xhtml-rdfa-modules-1.xsd</a></td><td align="right">05-Jul-2008 04:15 </td><td align="right"> 20K</td></tr>
37
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-rdfa-model-1.xsd">xhtml-rdfa-model-1.xsd</a></td><td align="right">05-Jul-2008 04:30 </td><td align="right"> 22K</td></tr>
38
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-rdfa-1.xsd">xhtml-rdfa-1.xsd</a></td><td align="right">05-Jul-2008 04:15 </td><td align="right">5.9K</td></tr>
39
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-print-modules-1.xsd">xhtml-print-modules-1.xsd</a></td><td align="right">07-Jul-2008 19:11 </td><td align="right"> 15K</td></tr>
40
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-print-model-1.xsd">xhtml-print-model-1.xsd</a></td><td align="right">29-May-2008 21:25 </td><td align="right"> 18K</td></tr>
41
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-print-1.xsd">xhtml-print-1.xsd</a></td><td align="right">29-May-2008 21:24 </td><td align="right">2.8K</td></tr>
42
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-pres-1.xsd">xhtml-pres-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">1.6K</td></tr>
43
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-param-1.xsd">xhtml-param-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">2.1K</td></tr>
44
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-object-1.xsd">xhtml-object-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">2.7K</td></tr>
45
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-notations-1.xsd">xhtml-notations-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">3.9K</td></tr>
46
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-nameident-1.xsd">xhtml-nameident-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">2.1K</td></tr>
47
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-misc-1.xsd">xhtml-misc-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right"> 14K</td></tr>
48
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-metaAttributes-1.xsd">xhtml-metaAttributes-1.xsd</a></td><td align="right">05-Jul-2008 04:15 </td><td align="right">1.5K</td></tr>
49
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-meta-1.xsd">xhtml-meta-1.xsd</a></td><td align="right">05-Jul-2008 04:16 </td><td align="right">2.1K</td></tr>
50
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-list-1.xsd">xhtml-list-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">3.8K</td></tr>
51
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-link-1.xsd">xhtml-link-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">1.8K</td></tr>
52
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-legacy-1.xsd">xhtml-legacy-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">3.2K</td></tr>
53
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-inputmode-1.xsd">xhtml-inputmode-1.xsd</a></td><td align="right">29-May-2008 19:43 </td><td align="right">1.1K</td></tr>
54
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-inlstyle-1.xsd">xhtml-inlstyle-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">1.0K</td></tr>
55
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-inlstruct-1.xsd">xhtml-inlstruct-1.xsd</a></td><td align="right">19-Feb-2007 14:13 </td><td align="right">1.9K</td></tr>
56
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-inlpres-1.xsd">xhtml-inlpres-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">1.5K</td></tr>
57
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-inlphras-1.xsd">xhtml-inlphras-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">6.5K</td></tr>
58
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-image-1.xsd">xhtml-image-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">1.7K</td></tr>
59
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-iframe-1.xsd">xhtml-iframe-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">2.3K</td></tr>
60
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-hypertext-1.xsd">xhtml-hypertext-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">2.0K</td></tr>
61
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-framework-1.xsd">xhtml-framework-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">2.5K</td></tr>
62
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-frames-1.xsd">xhtml-frames-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">3.5K</td></tr>
63
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-form-1.xsd">xhtml-form-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right"> 13K</td></tr>
64
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-events-1.xsd">xhtml-events-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">5.2K</td></tr>
65
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-edit-1.xsd">xhtml-edit-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">1.5K</td></tr>
66
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-datatypes-1.xsd">xhtml-datatypes-1.xsd</a></td><td align="right">08-Oct-2008 20:28 </td><td align="right">6.4K</td></tr>
67
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-csismap-1.xsd">xhtml-csismap-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">3.9K</td></tr>
68
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-copyright-1.xsd">xhtml-copyright-1.xsd</a></td><td align="right">08-Oct-2008 20:28 </td><td align="right">1.2K</td></tr>
69
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-charent-1.xsd">xhtml-charent-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">1.5K</td></tr>
70
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-blkstruct-1.xsd">xhtml-blkstruct-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">1.7K</td></tr>
71
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-blkpres-1.xsd">xhtml-blkpres-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">1.4K</td></tr>
72
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-blkphras-1.xsd">xhtml-blkphras-1.xsd</a></td><td align="right">05-Jul-2008 04:16 </td><td align="right">6.4K</td></tr>
73
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-bdo-1.xsd">xhtml-bdo-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">3.0K</td></tr>
74
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic11.xsd">xhtml-basic11.xsd</a></td><td align="right">29-May-2008 19:43 </td><td align="right">3.4K</td></tr>
75
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic11-modules-1.xsd">xhtml-basic11-modules-1.xsd</a></td><td align="right">07-Jul-2008 19:12 </td><td align="right"> 19K</td></tr>
76
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic11-model-1.xsd">xhtml-basic11-model-1.xsd</a></td><td align="right">29-May-2008 19:43 </td><td align="right"> 18K</td></tr>
77
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic10.xsd">xhtml-basic10.xsd</a></td><td align="right">08-Oct-2008 20:28 </td><td align="right">3.3K</td></tr>
78
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic10-modules-1.xsd">xhtml-basic10-modules-1.xsd</a></td><td align="right">08-Oct-2008 20:28 </td><td align="right">6.9K</td></tr>
79
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic10-module-redefines-1.xsd">xhtml-basic10-module-redefines-1.xsd</a></td><td align="right">01-Oct-2003 16:50 </td><td align="right">2.2K</td></tr>
80
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic10-model-1.xsd">xhtml-basic10-model-1.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right"> 11K</td></tr>
81
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic-table-1.xsd">xhtml-basic-table-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">5.8K</td></tr>
82
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-basic-form-1.xsd">xhtml-basic-form-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">6.8K</td></tr>
83
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-base-1.xsd">xhtml-base-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">1.3K</td></tr>
84
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-attribs-1.xsd">xhtml-attribs-1.xsd</a></td><td align="right">05-Jul-2008 04:16 </td><td align="right">3.1K</td></tr>
85
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-applet-1.xsd">xhtml-applet-1.xsd</a></td><td align="right">19-Feb-2007 14:12 </td><td align="right">2.3K</td></tr>
86
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-access-1.xsd">xhtml-access-1.xsd</a></td><td align="right">17-May-2008 16:21 </td><td align="right">1.6K</td></tr>
87
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xframes-1.xsd">xframes-1.xsd</a></td><td align="right">06-Oct-2005 00:58 </td><td align="right">5.1K</td></tr>
88
+ <tr><th colspan="5"><hr /></th></tr>
89
+ </table>
90
+ </body></html>
@@ -0,0 +1,32 @@
1
+ module MarkupValidity
2
+ module Assertions
3
+ ###
4
+ # Assert that +xhtml+ is valid XHTML Transitional
5
+ def assert_xhtml_transitional xhtml
6
+ validator = Validator.new xhtml
7
+ assert validator.valid?, validator.inspect
8
+ end
9
+ alias :assert_xhtml :assert_xhtml_transitional
10
+
11
+ ###
12
+ # Assert that +xhtml+ is valid XHTML Strict
13
+ def assert_xhtml_strict xhtml
14
+ validator = Validator.new xhtml, Validator::XHTML1_STRICT
15
+ assert validator.valid?, validator.inspect
16
+ end
17
+
18
+ ###
19
+ # Assert that +xhtml+ is valid XHTML+RDFa
20
+ def assert_xhtml_rdfa xhtml
21
+ validator = Validator.new xhtml, Validator::XHTML1_RDFA
22
+ assert validator.valid?, validator.inspect
23
+ end
24
+
25
+ ###
26
+ # Assert that +xml+ conforms to +schema+
27
+ def assert_schema schema, xml
28
+ validator = Validator.new xml, Nokogiri::XML::Schema(schema)
29
+ assert validator.valid?, validator.inspect
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <title>Index of /MarkUp/SCHEMA/examples</title>
6
+ </head>
7
+ <body>
8
+ <h1>Index of /MarkUp/SCHEMA/examples</h1>
9
+ <table><tr><th><img src="/icons/blank.gif" alt="[ICO]" width="20" height="22" /></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr /></th></tr>
10
+ <tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]" width="20" height="22" /></td><td><a href="/MarkUp/SCHEMA/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
11
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="mathml-model-1.xsd">mathml-model-1.xsd</a></td><td align="right">11-Jun-2008 17:26 </td><td align="right">628 </td></tr>
12
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="myml-1_0.xsd">myml-1_0.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right">3.3K</td></tr>
13
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="myml-model-1.xsd">myml-model-1.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right"> 10K</td></tr>
14
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="myml-module-1.xsd">myml-module-1.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right">2.0K</td></tr>
15
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="myml-modules-1.xsd">myml-modules-1.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right">8.7K</td></tr>
16
+ <tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]" width="20" height="22" /></td><td><a href="myml-noprefix.html">myml-noprefix.html</a></td><td align="right">11-Jun-2008 17:26 </td><td align="right">723 </td><td>An example using defaults</td></tr>
17
+ <tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]" width="20" height="22" /></td><td><a href="myml-prefixed.html">myml-prefixed.html</a></td><td align="right">11-Jun-2008 17:26 </td><td align="right">749 </td><td>An example using defaults</td></tr>
18
+ <tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]" width="20" height="22" /></td><td><a href="simple-noprefix.html">simple-noprefix.html</a></td><td align="right">11-Jun-2008 17:26 </td><td align="right">708 </td><td>An example using defaults</td></tr>
19
+ <tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]" width="20" height="22" /></td><td><a href="simple-prefixed.html">simple-prefixed.html</a></td><td align="right">11-Jun-2008 17:26 </td><td align="right">689 </td><td>An example using defaults</td></tr>
20
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="simpleml-1_0.xsd">simpleml-1_0.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right">1.2K</td></tr>
21
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="simpleml-module-1.xsd">simpleml-module-1.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right">1.6K</td></tr>
22
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="xhtml-mathml.xsd">xhtml-mathml.xsd</a></td><td align="right">11-Jun-2008 17:26 </td><td align="right">725 </td></tr>
23
+ <tr><th colspan="5"><hr /></th></tr>
24
+ </table>
25
+ </body></html>
@@ -0,0 +1,77 @@
1
+ module Spec
2
+ module Matchers
3
+ ###
4
+ # Assert that something is XHTML transitional
5
+ def be_xhtml_transitional
6
+ Matcher.new :be_xhtml_transitional do
7
+ validator = nil
8
+ match do |xhtml|
9
+ validator = MarkupValidity::Validator.new xhtml
10
+ validator.valid?
11
+ end
12
+
13
+ failure_message_for_should do |actual|
14
+ validator.inspect
15
+ end
16
+ end
17
+ end
18
+ alias :be_xhtml :be_xhtml_transitional
19
+
20
+ ###
21
+ # Assert that something is XHTML strict
22
+ def be_xhtml_strict
23
+ Matcher.new :be_xhtml_strict do
24
+ validator = nil
25
+ match do |xhtml|
26
+ validator = MarkupValidity::Validator.new(
27
+ xhtml,
28
+ MarkupValidity::Validator::XHTML1_STRICT
29
+ )
30
+ validator.valid?
31
+ end
32
+
33
+ failure_message_for_should do |actual|
34
+ validator.inspect
35
+ end
36
+ end
37
+ end
38
+
39
+ ###
40
+ # Assert that something is XHTML+RDFa
41
+ def be_xhtml_rdfa
42
+ Matcher.new :be_xhtml_rdfa do
43
+ validator = nil
44
+ match do |xhtml|
45
+ validator = MarkupValidity::Validator.new(
46
+ xhtml,
47
+ MarkupValidity::Validator::XHTML1_RDFA
48
+ )
49
+ validator.valid?
50
+ end
51
+
52
+ failure_message_for_should do |actual|
53
+ validator.inspect
54
+ end
55
+ end
56
+ end
57
+
58
+ ###
59
+ # Assert that something validates given +schema+
60
+ def be_valid_with_schema schema
61
+ Matcher.new :be_valid_with_schema, schema do |_schema_|
62
+ validator = nil
63
+ match do |xhtml|
64
+ validator = MarkupValidity::Validator.new(
65
+ xhtml,
66
+ Nokogiri::XML::Schema(_schema_)
67
+ )
68
+ validator.valid?
69
+ end
70
+
71
+ failure_message_for_should do |actual|
72
+ validator.inspect
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml">
4
+ <head>
5
+ <title>Index of /MarkUp/SCHEMA/templates</title>
6
+ </head>
7
+ <body>
8
+ <h1>Index of /MarkUp/SCHEMA/templates</h1>
9
+ <table><tr><th><img src="/icons/blank.gif" alt="[ICO]" width="20" height="22" /></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr /></th></tr>
10
+ <tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]" width="20" height="22" /></td><td><a href="/MarkUp/SCHEMA/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
11
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="model-template-1.xsd">model-template-1.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right">2.6K</td></tr>
12
+ <tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]" width="20" height="22" /></td><td><a href="module-template-1.xsd">module-template-1.xsd</a></td><td align="right">08-Oct-2008 20:27 </td><td align="right">1.7K</td></tr>
13
+ <tr><th colspan="5"><hr /></th></tr>
14
+ </table>
15
+ </body></html>
@@ -0,0 +1,65 @@
1
+ module MarkupValidity
2
+ class Validator # :nodoc:
3
+ Dir.chdir(File.dirname(__FILE__)) do
4
+ XHTML1_TRANSITIONAL = Nokogiri::XML::Schema(
5
+ File.read('xhtml1-transitional.xsd')
6
+ )
7
+ XHTML1_STRICT = Nokogiri::XML::Schema(File.read('xhtml1-strict.xsd'))
8
+ XHTML1_RDFA = Nokogiri::XML::Schema(File.read('xhtml-rdfa-1.xsd'))
9
+ end
10
+
11
+ DTD_REFS = {
12
+ XHTML1_STRICT => [
13
+ 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd',
14
+ 'xhtml1-strict.dtd'
15
+ ],
16
+ XHTML1_TRANSITIONAL => [
17
+ 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd',
18
+ 'xhtml1-transitional.dtd'
19
+ ],
20
+ XHTML1_RDFA => [
21
+ 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd',
22
+ 'xhtml-rdfa-1.dtd'
23
+ ]
24
+ }
25
+
26
+ attr_reader :errors
27
+ def initialize xml, reference = XHTML1_TRANSITIONAL
28
+ if DTD_REFS[reference]
29
+ fixed_dtd = xml.sub(DTD_REFS[reference].first, DTD_REFS[reference][1])
30
+ else
31
+ fixed_dtd = xml
32
+ end
33
+
34
+ doc = Dir.chdir(File.dirname(__FILE__)) do
35
+ Nokogiri::XML(fixed_dtd) { |cfg|
36
+ cfg.noent.dtdload.dtdvalid
37
+ }
38
+ end
39
+ @reference = reference
40
+ @xml = xml
41
+ @errors = reference.validate(doc)
42
+ end
43
+
44
+ def valid?; @errors.length == 0; end
45
+
46
+ def inspect
47
+ lines = @xml.split("\n")
48
+ strings = []
49
+ errors.each do |error|
50
+
51
+ start = error.line - [2, error.line].min
52
+
53
+ error_line = error.line == 0 ? 1 : error.line
54
+
55
+ strings << "Error on line: #{error_line}:"
56
+ strings << error.message.gsub(/\{[^\}]*\}/, '')
57
+ Range.new(start, error.line + 2).each { |number|
58
+ strings << "#{number + 1}: #{lines[number]}"
59
+ }
60
+ strings << ""
61
+ end
62
+ strings.join("\n")
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,166 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema
3
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
4
+ targetNamespace="http://www.w3.org/2002/06/xframes/"
5
+ xmlns="http://www.w3.org/2002/06/xframes/"
6
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
7
+ elementFormDefault="qualified">
8
+
9
+ <xs:annotation>
10
+ <xs:documentation xml:lang="en">
11
+ This is XFrames - an XML application for composing documents together.
12
+ URI: http://www.w3.org/MarkUp/SCHEMA/xframes-1.xsd
13
+
14
+ Copyright ©2002-2005 W3C (MIT, ERCIM, Keio), All Rights Reserved.
15
+
16
+ Editor: Masayasu Ishikawa (mimasa@w3.org)
17
+ Revision: $Id: xframes-1.xsd,v 1.9 2005/10/05 23:56:45 mimasa Exp $
18
+
19
+ Permission to use, copy, modify and distribute this XML Schema for
20
+ XFrames and its accompanying documentation for any purpose and without
21
+ fee is hereby granted in perpetuity, provided that the above copyright
22
+ notice and this paragraph appear in all copies. The copyright holders
23
+ make no representation about the suitability of this XML Schema
24
+ for any purpose.
25
+
26
+ It is provided "as is" without expressed or implied warranty.
27
+ </xs:documentation>
28
+ </xs:annotation>
29
+
30
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
31
+ schemaLocation="http://www.w3.org/2001/xml.xsd">
32
+ <xs:annotation>
33
+ <xs:documentation xml:lang="en">
34
+ Get access to the XML namespace
35
+ </xs:documentation>
36
+ </xs:annotation>
37
+ </xs:import>
38
+
39
+ <xs:annotation>
40
+ <xs:documentation xml:lang="en">
41
+ Datatypes
42
+ </xs:documentation>
43
+ </xs:annotation>
44
+
45
+ <xs:simpleType name="ContentType.datatype">
46
+ <xs:annotation>
47
+ <xs:documentation xml:lang="en">
48
+ media type, as per [RFC2045]
49
+ </xs:documentation>
50
+ </xs:annotation>
51
+ <xs:restriction base="xs:string"/>
52
+ </xs:simpleType>
53
+
54
+ <xs:simpleType name="MediaDesc.datatype">
55
+ <xs:annotation>
56
+ <xs:documentation>
57
+ A comma-separated list of media descriptors as described by [CSS2].
58
+ The default is all.
59
+ </xs:documentation>
60
+ </xs:annotation>
61
+ <xs:restriction base="xs:string">
62
+ <xs:pattern value="[^,]+(,\s*[^,]+)*"/>
63
+ </xs:restriction>
64
+ </xs:simpleType>
65
+
66
+ <xs:simpleType name="QName.datatype">
67
+ <xs:annotation>
68
+ <xs:documentation>
69
+ An [XMLNS]-qualified name.
70
+ </xs:documentation>
71
+ </xs:annotation>
72
+ <xs:restriction base="xs:QName"/>
73
+ </xs:simpleType>
74
+
75
+ <xs:simpleType name="URI.datatype">
76
+ <xs:annotation>
77
+ <xs:documentation xml:lang="en">
78
+ An Internationalized Resource Identifier Reference, as defined
79
+ by [IRI].
80
+ </xs:documentation>
81
+ </xs:annotation>
82
+ <xs:restriction base="xs:anyURI"/>
83
+ </xs:simpleType>
84
+
85
+ <xs:attributeGroup name="Common.attrib">
86
+ <xs:annotation>
87
+ <xs:documentation xml:lang="en">
88
+ Common attributes
89
+ </xs:documentation>
90
+ </xs:annotation>
91
+ <xs:attribute name="class" type="xs:NMTOKENS"/>
92
+ <xs:attribute ref="xml:id"/>
93
+ <xs:attribute name="title" type="xs:string"/>
94
+ </xs:attributeGroup>
95
+
96
+ <xs:element name="frames">
97
+ <xs:complexType>
98
+ <xs:sequence>
99
+ <xs:element minOccurs="0" maxOccurs="1" ref="head"/>
100
+ <xs:choice>
101
+ <xs:element ref="group"/>
102
+ <xs:element minOccurs="1" maxOccurs="unbounded" ref="frame"/>
103
+ </xs:choice>
104
+ </xs:sequence>
105
+ <xs:attributeGroup ref="Common.attrib"/>
106
+ <xs:attribute ref="xml:base"/>
107
+ </xs:complexType>
108
+ </xs:element>
109
+
110
+ <xs:element name="head">
111
+ <xs:complexType>
112
+ <xs:sequence>
113
+ <xs:element ref="title"/>
114
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="style"/>
115
+ </xs:sequence>
116
+ <xs:attributeGroup ref="Common.attrib"/>
117
+ </xs:complexType>
118
+ </xs:element>
119
+
120
+ <xs:element name="title">
121
+ <xs:complexType mixed="true">
122
+ <xs:attributeGroup ref="Common.attrib"/>
123
+ </xs:complexType>
124
+ </xs:element>
125
+
126
+ <xs:element name="style">
127
+ <xs:complexType mixed="true">
128
+ <xs:attributeGroup ref="Common.attrib"/>
129
+ <xs:attribute name="type" type="ContentType.datatype" use="required"/>
130
+ <xs:attribute name="media" type="MediaDesc.datatype"/>
131
+ <xs:attribute name="source" type="URI.datatype"/>
132
+ </xs:complexType>
133
+ </xs:element>
134
+
135
+ <xs:element name="group">
136
+ <xs:complexType>
137
+ <xs:choice minOccurs="1" maxOccurs="unbounded">
138
+ <xs:element ref="group"/>
139
+ <xs:element ref="frame"/>
140
+ </xs:choice>
141
+ <xs:attributeGroup ref="Common.attrib"/>
142
+ <xs:attribute name="compose" default="vertical">
143
+ <xs:simpleType>
144
+ <xs:union memberTypes="QName.datatype">
145
+ <xs:simpleType>
146
+ <xs:restriction base="xs:token">
147
+ <xs:enumeration value="vertical"/>
148
+ <xs:enumeration value="horizontal"/>
149
+ <xs:enumeration value="single"/>
150
+ <xs:enumeration value="free"/>
151
+ </xs:restriction>
152
+ </xs:simpleType>
153
+ </xs:union>
154
+ </xs:simpleType>
155
+ </xs:attribute>
156
+ </xs:complexType>
157
+ </xs:element>
158
+
159
+ <xs:element name="frame">
160
+ <xs:complexType>
161
+ <xs:attributeGroup ref="Common.attrib"/>
162
+ <xs:attribute name="source" type="URI.datatype"/>
163
+ </xs:complexType>
164
+ </xs:element>
165
+
166
+ </xs:schema>