-
Notifications
You must be signed in to change notification settings - Fork 113
/
specification.xsd
228 lines (228 loc) · 11.3 KB
/
specification.xsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<?xml version="1.0" encoding="UTF-8"?>
<!--
When this schema is changed, the following code must be updated to align:
- Scriptrunner REST Endpoints: uploadBallotSpreadsheet
- BALDEF Workflow (2 classes x 2 locations)
- SPEC Workflow (1 class)
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="workgroups.xsd"/>
<xs:include schemaLocation="accelerators.xsd"/>
<xs:element name="specification">
<xs:annotation>
<xs:documentation>All content related to a single HL7 specification.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="version" minOccurs="1" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Indicates an official major published release version. (Technical correction releases are not tracked.) Used to identify list of allowed versions when tracking version issue is raised in and fixed in.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="code" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation>The code to display for the version</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="url" type="website" use="optional">
<xs:annotation>
<xs:documentation>The persistant URL associated with this version of the specification. Used in URL validation.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="deprecated" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>If true, indicates that the version will not be available for selection as a 'reported version' when submitting new issues.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="artifactPageExtension" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Indicates suffixes that might be associated with pages generated for artifacts. Used for checking/populating artifacts based on URLs entered for the tracker</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="value" type="xs:NMTOKEN" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="artifact" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A formal artifact that can be referenced as part of feedback on a specification</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="otherArtifact" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Indicates additional artifacts whose issues should be reported under the parent artifact</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="id" type="NonEmptyString" use="required">
<xs:annotation>
<xs:documentation>The formal identifier for the artifact whose issues are to be reported under the parent artifact</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="key" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation>The key used inside Jira to identify the artifact. This key must not be renamed and cannot be removed if it appears in any tracker item.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="Name" use="required">
<xs:annotation>
<xs:documentation>The name to display to users for the artifact. This can change if the artifact is renamed</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="NonEmptyString" use="optional">
<xs:annotation>
<xs:documentation>The formal identifier associated with the artifact (if there is one). OID for CDA templates, ResourceType/id for FHIR, etc.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="workgroup" type="WorkGroup" use="optional">
<xs:annotation>
<xs:documentation>The work group typically responsible for issues relating to this artifact</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="accellerator" type="Accelerator" use="optional">
<xs:annotation>
<xs:documentation>The accelerator associated with this specification (if any)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="deprecated" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>If true, indicates that the artifact can no longer be associated with newly raised issues, but it can still appear on old issues and be used in search</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="page" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Indicates a documentation page that's not tightly associated with an artifact</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="otherpage" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Additional page URLs that should be treated as part of this page for categorization purposes (used to infer/validate pages based on URL)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="url" type="xs:NMTOKEN" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="key" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation>The key used inside Jira to identify the page This key must not be renamed and cannot be removed if it appears in any tracker item.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="name" type="Name" use="required">
<xs:annotation>
<xs:documentation>The name to display to users for the page. This can change if the page is renamed</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="workgroup" type="WorkGroup" use="optional">
<xs:annotation>
<xs:documentation>The work group typically responsible for issues relating to this page</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="deprecated" type="xs:boolean" default="false">
<xs:annotation>
<xs:documentation>If true, indicates that the page can no longer be associated with newly raised issues, but it can still appear on old issues and be used in search</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="url" type="xs:NMTOKEN" use="optional">
<xs:annotation>
<xs:documentation>The primary url associated with this page (this may initially be the same as the key, but will change if the url changes)</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="url" type="website" use="optional">
<xs:annotation>
<xs:documentation>The official URL for this specification. Used when validating URLs</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ciUrl" type="website" use="optional">
<xs:annotation>
<xs:documentation>The continuous integration build URL for this specification. Used when validating URLs</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ballotUrl" type="website" use="optional">
<xs:annotation>
<xs:documentation>The URL for the current/most recent ballot of this specification. Used when validating URLs</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="gitUrl" type="website" use="optional">
<xs:annotation>
<xs:documentation>The base URL for the repository in which the source material for this specificaiton is maintained.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="defaultWorkgroup" type="WorkGroup" use="optional">
<xs:annotation>
<xs:documentation>The work group typically associated with issues raised against this specification if a more specific work group isn't determined based on pages or artifacts</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="defaultVersion" type="xs:NMTOKEN" use="required">
<xs:annotation>
<xs:documentation>The version to identify as the 'raised' version for an issue if not overridden by the submitter</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:key name="version-code">
<xs:selector xpath="version"/>
<xs:field xpath="@code"/>
</xs:key>
<xs:keyref name="version-code-default" refer="version-code">
<xs:selector xpath="."/>
<xs:field xpath="@defaultVersion"/>
</xs:keyref>
<xs:unique name="artifactPageExtension-value-unique">
<xs:selector xpath="artifactPageExtension"/>
<xs:field xpath="@value"/>
</xs:unique>
<xs:unique name="artifact-key-unique">
<xs:selector xpath="artifact"/>
<xs:field xpath="@key"/>
</xs:unique>
<xs:unique name="artifact-name-unique">
<xs:selector xpath="artifact"/>
<xs:field xpath="@name"/>
</xs:unique>
<xs:unique name="artifact-id-unique">
<xs:selector xpath="artifact"/>
<xs:field xpath="@id"/>
</xs:unique>
<xs:unique name="page-key-unique">
<xs:selector xpath="page"/>
<xs:field xpath="@key"/>
</xs:unique>
<xs:unique name="page-name-unique">
<xs:selector xpath="page"/>
<xs:field xpath="@name"/>
</xs:unique>
<xs:unique name="page-url-unique">
<xs:selector xpath="page"/>
<xs:field xpath="@url"/>
</xs:unique>
<xs:unique name="page-otherpage-url-unique">
<xs:selector xpath="page/otherpage"/>
<xs:field xpath="@url"/>
</xs:unique>
</xs:element>
<xs:simpleType name="website">
<xs:restriction base="xs:anyURI">
<xs:pattern value="http(s)?://(\S)+[^/]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Name">
<xs:restriction base="xs:string">
<xs:pattern value="[^\s]+([\s][^\s]+)*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:pattern value="[^\s]+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>