cqm-validators 0.1.0

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 (76) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/Gemfile +6 -0
  4. data/LICENSE.txt +201 -0
  5. data/QRDA_Schematron_License.txt +191 -0
  6. data/README.md +40 -0
  7. data/Rakefile +10 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/cqm_validators.gemspec +28 -0
  11. data/lib/base_validator.rb +22 -0
  12. data/lib/cqm_validators.rb +15 -0
  13. data/lib/cqm_validators/version.rb +3 -0
  14. data/lib/data_validator.rb +82 -0
  15. data/lib/measure_validator.rb +130 -0
  16. data/lib/performance_rate_validator.rb +92 -0
  17. data/lib/qrda_qdm_template_validator.rb +320 -0
  18. data/lib/reported_result_extractor.rb +172 -0
  19. data/lib/schema/infrastructure/cda/CDA_SDTC.xsd +44 -0
  20. data/lib/schema/infrastructure/cda/POCD_MT000040_SDTC.xsd +1500 -0
  21. data/lib/schema/infrastructure/cda/SDTC.xsd +210 -0
  22. data/lib/schema/processable/coreschemas/NarrativeBlock.xsd +557 -0
  23. data/lib/schema/processable/coreschemas/datatypes-base_SDTC.xsd +1850 -0
  24. data/lib/schema/processable/coreschemas/datatypes.xsd +1375 -0
  25. data/lib/schema/processable/coreschemas/infrastructureRoot.xsd +27 -0
  26. data/lib/schema/processable/coreschemas/voc.xsd +2124 -0
  27. data/lib/schema_validator.rb +23 -0
  28. data/lib/schematron/c_processor.rb +26 -0
  29. data/lib/schematron/iso-schematron-xslt1/ExtractSchFromRNG.xsl +75 -0
  30. data/lib/schematron/iso-schematron-xslt1/ExtractSchFromXSD.xsl +77 -0
  31. data/lib/schematron/iso-schematron-xslt1/iso_abstract_expand.xsl +297 -0
  32. data/lib/schematron/iso-schematron-xslt1/iso_dsdl_include.xsl +1509 -0
  33. data/lib/schematron/iso-schematron-xslt1/iso_schematron_message.xsl +55 -0
  34. data/lib/schematron/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl +1844 -0
  35. data/lib/schematron/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl +605 -0
  36. data/lib/schematron/iso-schematron-xslt1/readme.txt +101 -0
  37. data/lib/schematron/iso-schematron-xslt1/schematron-skeleton-api.htm +723 -0
  38. data/lib/schematron/iso-schematron-xslt2/ExtractSchFromRNG-2.xsl +75 -0
  39. data/lib/schematron/iso-schematron-xslt2/ExtractSchFromXSD-2.xsl +77 -0
  40. data/lib/schematron/iso-schematron-xslt2/iso_abstract_expand.xsl +297 -0
  41. data/lib/schematron/iso-schematron-xslt2/iso_dsdl_include.xsl +1508 -0
  42. data/lib/schematron/iso-schematron-xslt2/iso_schematron_message_xslt2.xsl +55 -0
  43. data/lib/schematron/iso-schematron-xslt2/iso_schematron_skeleton_for_saxon.xsl +2299 -0
  44. data/lib/schematron/iso-schematron-xslt2/iso_svrl_for_xslt2.xsl +684 -0
  45. data/lib/schematron/iso-schematron-xslt2/readme.txt +100 -0
  46. data/lib/schematron/iso-schematron-xslt2/sch-messages-cs.xhtml +56 -0
  47. data/lib/schematron/iso-schematron-xslt2/sch-messages-de.xhtml +57 -0
  48. data/lib/schematron/iso-schematron-xslt2/sch-messages-en.xhtml +57 -0
  49. data/lib/schematron/iso-schematron-xslt2/sch-messages-fr.xhtml +54 -0
  50. data/lib/schematron/iso-schematron-xslt2/sch-messages-nl.xhtml +58 -0
  51. data/lib/schematron/iso-schematron-xslt2/schematron-skeleton-api.htm +723 -0
  52. data/lib/schematron/java_processor.rb +92 -0
  53. data/lib/schematron/qrda/cat_1/HL7_CDAR2_QRDA_Category_I_2_12_16.sch +4693 -0
  54. data/lib/schematron/qrda/cat_1/voc.xml +1177 -0
  55. data/lib/schematron/qrda/cat_1_r2/QRDA Category I Release 2.sch +4069 -0
  56. data/lib/schematron/qrda/cat_1_r2/voc.xml +1065 -0
  57. data/lib/schematron/qrda/cat_1_r3_1/HL7 QRDA Category I STU 3.1.sch +3573 -0
  58. data/lib/schematron/qrda/cat_1_r3_1/HL7 QRDA Category III STU 1.1.sch +464 -0
  59. data/lib/schematron/qrda/cat_1_r3_1/QRDA Category I STU Release 3.1.sch +5394 -0
  60. data/lib/schematron/qrda/cat_1_r3_1/voc.xml +1229 -0
  61. data/lib/schematron/qrda/cat_1_r4/HL7 QRDA Category I STU 4.sch +3526 -0
  62. data/lib/schematron/qrda/cat_1_r4/voc.xml +1186 -0
  63. data/lib/schematron/qrda/cat_1_r5/HL7 QRDA Category I STU 5.sch +3069 -0
  64. data/lib/schematron/qrda/cat_1_r5/voc.xml +1186 -0
  65. data/lib/schematron/qrda/cat_3/QRDA Category III.sch +675 -0
  66. data/lib/schematron/qrda/cat_3/voc.xml +21 -0
  67. data/lib/schematron/qrda/cat_3_r1_1/HL7 QRDA Category III STU 1.1.sch +528 -0
  68. data/lib/schematron/qrda/cat_3_r1_1/voc.xml +8 -0
  69. data/lib/schematron/qrda/cat_3_r2/HL7 QRDA Category III STU 2.sch +677 -0
  70. data/lib/schematron/qrda/cat_3_r2/voc.xml +1186 -0
  71. data/lib/schematron/qrda/cat_3_r2_1/HL7 QRDA Category III STU 2.1.sch +678 -0
  72. data/lib/schematron/qrda/cat_3_r2_1/voc.xml +1186 -0
  73. data/lib/schematron_validator.rb +38 -0
  74. data/lib/validation_error.rb +10 -0
  75. data/lib/validators.rb +136 -0
  76. metadata +177 -0
@@ -0,0 +1,210 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+
3
+ <xs:schema targetNamespace="urn:hl7-org:sdtc" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:hl7-org:sdtc"
4
+ elementFormDefault="qualified" xmlns:hl7="urn:hl7-org:v3" xmlns:sch="http://www.ascc.net/xml/schematron">
5
+ <xs:annotation>
6
+ <xs:documentation>XML schema for message type POCD_MT000040.</xs:documentation>
7
+ <xs:documentation>
8
+ Copyright (c) 2015 Health Level Seven.
9
+ All rights reserved.
10
+
11
+ Redistribution and use in source and binary forms, with or
12
+ without modification, are permitted provided that the following
13
+ conditions are met:
14
+ 1. Redistributions of source code must retain the above
15
+ copyright notice, this list of conditions and the following
16
+ disclaimer.
17
+ 2. Redistributions in binary form must reproduce the above
18
+ copyright notice, this list of conditions and the following
19
+ disclaimer in the documentation and/or other materials
20
+ provided with the distribution.
21
+ 3. All advertising materials mentioning features or use of this
22
+ software must display the following acknowledgement:
23
+
24
+ This product includes software developed by Health Level Seven.
25
+
26
+ THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS
27
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
28
+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
29
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
30
+ SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
31
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
33
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
35
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
38
+ DAMAGE.
39
+ </xs:documentation>
40
+ <xs:documentation>See http://wiki.hl7.org/index.php?title=CDA_R2_Extensions for more details of extensions</xs:documentation>
41
+ <xs:documentation>
42
+ 2012-07-06 Created SDTC.xsd (this file) this file holds all extensions in the SDTC namespace.
43
+ It contains elements, attributes and datatypes
44
+ </xs:documentation>
45
+ <xs:documentation>
46
+ 2012-07-06 Added extensions approved by SDWG prior to 2012-07-06:
47
+ id,
48
+ deceasedInd,
49
+ deceasedTime,
50
+ valueSet,
51
+ valuesetVersion,
52
+ dischargeDispositionCode,
53
+ raceCode,
54
+ birthTime
55
+ </xs:documentation>
56
+ <xs:documentation>
57
+ 2014-07-14 Added extension approved by SDWG on xxxx date:
58
+ signatureText
59
+ </xs:documentation>
60
+ <xs:documentation>
61
+ 2015-04-01 Added extensions approved by SDWG on 2014-11-xx:
62
+ multipleBirthInd,
63
+ multipleBirthOrderNumber
64
+ </xs:documentation>
65
+ <xs:documentation>
66
+ 2015-04-01
67
+ Added extension approved by SDWG on 2014-12-18:
68
+ ethnicGroupCode
69
+ </xs:documentation>
70
+ <xs:documentation>
71
+ 2015-04-01
72
+ Added extension approved by SDWG on 2014-01-xx:
73
+ statusCode
74
+ </xs:documentation>
75
+ <xs:documentation>
76
+ 2015-04-01
77
+ Added extension approved by SDWG on 2015-03-05
78
+ desc
79
+ </xs:documentation>
80
+ <xs:documentation>
81
+ 2015-04-01
82
+ Added extension approved by SDWG on 2015-03-05
83
+ patient
84
+ </xs:documentation>
85
+ <xs:documentation>
86
+ 2015-04-01
87
+ Added extension approved by SDWG on 2015-03-19
88
+ inFulfillmentOf1
89
+ </xs:documentation>
90
+ <xs:documentation>
91
+ 2015-04-06
92
+ Added extension approved by SDWG on 2015-03-05
93
+ asPatientRelationship
94
+ </xs:documentation>
95
+ </xs:annotation>
96
+
97
+ <xs:import namespace="urn:hl7-org:v3" schemaLocation="POCD_MT000040_SDTC.xsd" />
98
+
99
+ <!-- == Start Data types ===================================================================== -->
100
+ <!-- Datatype INT_POS (restricts integers to 1 or greater) -->
101
+ <xs:simpleType name="int_pos">
102
+ <xs:annotation>
103
+ <xs:documentation>Positive integer numbers</xs:documentation>
104
+ </xs:annotation>
105
+ <xs:restriction base="hl7:int">
106
+ <xs:minInclusive value="1" />
107
+ </xs:restriction>
108
+ </xs:simpleType>
109
+
110
+ <xs:complexType name="INT_POS">
111
+ <xs:annotation>
112
+ <xs:documentation>Positive integer numbers</xs:documentation>
113
+ <xs:appinfo>
114
+ <diff>INT</diff>
115
+ <sch:pattern name="validate SDTC_INT">
116
+ <sch:rule abstract="true" id="rule-SDTC_INT">
117
+ <sch:report test="(@value or @nullFlavor) and not(@value and @nullFlavor)" />
118
+ </sch:rule>
119
+ </sch:pattern>
120
+ </xs:appinfo>
121
+ </xs:annotation>
122
+ <xs:complexContent>
123
+ <xs:extension base="hl7:QTY">
124
+ <xs:attribute name="value" use="optional" type="int_pos" />
125
+ </xs:extension>
126
+ </xs:complexContent>
127
+ </xs:complexType>
128
+
129
+ <!-- ActReference (created for QRDA) -->
130
+ <xs:complexType name="ActReference">
131
+ <xs:sequence>
132
+ <xs:element name="realmCode" type="hl7:CS" minOccurs="0" maxOccurs="unbounded" />
133
+ <xs:element name="typeId" type="hl7:POCD_MT000040.InfrastructureRoot.typeId" minOccurs="0" />
134
+ <xs:element name="templateId" type="hl7:II" minOccurs="0" maxOccurs="unbounded" />
135
+ <xs:element name="id" type="hl7:II" minOccurs="1" maxOccurs="unbounded" />
136
+ </xs:sequence>
137
+ <xs:attribute name="classCode" type="hl7:ActClass" use="required" />
138
+ <xs:attribute name="moodCode" type="hl7:x_DocumentActMood" use="required" />
139
+ <xs:attribute name="determinerCode" type="hl7:EntityDeterminer" use="optional" fixed="INSTANCE" />
140
+ </xs:complexType>
141
+
142
+ <!-- Fulfills (created for QRDA) -->
143
+ <xs:complexType name="InFulfillmentOf1">
144
+ <xs:sequence>
145
+ <xs:element name="realmCode" type="hl7:CS" minOccurs="0" maxOccurs="unbounded" />
146
+ <xs:element name="typeId" type="hl7:POCD_MT000040.InfrastructureRoot.typeId" minOccurs="0" />
147
+ <xs:element name="templateId" type="hl7:II" minOccurs="0" maxOccurs="unbounded" />
148
+ <xs:element name="actReference" type="ActReference" />
149
+ </xs:sequence>
150
+ <xs:attribute name="typeCode" type="hl7:ActRelationshipFulfills" use="required" fixed="FLFS" />
151
+ <xs:attribute name="inversionInd" type="hl7:bl" use="optional" />
152
+ <xs:attribute name="negationInd" type="hl7:bl" use="optional" />
153
+ </xs:complexType>
154
+
155
+ <xs:complexType name="SdtcPatient">
156
+ <xs:sequence>
157
+ <xs:element name="id" type="hl7:II" minOccurs="1" />
158
+ </xs:sequence>
159
+ </xs:complexType>
160
+
161
+ <xs:complexType name="AsPatientRelationship">
162
+ <xs:sequence>
163
+ <xs:element name="realmCode" type="hl7:CS" minOccurs="0" maxOccurs="unbounded" />
164
+ <xs:element name="typeId" type="hl7:POCD_MT000040.InfrastructureRoot.typeId" minOccurs="0" />
165
+ <xs:element name="templateId" type="hl7:II" minOccurs="0" maxOccurs="unbounded" />
166
+ <xs:element name="code" type="hl7:CE" />
167
+ </xs:sequence>
168
+ <xs:attribute name="classCode" type="hl7:x_DocumentSubject" use="required" fixed="PRS" />
169
+ <xs:attribute name="determinerCode" type="hl7:EntityDeterminer" use="optional" fixed="INSTANCE" />
170
+ </xs:complexType>
171
+
172
+ <!-- == End Data Types =================================================================== -->
173
+
174
+ <!-- == Start Attributes =================================================================== -->
175
+ <xs:attribute name="valueSet" type="hl7:oid" />
176
+ <xs:attribute name="valueSetVersion" type="hl7:st" />
177
+ <!-- == End Attributes =================================================================== -->
178
+
179
+
180
+ <!-- == Start Elements =================================================================== -->
181
+ <xs:element name="raceCode" type="hl7:CE" />
182
+ <xs:element name="ethnicGroupCode" type="hl7:CE" />
183
+
184
+ <xs:element name="dischargeDispositionCode" type="hl7:CE" />
185
+
186
+ <xs:element name="id" type="hl7:II" />
187
+
188
+ <xs:element name="deceasedInd" type="hl7:BL" />
189
+ <xs:element name="deceasedTime" type="hl7:TS" />
190
+
191
+ <xs:element name="multipleBirthInd" type="hl7:BL" />
192
+ <xs:element name="multipleBirthOrderNumber" type="INT_POS" />
193
+
194
+ <xs:element name="birthTime" type="hl7:TS" />
195
+
196
+ <xs:element name="signatureText" type="hl7:ED" />
197
+
198
+ <xs:element name="statusCode" type="hl7:CS" />
199
+
200
+ <xs:element name="desc" type="hl7:ED" />
201
+
202
+ <xs:element name="inFulfillmentOf1" type="InFulfillmentOf1" />
203
+
204
+ <xs:element name="patient" type="SdtcPatient" />
205
+
206
+ <xs:element name="asPatientRelationship" type="AsPatientRelationship" />
207
+
208
+ <!-- == End Elements =================================================================== -->
209
+
210
+ </xs:schema>
@@ -0,0 +1,557 @@
1
+ <?xml version="1.0" encoding="ASCII"?>
2
+ <!--
3
+ *****************************************************************
4
+ This specification should in no circumstance be used in the development of, or at runtime
5
+ by, systems which perform processing of personal or patient data in a clinical or operational
6
+ setting, or in the provision of medical or therapeutic advice or treatment in a clinical or
7
+ operational setting.
8
+ *****************************************************************
9
+ -->
10
+ <!-- $Id: NarrativeBlock.xsd,v 1.6 2007/03/20 02:42:07 wbeeler Exp $ -->
11
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:hl7-org:v3" targetNamespace="urn:hl7-org:v3" elementFormDefault="qualified">
12
+ <xs:complexType name="StrucDoc.Text" mixed="true">
13
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
14
+ <xs:element name="content" type="StrucDoc.Content"/>
15
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
16
+ <xs:element name="sub" type="StrucDoc.Sub"/>
17
+ <xs:element name="sup" type="StrucDoc.Sup"/>
18
+ <xs:element name="br" type="StrucDoc.Br"/>
19
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
20
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
21
+ <xs:element name="renderMultiMedia" type="StrucDoc.RenderMultiMedia"/>
22
+ <xs:element name="paragraph" type="StrucDoc.Paragraph"/>
23
+ <xs:element name="list" type="StrucDoc.List"/>
24
+ <xs:element name="table" type="StrucDoc.Table"/>
25
+ </xs:choice>
26
+ <xs:attribute name="ID" type="xs:ID"/>
27
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
28
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
29
+ <xs:attribute name="mediaType" type="xs:string" fixed="text/x-hl7-text+xml"/>
30
+ </xs:complexType>
31
+ <xs:complexType name="StrucDoc.Title" mixed="true">
32
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
33
+ <xs:element name="content" type="StrucDoc.TitleContent"/>
34
+ <xs:element name="sub" type="StrucDoc.Sub"/>
35
+ <xs:element name="sup" type="StrucDoc.Sup"/>
36
+ <xs:element name="br" type="StrucDoc.Br"/>
37
+ <xs:element name="footnote" type="StrucDoc.TitleFootnote"/>
38
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
39
+ </xs:choice>
40
+ <xs:attribute name="ID" type="xs:ID"/>
41
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
42
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
43
+ <xs:attribute name="mediaType" type="xs:string" fixed="text/x-hl7-title+xml"/>
44
+ </xs:complexType>
45
+ <!-- DELETE THIS, we don't need to define a global element for text
46
+ <xs:element name="text" type="text"/>
47
+ -->
48
+ <xs:simpleType name="StrucDoc.Br">
49
+ <xs:restriction base="xs:string">
50
+ <xs:maxLength value="0"/>
51
+ </xs:restriction>
52
+ </xs:simpleType>
53
+ <xs:complexType name="StrucDoc.Caption" mixed="true">
54
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
55
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
56
+ <xs:element name="sub" type="StrucDoc.Sub"/>
57
+ <xs:element name="sup" type="StrucDoc.Sup"/>
58
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
59
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
60
+ </xs:choice>
61
+ <xs:attribute name="ID" type="xs:ID"/>
62
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
63
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
64
+ </xs:complexType>
65
+ <xs:complexType name="StrucDoc.Col">
66
+ <xs:attribute name="ID" type="xs:ID"/>
67
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
68
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
69
+ <xs:attribute name="span" type="xs:string" default="1"/>
70
+ <xs:attribute name="width" type="xs:string"/>
71
+ <xs:attribute name="align">
72
+ <xs:simpleType>
73
+ <xs:restriction base="xs:NMTOKEN">
74
+ <xs:enumeration value="left"/>
75
+ <xs:enumeration value="center"/>
76
+ <xs:enumeration value="right"/>
77
+ <xs:enumeration value="justify"/>
78
+ <xs:enumeration value="char"/>
79
+ </xs:restriction>
80
+ </xs:simpleType>
81
+ </xs:attribute>
82
+ <xs:attribute name="char" type="xs:string"/>
83
+ <xs:attribute name="charoff" type="xs:string"/>
84
+ <xs:attribute name="valign">
85
+ <xs:simpleType>
86
+ <xs:restriction base="xs:NMTOKEN">
87
+ <xs:enumeration value="top"/>
88
+ <xs:enumeration value="middle"/>
89
+ <xs:enumeration value="bottom"/>
90
+ <xs:enumeration value="baseline"/>
91
+ </xs:restriction>
92
+ </xs:simpleType>
93
+ </xs:attribute>
94
+ </xs:complexType>
95
+ <xs:complexType name="StrucDoc.Colgroup">
96
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
97
+ <xs:element name="col" type="StrucDoc.Col"/>
98
+ </xs:sequence>
99
+ <xs:attribute name="ID" type="xs:ID"/>
100
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
101
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
102
+ <xs:attribute name="span" type="xs:string" default="1"/>
103
+ <xs:attribute name="width" type="xs:string"/>
104
+ <xs:attribute name="align">
105
+ <xs:simpleType>
106
+ <xs:restriction base="xs:NMTOKEN">
107
+ <xs:enumeration value="left"/>
108
+ <xs:enumeration value="center"/>
109
+ <xs:enumeration value="right"/>
110
+ <xs:enumeration value="justify"/>
111
+ <xs:enumeration value="char"/>
112
+ </xs:restriction>
113
+ </xs:simpleType>
114
+ </xs:attribute>
115
+ <xs:attribute name="char" type="xs:string"/>
116
+ <xs:attribute name="charoff" type="xs:string"/>
117
+ <xs:attribute name="valign">
118
+ <xs:simpleType>
119
+ <xs:restriction base="xs:NMTOKEN">
120
+ <xs:enumeration value="top"/>
121
+ <xs:enumeration value="middle"/>
122
+ <xs:enumeration value="bottom"/>
123
+ <xs:enumeration value="baseline"/>
124
+ </xs:restriction>
125
+ </xs:simpleType>
126
+ </xs:attribute>
127
+ </xs:complexType>
128
+ <xs:complexType name="StrucDoc.Content" mixed="true">
129
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
130
+ <xs:element name="content" type="StrucDoc.Content"/>
131
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
132
+ <xs:element name="sub" type="StrucDoc.Sub"/>
133
+ <xs:element name="sup" type="StrucDoc.Sup"/>
134
+ <xs:element name="br" type="StrucDoc.Br"/>
135
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
136
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
137
+ <xs:element name="renderMultiMedia" type="StrucDoc.RenderMultiMedia"/>
138
+ </xs:choice>
139
+ <xs:attribute name="ID" type="xs:ID"/>
140
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
141
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
142
+ <xs:attribute name="revised">
143
+ <xs:simpleType>
144
+ <xs:restriction base="xs:NMTOKEN">
145
+ <xs:enumeration value="insert"/>
146
+ <xs:enumeration value="delete"/>
147
+ </xs:restriction>
148
+ </xs:simpleType>
149
+ </xs:attribute>
150
+ </xs:complexType>
151
+ <xs:complexType name="StrucDoc.TitleContent" mixed="true">
152
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
153
+ <xs:element name="content" type="StrucDoc.TitleContent"/>
154
+ <xs:element name="sub" type="StrucDoc.Sub"/>
155
+ <xs:element name="sup" type="StrucDoc.Sup"/>
156
+ <xs:element name="br" type="StrucDoc.Br"/>
157
+ <xs:element name="footnote" type="StrucDoc.TitleFootnote"/>
158
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
159
+ </xs:choice>
160
+ <xs:attribute name="ID" type="xs:ID"/>
161
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
162
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
163
+ </xs:complexType>
164
+ <xs:complexType name="StrucDoc.Footnote" mixed="true">
165
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
166
+ <xs:element name="content" type="StrucDoc.Content"/>
167
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
168
+ <xs:element name="sub" type="StrucDoc.Sub"/>
169
+ <xs:element name="sup" type="StrucDoc.Sup"/>
170
+ <xs:element name="br" type="StrucDoc.Br"/>
171
+ <xs:element name="renderMultiMedia" type="StrucDoc.RenderMultiMedia"/>
172
+ <xs:element name="paragraph" type="StrucDoc.Paragraph"/>
173
+ <xs:element name="list" type="StrucDoc.List"/>
174
+ <xs:element name="table" type="StrucDoc.Table"/>
175
+ </xs:choice>
176
+ <xs:attribute name="ID" type="xs:ID"/>
177
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
178
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
179
+ </xs:complexType>
180
+ <xs:complexType name="StrucDoc.TitleFootnote" mixed="true">
181
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
182
+ <xs:element name="content" type="StrucDoc.TitleContent"/>
183
+ <xs:element name="sub" type="StrucDoc.Sub"/>
184
+ <xs:element name="sup" type="StrucDoc.Sup"/>
185
+ <xs:element name="br" type="StrucDoc.Br"/>
186
+ </xs:choice>
187
+ <xs:attribute name="ID" type="xs:ID"/>
188
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
189
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
190
+ </xs:complexType>
191
+ <xs:complexType name="StrucDoc.FootnoteRef">
192
+ <xs:attribute name="ID" type="xs:ID"/>
193
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
194
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
195
+ <xs:attribute name="IDREF" type="xs:IDREF" use="required"/>
196
+ </xs:complexType>
197
+ <xs:complexType name="StrucDoc.Item" mixed="true">
198
+ <xs:sequence>
199
+ <xs:element name="caption" type="StrucDoc.Caption" minOccurs="0"/>
200
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
201
+ <xs:element name="content" type="StrucDoc.Content"/>
202
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
203
+ <xs:element name="sub" type="StrucDoc.Sub"/>
204
+ <xs:element name="sup" type="StrucDoc.Sup"/>
205
+ <xs:element name="br" type="StrucDoc.Br"/>
206
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
207
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
208
+ <xs:element name="renderMultiMedia" type="StrucDoc.RenderMultiMedia"/>
209
+ <xs:element name="paragraph" type="StrucDoc.Paragraph"/>
210
+ <xs:element name="list" type="StrucDoc.List"/>
211
+ <xs:element name="table" type="StrucDoc.Table"/>
212
+ </xs:choice>
213
+ </xs:sequence>
214
+ <xs:attribute name="ID" type="xs:ID"/>
215
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
216
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
217
+ </xs:complexType>
218
+ <xs:complexType name="StrucDoc.LinkHtml" mixed="true">
219
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
220
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
221
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
222
+ </xs:choice>
223
+ <xs:attribute name="name" type="xs:string"/>
224
+ <xs:attribute name="href" type="xs:string"/>
225
+ <xs:attribute name="rel" type="xs:string"/>
226
+ <xs:attribute name="rev" type="xs:string"/>
227
+ <xs:attribute name="title" type="xs:string"/>
228
+ <xs:attribute name="ID" type="xs:ID"/>
229
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
230
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
231
+ </xs:complexType>
232
+ <xs:complexType name="StrucDoc.List">
233
+ <xs:sequence>
234
+ <xs:element name="caption" type="StrucDoc.Caption" minOccurs="0"/>
235
+ <xs:element name="item" type="StrucDoc.Item" maxOccurs="unbounded"/>
236
+ </xs:sequence>
237
+ <xs:attribute name="ID" type="xs:ID"/>
238
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
239
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
240
+ <xs:attribute name="listType" default="unordered">
241
+ <xs:simpleType>
242
+ <xs:restriction base="xs:NMTOKEN">
243
+ <xs:enumeration value="ordered"/>
244
+ <xs:enumeration value="unordered"/>
245
+ </xs:restriction>
246
+ </xs:simpleType>
247
+ </xs:attribute>
248
+ </xs:complexType>
249
+ <xs:complexType name="StrucDoc.Paragraph" mixed="true">
250
+ <xs:sequence>
251
+ <xs:element name="caption" type="StrucDoc.Caption" minOccurs="0"/>
252
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
253
+ <xs:element name="content" type="StrucDoc.Content"/>
254
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
255
+ <xs:element name="sub" type="StrucDoc.Sub"/>
256
+ <xs:element name="sup" type="StrucDoc.Sup"/>
257
+ <xs:element name="br" type="StrucDoc.Br"/>
258
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
259
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
260
+ <xs:element name="renderMultiMedia" type="StrucDoc.RenderMultiMedia"/>
261
+ </xs:choice>
262
+ </xs:sequence>
263
+ <xs:attribute name="ID" type="xs:ID"/>
264
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
265
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
266
+ </xs:complexType>
267
+ <xs:complexType name="StrucDoc.RenderMultiMedia">
268
+ <xs:sequence>
269
+ <xs:element name="caption" type="StrucDoc.Caption" minOccurs="0"/>
270
+ </xs:sequence>
271
+ <xs:attribute name="referencedObject" type="xs:IDREFS" use="required"/>
272
+ <xs:attribute name="ID" type="xs:ID"/>
273
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
274
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
275
+ </xs:complexType>
276
+ <xs:complexType name="StrucDoc.Sub" mixed="true"/>
277
+ <xs:complexType name="StrucDoc.Sup" mixed="true"/>
278
+ <xs:complexType name="StrucDoc.Table">
279
+ <xs:sequence>
280
+ <xs:element name="caption" type="StrucDoc.Caption" minOccurs="0"/>
281
+ <xs:choice>
282
+ <xs:element name="col" type="StrucDoc.Col" minOccurs="0" maxOccurs="unbounded"/>
283
+ <xs:element name="colgroup" type="StrucDoc.Colgroup" minOccurs="0" maxOccurs="unbounded"/>
284
+ </xs:choice>
285
+ <xs:element name="thead" type="StrucDoc.Thead" minOccurs="0"/>
286
+ <xs:element name="tfoot" type="StrucDoc.Tfoot" minOccurs="0"/>
287
+ <xs:element name="tbody" type="StrucDoc.Tbody" maxOccurs="unbounded"/>
288
+ </xs:sequence>
289
+ <xs:attribute name="ID" type="xs:ID"/>
290
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
291
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
292
+ <xs:attribute name="summary" type="xs:string"/>
293
+ <xs:attribute name="width" type="xs:string"/>
294
+ <xs:attribute name="border" type="xs:string"/>
295
+ <xs:attribute name="frame">
296
+ <xs:simpleType>
297
+ <xs:restriction base="xs:NMTOKEN">
298
+ <xs:enumeration value="void"/>
299
+ <xs:enumeration value="above"/>
300
+ <xs:enumeration value="below"/>
301
+ <xs:enumeration value="hsides"/>
302
+ <xs:enumeration value="lhs"/>
303
+ <xs:enumeration value="rhs"/>
304
+ <xs:enumeration value="vsides"/>
305
+ <xs:enumeration value="box"/>
306
+ <xs:enumeration value="border"/>
307
+ </xs:restriction>
308
+ </xs:simpleType>
309
+ </xs:attribute>
310
+ <xs:attribute name="rules">
311
+ <xs:simpleType>
312
+ <xs:restriction base="xs:NMTOKEN">
313
+ <xs:enumeration value="none"/>
314
+ <xs:enumeration value="groups"/>
315
+ <xs:enumeration value="rows"/>
316
+ <xs:enumeration value="cols"/>
317
+ <xs:enumeration value="all"/>
318
+ </xs:restriction>
319
+ </xs:simpleType>
320
+ </xs:attribute>
321
+ <xs:attribute name="cellspacing" type="xs:string"/>
322
+ <xs:attribute name="cellpadding" type="xs:string"/>
323
+ </xs:complexType>
324
+ <xs:complexType name="StrucDoc.Tbody">
325
+ <xs:sequence maxOccurs="unbounded">
326
+ <xs:element name="tr" type="StrucDoc.Tr"/>
327
+ </xs:sequence>
328
+ <xs:attribute name="ID" type="xs:ID"/>
329
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
330
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
331
+ <xs:attribute name="align">
332
+ <xs:simpleType>
333
+ <xs:restriction base="xs:NMTOKEN">
334
+ <xs:enumeration value="left"/>
335
+ <xs:enumeration value="center"/>
336
+ <xs:enumeration value="right"/>
337
+ <xs:enumeration value="justify"/>
338
+ <xs:enumeration value="char"/>
339
+ </xs:restriction>
340
+ </xs:simpleType>
341
+ </xs:attribute>
342
+ <xs:attribute name="char" type="xs:string"/>
343
+ <xs:attribute name="charoff" type="xs:string"/>
344
+ <xs:attribute name="valign">
345
+ <xs:simpleType>
346
+ <xs:restriction base="xs:NMTOKEN">
347
+ <xs:enumeration value="top"/>
348
+ <xs:enumeration value="middle"/>
349
+ <xs:enumeration value="bottom"/>
350
+ <xs:enumeration value="baseline"/>
351
+ </xs:restriction>
352
+ </xs:simpleType>
353
+ </xs:attribute>
354
+ </xs:complexType>
355
+ <xs:complexType name="StrucDoc.Td" mixed="true">
356
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
357
+ <xs:element name="content" type="StrucDoc.Content"/>
358
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
359
+ <xs:element name="sub" type="StrucDoc.Sub"/>
360
+ <xs:element name="sup" type="StrucDoc.Sup"/>
361
+ <xs:element name="br" type="StrucDoc.Br"/>
362
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
363
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
364
+ <xs:element name="renderMultiMedia" type="StrucDoc.RenderMultiMedia"/>
365
+ <xs:element name="paragraph" type="StrucDoc.Paragraph"/>
366
+ <xs:element name="list" type="StrucDoc.List"/>
367
+ </xs:choice>
368
+ <xs:attribute name="ID" type="xs:ID"/>
369
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
370
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
371
+ <xs:attribute name="abbr" type="xs:string"/>
372
+ <xs:attribute name="axis" type="xs:string"/>
373
+ <xs:attribute name="headers" type="xs:IDREFS"/>
374
+ <xs:attribute name="scope">
375
+ <xs:simpleType>
376
+ <xs:restriction base="xs:NMTOKEN">
377
+ <xs:enumeration value="row"/>
378
+ <xs:enumeration value="col"/>
379
+ <xs:enumeration value="rowgroup"/>
380
+ <xs:enumeration value="colgroup"/>
381
+ </xs:restriction>
382
+ </xs:simpleType>
383
+ </xs:attribute>
384
+ <xs:attribute name="rowspan" type="xs:string" default="1"/>
385
+ <xs:attribute name="colspan" type="xs:string" default="1"/>
386
+ <xs:attribute name="align">
387
+ <xs:simpleType>
388
+ <xs:restriction base="xs:NMTOKEN">
389
+ <xs:enumeration value="left"/>
390
+ <xs:enumeration value="center"/>
391
+ <xs:enumeration value="right"/>
392
+ <xs:enumeration value="justify"/>
393
+ <xs:enumeration value="char"/>
394
+ </xs:restriction>
395
+ </xs:simpleType>
396
+ </xs:attribute>
397
+ <xs:attribute name="char" type="xs:string"/>
398
+ <xs:attribute name="charoff" type="xs:string"/>
399
+ <xs:attribute name="valign">
400
+ <xs:simpleType>
401
+ <xs:restriction base="xs:NMTOKEN">
402
+ <xs:enumeration value="top"/>
403
+ <xs:enumeration value="middle"/>
404
+ <xs:enumeration value="bottom"/>
405
+ <xs:enumeration value="baseline"/>
406
+ </xs:restriction>
407
+ </xs:simpleType>
408
+ </xs:attribute>
409
+ </xs:complexType>
410
+ <xs:complexType name="StrucDoc.Tfoot">
411
+ <xs:sequence maxOccurs="unbounded">
412
+ <xs:element name="tr" type="StrucDoc.Tr"/>
413
+ </xs:sequence>
414
+ <xs:attribute name="ID" type="xs:ID"/>
415
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
416
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
417
+ <xs:attribute name="align">
418
+ <xs:simpleType>
419
+ <xs:restriction base="xs:NMTOKEN">
420
+ <xs:enumeration value="left"/>
421
+ <xs:enumeration value="center"/>
422
+ <xs:enumeration value="right"/>
423
+ <xs:enumeration value="justify"/>
424
+ <xs:enumeration value="char"/>
425
+ </xs:restriction>
426
+ </xs:simpleType>
427
+ </xs:attribute>
428
+ <xs:attribute name="char" type="xs:string"/>
429
+ <xs:attribute name="charoff" type="xs:string"/>
430
+ <xs:attribute name="valign">
431
+ <xs:simpleType>
432
+ <xs:restriction base="xs:NMTOKEN">
433
+ <xs:enumeration value="top"/>
434
+ <xs:enumeration value="middle"/>
435
+ <xs:enumeration value="bottom"/>
436
+ <xs:enumeration value="baseline"/>
437
+ </xs:restriction>
438
+ </xs:simpleType>
439
+ </xs:attribute>
440
+ </xs:complexType>
441
+ <xs:complexType name="StrucDoc.Th" mixed="true">
442
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
443
+ <xs:element name="content" type="StrucDoc.Content"/>
444
+ <xs:element name="linkHtml" type="StrucDoc.LinkHtml"/>
445
+ <xs:element name="sub" type="StrucDoc.Sub"/>
446
+ <xs:element name="sup" type="StrucDoc.Sup"/>
447
+ <xs:element name="br" type="StrucDoc.Br"/>
448
+ <xs:element name="footnote" type="StrucDoc.Footnote"/>
449
+ <xs:element name="footnoteRef" type="StrucDoc.FootnoteRef"/>
450
+ <xs:element name="renderMultiMedia" type="StrucDoc.RenderMultiMedia"/>
451
+ </xs:choice>
452
+ <xs:attribute name="ID" type="xs:ID"/>
453
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
454
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
455
+ <xs:attribute name="abbr" type="xs:string"/>
456
+ <xs:attribute name="axis" type="xs:string"/>
457
+ <xs:attribute name="headers" type="xs:IDREFS"/>
458
+ <xs:attribute name="scope">
459
+ <xs:simpleType>
460
+ <xs:restriction base="xs:NMTOKEN">
461
+ <xs:enumeration value="row"/>
462
+ <xs:enumeration value="col"/>
463
+ <xs:enumeration value="rowgroup"/>
464
+ <xs:enumeration value="colgroup"/>
465
+ </xs:restriction>
466
+ </xs:simpleType>
467
+ </xs:attribute>
468
+ <xs:attribute name="rowspan" type="xs:string" default="1"/>
469
+ <xs:attribute name="colspan" type="xs:string" default="1"/>
470
+ <xs:attribute name="align">
471
+ <xs:simpleType>
472
+ <xs:restriction base="xs:NMTOKEN">
473
+ <xs:enumeration value="left"/>
474
+ <xs:enumeration value="center"/>
475
+ <xs:enumeration value="right"/>
476
+ <xs:enumeration value="justify"/>
477
+ <xs:enumeration value="char"/>
478
+ </xs:restriction>
479
+ </xs:simpleType>
480
+ </xs:attribute>
481
+ <xs:attribute name="char" type="xs:string"/>
482
+ <xs:attribute name="charoff" type="xs:string"/>
483
+ <xs:attribute name="valign">
484
+ <xs:simpleType>
485
+ <xs:restriction base="xs:NMTOKEN">
486
+ <xs:enumeration value="top"/>
487
+ <xs:enumeration value="middle"/>
488
+ <xs:enumeration value="bottom"/>
489
+ <xs:enumeration value="baseline"/>
490
+ </xs:restriction>
491
+ </xs:simpleType>
492
+ </xs:attribute>
493
+ </xs:complexType>
494
+ <xs:complexType name="StrucDoc.Thead">
495
+ <xs:sequence maxOccurs="unbounded">
496
+ <xs:element name="tr" type="StrucDoc.Tr"/>
497
+ </xs:sequence>
498
+ <xs:attribute name="ID" type="xs:ID"/>
499
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
500
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
501
+ <xs:attribute name="align">
502
+ <xs:simpleType>
503
+ <xs:restriction base="xs:NMTOKEN">
504
+ <xs:enumeration value="left"/>
505
+ <xs:enumeration value="center"/>
506
+ <xs:enumeration value="right"/>
507
+ <xs:enumeration value="justify"/>
508
+ <xs:enumeration value="char"/>
509
+ </xs:restriction>
510
+ </xs:simpleType>
511
+ </xs:attribute>
512
+ <xs:attribute name="char" type="xs:string"/>
513
+ <xs:attribute name="charoff" type="xs:string"/>
514
+ <xs:attribute name="valign">
515
+ <xs:simpleType>
516
+ <xs:restriction base="xs:NMTOKEN">
517
+ <xs:enumeration value="top"/>
518
+ <xs:enumeration value="middle"/>
519
+ <xs:enumeration value="bottom"/>
520
+ <xs:enumeration value="baseline"/>
521
+ </xs:restriction>
522
+ </xs:simpleType>
523
+ </xs:attribute>
524
+ </xs:complexType>
525
+ <xs:complexType name="StrucDoc.Tr">
526
+ <xs:choice maxOccurs="unbounded">
527
+ <xs:element name="th" type="StrucDoc.Th"/>
528
+ <xs:element name="td" type="StrucDoc.Td"/>
529
+ </xs:choice>
530
+ <xs:attribute name="ID" type="xs:ID"/>
531
+ <xs:attribute name="language" type="xs:NMTOKEN"/>
532
+ <xs:attribute name="styleCode" type="xs:NMTOKENS"/>
533
+ <xs:attribute name="align">
534
+ <xs:simpleType>
535
+ <xs:restriction base="xs:NMTOKEN">
536
+ <xs:enumeration value="left"/>
537
+ <xs:enumeration value="center"/>
538
+ <xs:enumeration value="right"/>
539
+ <xs:enumeration value="justify"/>
540
+ <xs:enumeration value="char"/>
541
+ </xs:restriction>
542
+ </xs:simpleType>
543
+ </xs:attribute>
544
+ <xs:attribute name="char" type="xs:string"/>
545
+ <xs:attribute name="charoff" type="xs:string"/>
546
+ <xs:attribute name="valign">
547
+ <xs:simpleType>
548
+ <xs:restriction base="xs:NMTOKEN">
549
+ <xs:enumeration value="top"/>
550
+ <xs:enumeration value="middle"/>
551
+ <xs:enumeration value="bottom"/>
552
+ <xs:enumeration value="baseline"/>
553
+ </xs:restriction>
554
+ </xs:simpleType>
555
+ </xs:attribute>
556
+ </xs:complexType>
557
+ </xs:schema>