mcp-server-for-oscal 0.1.5__py3-none-any.whl

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 (38) hide show
  1. mcp_server_for_oscal/__init__.py +0 -0
  2. mcp_server_for_oscal/__main__.py +7 -0
  3. mcp_server_for_oscal/config.py +72 -0
  4. mcp_server_for_oscal/main.py +131 -0
  5. mcp_server_for_oscal/oscal_agent.py +40 -0
  6. mcp_server_for_oscal/oscal_docs/awesome-oscal.md +181 -0
  7. mcp_server_for_oscal/oscal_schemas/README.md +116 -0
  8. mcp_server_for_oscal/oscal_schemas/oscal_assessment-plan_schema.json +1 -0
  9. mcp_server_for_oscal/oscal_schemas/oscal_assessment-plan_schema.xsd +5268 -0
  10. mcp_server_for_oscal/oscal_schemas/oscal_assessment-results_schema.json +1 -0
  11. mcp_server_for_oscal/oscal_schemas/oscal_assessment-results_schema.xsd +5555 -0
  12. mcp_server_for_oscal/oscal_schemas/oscal_catalog_schema.json +1 -0
  13. mcp_server_for_oscal/oscal_schemas/oscal_catalog_schema.xsd +2071 -0
  14. mcp_server_for_oscal/oscal_schemas/oscal_complete_schema.json +1 -0
  15. mcp_server_for_oscal/oscal_schemas/oscal_complete_schema.xsd +9326 -0
  16. mcp_server_for_oscal/oscal_schemas/oscal_component_schema.json +1 -0
  17. mcp_server_for_oscal/oscal_schemas/oscal_component_schema.xsd +3011 -0
  18. mcp_server_for_oscal/oscal_schemas/oscal_mapping_schema.json +1 -0
  19. mcp_server_for_oscal/oscal_schemas/oscal_mapping_schema.xsd +2226 -0
  20. mcp_server_for_oscal/oscal_schemas/oscal_poam_schema.json +1 -0
  21. mcp_server_for_oscal/oscal_schemas/oscal_poam_schema.xsd +5406 -0
  22. mcp_server_for_oscal/oscal_schemas/oscal_profile_schema.json +1 -0
  23. mcp_server_for_oscal/oscal_schemas/oscal_profile_schema.xsd +2493 -0
  24. mcp_server_for_oscal/oscal_schemas/oscal_ssp_schema.json +1 -0
  25. mcp_server_for_oscal/oscal_schemas/oscal_ssp_schema.xsd +3945 -0
  26. mcp_server_for_oscal/py.typed +0 -0
  27. mcp_server_for_oscal/tools/__init__.py +5 -0
  28. mcp_server_for_oscal/tools/get_schema.py +101 -0
  29. mcp_server_for_oscal/tools/list_models.py +79 -0
  30. mcp_server_for_oscal/tools/list_oscal_resources.py +123 -0
  31. mcp_server_for_oscal/tools/query_documentation.py +75 -0
  32. mcp_server_for_oscal/tools/utils.py +37 -0
  33. mcp_server_for_oscal-0.1.5.dist-info/METADATA +137 -0
  34. mcp_server_for_oscal-0.1.5.dist-info/RECORD +38 -0
  35. mcp_server_for_oscal-0.1.5.dist-info/WHEEL +4 -0
  36. mcp_server_for_oscal-0.1.5.dist-info/entry_points.txt +2 -0
  37. mcp_server_for_oscal-0.1.5.dist-info/licenses/LICENSE +175 -0
  38. mcp_server_for_oscal-0.1.5.dist-info/licenses/NOTICE +1 -0
@@ -0,0 +1,2226 @@
1
+ <xs:schema xmlns="http://csrc.nist.gov/ns/oscal/1.0"
2
+ xmlns:m="http://csrc.nist.gov/ns/oscal/metaschema/1.0"
3
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
4
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+ elementFormDefault="qualified"
6
+ targetNamespace="http://csrc.nist.gov/ns/oscal/1.0"
7
+ version="1.2.0">
8
+ <xs:annotation>
9
+ <xs:appinfo>
10
+ <m:schema-name>OSCAL Control Mapping Model</m:schema-name>
11
+ <m:schema-version>1.2.0</m:schema-version>
12
+ <m:short-name>oscal-mapping</m:short-name>
13
+ <m:remarks>
14
+ <p>The OSCAL Control mapping format can be used to describe how a collection of security controls and related control enhancements relate to another collection of controls. The root of the Control Catalog format is <code>mapping-collection</code>. </p>
15
+ </m:remarks>
16
+ <m:root>mapping-collection</m:root>
17
+ </xs:appinfo>
18
+ </xs:annotation>
19
+ <xs:element name="mapping-collection"
20
+ type="oscal-mapping-mapping-collection-ASSEMBLY"/>
21
+ <xs:complexType name="oscal-mapping-mapping-collection-ASSEMBLY">
22
+ <xs:annotation>
23
+ <xs:appinfo>
24
+ <m:formal-name>Mapping Collection</m:formal-name>
25
+ <m:description>A collection of relationship-based control and/or control statement mappings.</m:description>
26
+ </xs:appinfo>
27
+ <xs:documentation>
28
+ <b>Mapping Collection</b>: A collection of relationship-based control and/or control statement mappings.</xs:documentation>
29
+ </xs:annotation>
30
+ <xs:sequence>
31
+ <xs:element name="metadata"
32
+ type="oscal-metadata-metadata-ASSEMBLY"
33
+ minOccurs="1"
34
+ maxOccurs="1"/>
35
+ <xs:element name="provenance"
36
+ type="oscal-mapping-common-mapping-provenance-ASSEMBLY"
37
+ minOccurs="1"
38
+ maxOccurs="1"/>
39
+ <xs:element name="mapping"
40
+ type="oscal-mapping-common-mapping-ASSEMBLY"
41
+ minOccurs="1"
42
+ maxOccurs="unbounded"/>
43
+ <xs:element name="back-matter"
44
+ type="oscal-metadata-back-matter-ASSEMBLY"
45
+ minOccurs="0"
46
+ maxOccurs="1"/>
47
+ </xs:sequence>
48
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
49
+ <xs:annotation>
50
+ <xs:appinfo>
51
+ <m:formal-name>Mapping Collection Universally Unique Identifier</m:formal-name>
52
+ <m:description>A globally unique identifier with cross-instance scope for this catalog instance. This UUID should be changed when this document is revised.</m:description>
53
+ </xs:appinfo>
54
+ <xs:documentation>
55
+ <b>Mapping Collection Universally Unique Identifier</b>: A globally unique identifier with cross-instance scope for this catalog instance. This UUID should be changed when this document is revised.</xs:documentation>
56
+ </xs:annotation>
57
+ </xs:attribute>
58
+ </xs:complexType>
59
+ <xs:complexType name="oscal-metadata-metadata-ASSEMBLY">
60
+ <xs:annotation>
61
+ <xs:appinfo>
62
+ <m:formal-name>Document Metadata</m:formal-name>
63
+ <m:description>Provides information about the containing document, and defines concepts that are shared across the document.</m:description>
64
+ </xs:appinfo>
65
+ <xs:documentation>
66
+ <b>Document Metadata</b>: Provides information about the containing document, and defines concepts that are shared across the document.</xs:documentation>
67
+ </xs:annotation>
68
+ <xs:sequence>
69
+ <xs:element name="title" minOccurs="1" maxOccurs="1">
70
+ <xs:complexType mixed="true">
71
+ <xs:annotation>
72
+ <xs:appinfo>
73
+ <m:formal-name>Document Title</m:formal-name>
74
+ <m:description>A name given to the document, which may be used by a tool for display and navigation.</m:description>
75
+ </xs:appinfo>
76
+ <xs:documentation>
77
+ <b>Document Title</b>: A name given to the document, which may be used by a tool for display and navigation.</xs:documentation>
78
+ </xs:annotation>
79
+ <xs:complexContent>
80
+ <xs:extension base="MarkupLineDatatype"/>
81
+ </xs:complexContent>
82
+ </xs:complexType>
83
+ </xs:element>
84
+ <xs:element name="published"
85
+ type="oscal-metadata-published-FIELD"
86
+ minOccurs="0"
87
+ maxOccurs="1"/>
88
+ <xs:element name="last-modified"
89
+ type="oscal-metadata-last-modified-FIELD"
90
+ minOccurs="1"
91
+ maxOccurs="1"/>
92
+ <xs:element name="version"
93
+ type="oscal-metadata-version-FIELD"
94
+ minOccurs="1"
95
+ maxOccurs="1"/>
96
+ <xs:element name="oscal-version"
97
+ type="oscal-metadata-oscal-version-FIELD"
98
+ minOccurs="1"
99
+ maxOccurs="1"/>
100
+ <xs:element name="revisions" minOccurs="0" maxOccurs="1">
101
+ <xs:annotation>
102
+ <xs:appinfo>
103
+ <m:formal-name>revisions</m:formal-name>
104
+ <m:description>A group of 'revision' elements</m:description>
105
+ </xs:appinfo>
106
+ <xs:documentation>
107
+ <b>revisions</b>: A group of 'revision' elements</xs:documentation>
108
+ </xs:annotation>
109
+ <xs:complexType>
110
+ <xs:sequence>
111
+ <xs:element name="revision" minOccurs="0" maxOccurs="unbounded">
112
+ <xs:complexType>
113
+ <xs:annotation>
114
+ <xs:appinfo>
115
+ <m:formal-name>Revision History Entry</m:formal-name>
116
+ <m:description>An entry in a sequential list of revisions to the containing document, expected to be in reverse chronological order (i.e. latest first).</m:description>
117
+ </xs:appinfo>
118
+ <xs:documentation>
119
+ <b>Revision History Entry</b>: An entry in a sequential list of revisions to the containing document, expected to be in reverse chronological order (i.e. latest first).</xs:documentation>
120
+ </xs:annotation>
121
+ <xs:sequence>
122
+ <xs:element name="title" minOccurs="0" maxOccurs="1">
123
+ <xs:complexType mixed="true">
124
+ <xs:annotation>
125
+ <xs:appinfo>
126
+ <m:formal-name>Document Title</m:formal-name>
127
+ <m:description>A name given to the document revision, which may be used by a tool for display and navigation.</m:description>
128
+ </xs:appinfo>
129
+ <xs:documentation>
130
+ <b>Document Title</b>: A name given to the document revision, which may be used by a tool for display and navigation.</xs:documentation>
131
+ </xs:annotation>
132
+ <xs:complexContent>
133
+ <xs:extension base="MarkupLineDatatype"/>
134
+ </xs:complexContent>
135
+ </xs:complexType>
136
+ </xs:element>
137
+ <xs:element name="published"
138
+ type="oscal-metadata-published-FIELD"
139
+ minOccurs="0"
140
+ maxOccurs="1"/>
141
+ <xs:element name="last-modified"
142
+ type="oscal-metadata-last-modified-FIELD"
143
+ minOccurs="0"
144
+ maxOccurs="1"/>
145
+ <xs:element name="version"
146
+ type="oscal-metadata-version-FIELD"
147
+ minOccurs="1"
148
+ maxOccurs="1"/>
149
+ <xs:element name="oscal-version"
150
+ type="oscal-metadata-oscal-version-FIELD"
151
+ minOccurs="0"
152
+ maxOccurs="1"/>
153
+ <xs:element name="prop"
154
+ type="oscal-metadata-property-ASSEMBLY"
155
+ minOccurs="0"
156
+ maxOccurs="unbounded"/>
157
+ <xs:element name="link"
158
+ type="oscal-metadata-link-ASSEMBLY"
159
+ minOccurs="0"
160
+ maxOccurs="unbounded"/>
161
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
162
+ <xs:annotation>
163
+ <xs:appinfo>
164
+ <m:formal-name>Remarks</m:formal-name>
165
+ <m:description>Additional commentary about the containing object.</m:description>
166
+ </xs:appinfo>
167
+ <xs:documentation>
168
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
169
+ </xs:annotation>
170
+ <xs:complexType>
171
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
172
+ </xs:complexType>
173
+ </xs:element>
174
+ </xs:sequence>
175
+ </xs:complexType>
176
+ </xs:element>
177
+ </xs:sequence>
178
+ </xs:complexType>
179
+ </xs:element>
180
+ <xs:element name="document-id"
181
+ type="oscal-metadata-document-id-FIELD"
182
+ minOccurs="0"
183
+ maxOccurs="unbounded"/>
184
+ <xs:element name="prop"
185
+ type="oscal-metadata-property-ASSEMBLY"
186
+ minOccurs="0"
187
+ maxOccurs="unbounded"/>
188
+ <xs:element name="link"
189
+ type="oscal-metadata-link-ASSEMBLY"
190
+ minOccurs="0"
191
+ maxOccurs="unbounded"/>
192
+ <xs:element name="role" minOccurs="0" maxOccurs="unbounded">
193
+ <xs:complexType>
194
+ <xs:annotation>
195
+ <xs:appinfo>
196
+ <m:formal-name>Role</m:formal-name>
197
+ <m:description>Defines a function, which might be assigned to a party in a specific situation.</m:description>
198
+ </xs:appinfo>
199
+ <xs:documentation>
200
+ <b>Role</b>: Defines a function, which might be assigned to a party in a specific situation.</xs:documentation>
201
+ </xs:annotation>
202
+ <xs:sequence>
203
+ <xs:element name="title" minOccurs="1" maxOccurs="1">
204
+ <xs:complexType mixed="true">
205
+ <xs:annotation>
206
+ <xs:appinfo>
207
+ <m:formal-name>Role Title</m:formal-name>
208
+ <m:description>A name given to the role, which may be used by a tool for display and navigation.</m:description>
209
+ </xs:appinfo>
210
+ <xs:documentation>
211
+ <b>Role Title</b>: A name given to the role, which may be used by a tool for display and navigation.</xs:documentation>
212
+ </xs:annotation>
213
+ <xs:complexContent>
214
+ <xs:extension base="MarkupLineDatatype"/>
215
+ </xs:complexContent>
216
+ </xs:complexType>
217
+ </xs:element>
218
+ <xs:element name="short-name" minOccurs="0" maxOccurs="1">
219
+ <xs:simpleType>
220
+ <xs:annotation>
221
+ <xs:appinfo>
222
+ <m:formal-name>Role Short Name</m:formal-name>
223
+ <m:description>A short common name, abbreviation, or acronym for the role.</m:description>
224
+ </xs:appinfo>
225
+ <xs:documentation>
226
+ <b>Role Short Name</b>: A short common name, abbreviation, or acronym for the role.</xs:documentation>
227
+ </xs:annotation>
228
+ <xs:restriction base="StringDatatype"/>
229
+ </xs:simpleType>
230
+ </xs:element>
231
+ <xs:element name="description" minOccurs="0" maxOccurs="1">
232
+ <xs:complexType>
233
+ <xs:annotation>
234
+ <xs:appinfo>
235
+ <m:formal-name>Role Description</m:formal-name>
236
+ <m:description>A summary of the role's purpose and associated responsibilities.</m:description>
237
+ </xs:appinfo>
238
+ <xs:documentation>
239
+ <b>Role Description</b>: A summary of the role's purpose and associated responsibilities.</xs:documentation>
240
+ </xs:annotation>
241
+ <xs:complexContent>
242
+ <xs:extension base="MarkupMultilineDatatype"/>
243
+ </xs:complexContent>
244
+ </xs:complexType>
245
+ </xs:element>
246
+ <xs:element name="prop"
247
+ type="oscal-metadata-property-ASSEMBLY"
248
+ minOccurs="0"
249
+ maxOccurs="unbounded"/>
250
+ <xs:element name="link"
251
+ type="oscal-metadata-link-ASSEMBLY"
252
+ minOccurs="0"
253
+ maxOccurs="unbounded"/>
254
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
255
+ <xs:annotation>
256
+ <xs:appinfo>
257
+ <m:formal-name>Remarks</m:formal-name>
258
+ <m:description>Additional commentary about the containing object.</m:description>
259
+ </xs:appinfo>
260
+ <xs:documentation>
261
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
262
+ </xs:annotation>
263
+ <xs:complexType>
264
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
265
+ </xs:complexType>
266
+ </xs:element>
267
+ </xs:sequence>
268
+ <xs:attribute name="id" use="required" type="TokenDatatype">
269
+ <xs:annotation>
270
+ <xs:appinfo>
271
+ <m:formal-name>Role Identifier</m:formal-name>
272
+ <m:description>A unique identifier for the role.</m:description>
273
+ </xs:appinfo>
274
+ <xs:documentation>
275
+ <b>Role Identifier</b>: A unique identifier for the role.</xs:documentation>
276
+ </xs:annotation>
277
+ </xs:attribute>
278
+ </xs:complexType>
279
+ </xs:element>
280
+ <xs:element name="location" minOccurs="0" maxOccurs="unbounded">
281
+ <xs:complexType>
282
+ <xs:annotation>
283
+ <xs:appinfo>
284
+ <m:formal-name>Location</m:formal-name>
285
+ <m:description>A physical point of presence, which may be associated with people, organizations, or other concepts within the current or linked OSCAL document.</m:description>
286
+ </xs:appinfo>
287
+ <xs:documentation>
288
+ <b>Location</b>: A physical point of presence, which may be associated with people, organizations, or other concepts within the current or linked OSCAL document.</xs:documentation>
289
+ </xs:annotation>
290
+ <xs:sequence>
291
+ <xs:element name="title" minOccurs="0" maxOccurs="1">
292
+ <xs:complexType mixed="true">
293
+ <xs:annotation>
294
+ <xs:appinfo>
295
+ <m:formal-name>Location Title</m:formal-name>
296
+ <m:description>A name given to the location, which may be used by a tool for display and navigation.</m:description>
297
+ </xs:appinfo>
298
+ <xs:documentation>
299
+ <b>Location Title</b>: A name given to the location, which may be used by a tool for display and navigation.</xs:documentation>
300
+ </xs:annotation>
301
+ <xs:complexContent>
302
+ <xs:extension base="MarkupLineDatatype"/>
303
+ </xs:complexContent>
304
+ </xs:complexType>
305
+ </xs:element>
306
+ <xs:element name="address"
307
+ type="oscal-metadata-address-ASSEMBLY"
308
+ minOccurs="0"
309
+ maxOccurs="1"/>
310
+ <xs:element name="email-address"
311
+ type="oscal-metadata-email-address-FIELD"
312
+ minOccurs="0"
313
+ maxOccurs="unbounded"/>
314
+ <xs:element name="telephone-number"
315
+ type="oscal-metadata-telephone-number-FIELD"
316
+ minOccurs="0"
317
+ maxOccurs="unbounded"/>
318
+ <xs:element name="url" minOccurs="0" maxOccurs="unbounded">
319
+ <xs:simpleType>
320
+ <xs:annotation>
321
+ <xs:appinfo>
322
+ <m:formal-name>Location URL</m:formal-name>
323
+ <m:description>The uniform resource locator (URL) for a web site or other resource associated with the location.</m:description>
324
+ </xs:appinfo>
325
+ <xs:documentation>
326
+ <b>Location URL</b>: The uniform resource locator (URL) for a web site or other resource associated with the location.</xs:documentation>
327
+ </xs:annotation>
328
+ <xs:restriction base="URIDatatype"/>
329
+ </xs:simpleType>
330
+ </xs:element>
331
+ <xs:element name="prop"
332
+ type="oscal-metadata-property-ASSEMBLY"
333
+ minOccurs="0"
334
+ maxOccurs="unbounded"/>
335
+ <xs:element name="link"
336
+ type="oscal-metadata-link-ASSEMBLY"
337
+ minOccurs="0"
338
+ maxOccurs="unbounded"/>
339
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
340
+ <xs:annotation>
341
+ <xs:appinfo>
342
+ <m:formal-name>Remarks</m:formal-name>
343
+ <m:description>Additional commentary about the containing object.</m:description>
344
+ </xs:appinfo>
345
+ <xs:documentation>
346
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
347
+ </xs:annotation>
348
+ <xs:complexType>
349
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
350
+ </xs:complexType>
351
+ </xs:element>
352
+ </xs:sequence>
353
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
354
+ <xs:annotation>
355
+ <xs:appinfo>
356
+ <m:formal-name>Location Universally Unique Identifier</m:formal-name>
357
+ <m:description>A unique ID for the location, for reference.</m:description>
358
+ </xs:appinfo>
359
+ <xs:documentation>
360
+ <b>Location Universally Unique Identifier</b>: A unique ID for the location, for reference.</xs:documentation>
361
+ </xs:annotation>
362
+ </xs:attribute>
363
+ </xs:complexType>
364
+ </xs:element>
365
+ <xs:element name="party" minOccurs="0" maxOccurs="unbounded">
366
+ <xs:complexType>
367
+ <xs:annotation>
368
+ <xs:appinfo>
369
+ <m:formal-name>Party</m:formal-name>
370
+ <m:description>An organization or person, which may be associated with roles or other concepts within the current or linked OSCAL document.</m:description>
371
+ </xs:appinfo>
372
+ <xs:documentation>
373
+ <b>Party</b>: An organization or person, which may be associated with roles or other concepts within the current or linked OSCAL document.</xs:documentation>
374
+ </xs:annotation>
375
+ <xs:sequence>
376
+ <xs:element name="name" minOccurs="0" maxOccurs="1">
377
+ <xs:simpleType>
378
+ <xs:annotation>
379
+ <xs:appinfo>
380
+ <m:formal-name>Party Name</m:formal-name>
381
+ <m:description>The full name of the party. This is typically the legal name associated with the party.</m:description>
382
+ </xs:appinfo>
383
+ <xs:documentation>
384
+ <b>Party Name</b>: The full name of the party. This is typically the legal name associated with the party.</xs:documentation>
385
+ </xs:annotation>
386
+ <xs:restriction base="StringDatatype"/>
387
+ </xs:simpleType>
388
+ </xs:element>
389
+ <xs:element name="short-name" minOccurs="0" maxOccurs="1">
390
+ <xs:simpleType>
391
+ <xs:annotation>
392
+ <xs:appinfo>
393
+ <m:formal-name>Party Short Name</m:formal-name>
394
+ <m:description>A short common name, abbreviation, or acronym for the party.</m:description>
395
+ </xs:appinfo>
396
+ <xs:documentation>
397
+ <b>Party Short Name</b>: A short common name, abbreviation, or acronym for the party.</xs:documentation>
398
+ </xs:annotation>
399
+ <xs:restriction base="StringDatatype"/>
400
+ </xs:simpleType>
401
+ </xs:element>
402
+ <xs:element name="external-id" minOccurs="0" maxOccurs="unbounded">
403
+ <xs:complexType>
404
+ <xs:annotation>
405
+ <xs:appinfo>
406
+ <m:formal-name>Party External Identifier</m:formal-name>
407
+ <m:description>An identifier for a person or organization using a designated scheme. e.g. an Open Researcher and Contributor ID (ORCID).</m:description>
408
+ </xs:appinfo>
409
+ <xs:documentation>
410
+ <b>Party External Identifier</b>: An identifier for a person or organization using a designated scheme. e.g. an Open Researcher and Contributor ID (ORCID).</xs:documentation>
411
+ </xs:annotation>
412
+ <xs:simpleContent>
413
+ <xs:extension base="StringDatatype">
414
+ <xs:attribute name="scheme" use="required" type="URIDatatype">
415
+ <xs:annotation>
416
+ <xs:appinfo>
417
+ <m:formal-name>External Identifier Schema</m:formal-name>
418
+ <m:description>Indicates the type of external identifier.</m:description>
419
+ </xs:appinfo>
420
+ <xs:documentation>
421
+ <b>External Identifier Schema</b>: Indicates the type of external identifier.</xs:documentation>
422
+ </xs:annotation>
423
+ </xs:attribute>
424
+ </xs:extension>
425
+ </xs:simpleContent>
426
+ </xs:complexType>
427
+ </xs:element>
428
+ <xs:element name="prop"
429
+ type="oscal-metadata-property-ASSEMBLY"
430
+ minOccurs="0"
431
+ maxOccurs="unbounded"/>
432
+ <xs:element name="link"
433
+ type="oscal-metadata-link-ASSEMBLY"
434
+ minOccurs="0"
435
+ maxOccurs="unbounded"/>
436
+ <xs:element name="email-address"
437
+ type="oscal-metadata-email-address-FIELD"
438
+ minOccurs="0"
439
+ maxOccurs="unbounded"/>
440
+ <xs:element name="telephone-number"
441
+ type="oscal-metadata-telephone-number-FIELD"
442
+ minOccurs="0"
443
+ maxOccurs="unbounded"/>
444
+ <xs:choice>
445
+ <xs:element name="address"
446
+ type="oscal-metadata-address-ASSEMBLY"
447
+ minOccurs="0"
448
+ maxOccurs="unbounded"/>
449
+ <xs:element name="location-uuid"
450
+ type="oscal-metadata-location-uuid-FIELD"
451
+ minOccurs="0"
452
+ maxOccurs="unbounded"/>
453
+ </xs:choice>
454
+ <xs:element name="member-of-organization" minOccurs="0" maxOccurs="unbounded">
455
+ <xs:simpleType>
456
+ <xs:annotation>
457
+ <xs:appinfo>
458
+ <m:formal-name>Organizational Affiliation</m:formal-name>
459
+ <m:description>A reference to another <code>party</code> by UUID, typically an organization, that this subject is associated with.</m:description>
460
+ </xs:appinfo>
461
+ <xs:documentation>
462
+ <b>Organizational Affiliation</b>: A reference to another party by UUID, typically an organization, that this subject is associated with.</xs:documentation>
463
+ </xs:annotation>
464
+ <xs:restriction base="UUIDDatatype"/>
465
+ </xs:simpleType>
466
+ </xs:element>
467
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
468
+ <xs:annotation>
469
+ <xs:appinfo>
470
+ <m:formal-name>Remarks</m:formal-name>
471
+ <m:description>Additional commentary about the containing object.</m:description>
472
+ </xs:appinfo>
473
+ <xs:documentation>
474
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
475
+ </xs:annotation>
476
+ <xs:complexType>
477
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
478
+ </xs:complexType>
479
+ </xs:element>
480
+ </xs:sequence>
481
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
482
+ <xs:annotation>
483
+ <xs:appinfo>
484
+ <m:formal-name>Party Universally Unique Identifier</m:formal-name>
485
+ <m:description>A unique identifier for the party.</m:description>
486
+ </xs:appinfo>
487
+ <xs:documentation>
488
+ <b>Party Universally Unique Identifier</b>: A unique identifier for the party.</xs:documentation>
489
+ </xs:annotation>
490
+ </xs:attribute>
491
+ <xs:attribute name="type" use="required" type="StringDatatype">
492
+ <xs:annotation>
493
+ <xs:appinfo>
494
+ <m:formal-name>Party Type</m:formal-name>
495
+ <m:description>A category describing the kind of party the object describes.</m:description>
496
+ </xs:appinfo>
497
+ <xs:documentation>
498
+ <b>Party Type</b>: A category describing the kind of party the object describes.</xs:documentation>
499
+ </xs:annotation>
500
+ </xs:attribute>
501
+ </xs:complexType>
502
+ </xs:element>
503
+ <xs:element name="responsible-party"
504
+ type="oscal-metadata-responsible-party-ASSEMBLY"
505
+ minOccurs="0"
506
+ maxOccurs="unbounded"/>
507
+ <xs:element name="action"
508
+ type="oscal-metadata-action-ASSEMBLY"
509
+ minOccurs="0"
510
+ maxOccurs="unbounded"/>
511
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
512
+ <xs:annotation>
513
+ <xs:appinfo>
514
+ <m:formal-name>Remarks</m:formal-name>
515
+ <m:description>Additional commentary about the containing object.</m:description>
516
+ </xs:appinfo>
517
+ <xs:documentation>
518
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
519
+ </xs:annotation>
520
+ <xs:complexType>
521
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
522
+ </xs:complexType>
523
+ </xs:element>
524
+ </xs:sequence>
525
+ </xs:complexType>
526
+ <xs:simpleType name="oscal-metadata-location-uuid-FIELD">
527
+ <xs:annotation>
528
+ <xs:appinfo>
529
+ <m:formal-name>Location Universally Unique Identifier Reference</m:formal-name>
530
+ <m:description>Reference to a location by UUID.</m:description>
531
+ </xs:appinfo>
532
+ <xs:documentation>
533
+ <b>Location Universally Unique Identifier Reference</b>: Reference to a location by UUID.</xs:documentation>
534
+ </xs:annotation>
535
+ <xs:restriction base="UUIDDatatype"/>
536
+ </xs:simpleType>
537
+ <xs:simpleType name="oscal-metadata-party-uuid-FIELD">
538
+ <xs:annotation>
539
+ <xs:appinfo>
540
+ <m:formal-name>Party Universally Unique Identifier Reference</m:formal-name>
541
+ <m:description>Reference to a party by UUID.</m:description>
542
+ </xs:appinfo>
543
+ <xs:documentation>
544
+ <b>Party Universally Unique Identifier Reference</b>: Reference to a party by UUID.</xs:documentation>
545
+ </xs:annotation>
546
+ <xs:restriction base="UUIDDatatype"/>
547
+ </xs:simpleType>
548
+ <xs:simpleType name="oscal-metadata-role-id-FIELD">
549
+ <xs:annotation>
550
+ <xs:appinfo>
551
+ <m:formal-name>Role Identifier Reference</m:formal-name>
552
+ <m:description>Reference to a role by UUID.</m:description>
553
+ </xs:appinfo>
554
+ <xs:documentation>
555
+ <b>Role Identifier Reference</b>: Reference to a role by UUID.</xs:documentation>
556
+ </xs:annotation>
557
+ <xs:restriction base="TokenDatatype"/>
558
+ </xs:simpleType>
559
+ <xs:complexType name="oscal-metadata-back-matter-ASSEMBLY">
560
+ <xs:annotation>
561
+ <xs:appinfo>
562
+ <m:formal-name>Back matter</m:formal-name>
563
+ <m:description>A collection of resources that may be referenced from within the OSCAL document instance.</m:description>
564
+ </xs:appinfo>
565
+ <xs:documentation>
566
+ <b>Back matter</b>: A collection of resources that may be referenced from within the OSCAL document instance.</xs:documentation>
567
+ </xs:annotation>
568
+ <xs:sequence>
569
+ <xs:element name="resource" minOccurs="0" maxOccurs="unbounded">
570
+ <xs:complexType>
571
+ <xs:annotation>
572
+ <xs:appinfo>
573
+ <m:formal-name>Resource</m:formal-name>
574
+ <m:description>A resource associated with content in the containing document instance. A resource may be directly included in the document using base64 encoding or may point to one or more equivalent internet resources.</m:description>
575
+ </xs:appinfo>
576
+ <xs:documentation>
577
+ <b>Resource</b>: A resource associated with content in the containing document instance. A resource may be directly included in the document using base64 encoding or may point to one or more equivalent internet resources.</xs:documentation>
578
+ </xs:annotation>
579
+ <xs:sequence>
580
+ <xs:element name="title" minOccurs="0" maxOccurs="1">
581
+ <xs:complexType mixed="true">
582
+ <xs:annotation>
583
+ <xs:appinfo>
584
+ <m:formal-name>Resource Title</m:formal-name>
585
+ <m:description>An optional name given to the resource, which may be used by a tool for display and navigation.</m:description>
586
+ </xs:appinfo>
587
+ <xs:documentation>
588
+ <b>Resource Title</b>: An optional name given to the resource, which may be used by a tool for display and navigation.</xs:documentation>
589
+ </xs:annotation>
590
+ <xs:complexContent>
591
+ <xs:extension base="MarkupLineDatatype"/>
592
+ </xs:complexContent>
593
+ </xs:complexType>
594
+ </xs:element>
595
+ <xs:element name="description" minOccurs="0" maxOccurs="1">
596
+ <xs:complexType>
597
+ <xs:annotation>
598
+ <xs:appinfo>
599
+ <m:formal-name>Resource Description</m:formal-name>
600
+ <m:description>An optional short summary of the resource used to indicate the purpose of the resource.</m:description>
601
+ </xs:appinfo>
602
+ <xs:documentation>
603
+ <b>Resource Description</b>: An optional short summary of the resource used to indicate the purpose of the resource.</xs:documentation>
604
+ </xs:annotation>
605
+ <xs:complexContent>
606
+ <xs:extension base="MarkupMultilineDatatype"/>
607
+ </xs:complexContent>
608
+ </xs:complexType>
609
+ </xs:element>
610
+ <xs:element name="prop"
611
+ type="oscal-metadata-property-ASSEMBLY"
612
+ minOccurs="0"
613
+ maxOccurs="unbounded"/>
614
+ <xs:element name="document-id"
615
+ type="oscal-metadata-document-id-FIELD"
616
+ minOccurs="0"
617
+ maxOccurs="unbounded"/>
618
+ <xs:element name="citation" minOccurs="0" maxOccurs="1">
619
+ <xs:complexType>
620
+ <xs:annotation>
621
+ <xs:appinfo>
622
+ <m:formal-name>Citation</m:formal-name>
623
+ <m:description>An optional citation consisting of end note text using structured markup.</m:description>
624
+ </xs:appinfo>
625
+ <xs:documentation>
626
+ <b>Citation</b>: An optional citation consisting of end note text using structured markup.</xs:documentation>
627
+ </xs:annotation>
628
+ <xs:sequence>
629
+ <xs:element name="text" minOccurs="1" maxOccurs="1">
630
+ <xs:complexType mixed="true">
631
+ <xs:annotation>
632
+ <xs:appinfo>
633
+ <m:formal-name>Citation Text</m:formal-name>
634
+ <m:description>A line of citation text.</m:description>
635
+ </xs:appinfo>
636
+ <xs:documentation>
637
+ <b>Citation Text</b>: A line of citation text.</xs:documentation>
638
+ </xs:annotation>
639
+ <xs:complexContent>
640
+ <xs:extension base="MarkupLineDatatype"/>
641
+ </xs:complexContent>
642
+ </xs:complexType>
643
+ </xs:element>
644
+ <xs:element name="prop"
645
+ type="oscal-metadata-property-ASSEMBLY"
646
+ minOccurs="0"
647
+ maxOccurs="unbounded"/>
648
+ <xs:element name="link"
649
+ type="oscal-metadata-link-ASSEMBLY"
650
+ minOccurs="0"
651
+ maxOccurs="unbounded"/>
652
+ </xs:sequence>
653
+ </xs:complexType>
654
+ </xs:element>
655
+ <xs:element name="rlink" minOccurs="0" maxOccurs="unbounded">
656
+ <xs:complexType>
657
+ <xs:annotation>
658
+ <xs:appinfo>
659
+ <m:formal-name>Resource link</m:formal-name>
660
+ <m:description>A URL-based pointer to an external resource with an optional hash for verification and change detection.</m:description>
661
+ </xs:appinfo>
662
+ <xs:documentation>
663
+ <b>Resource link</b>: A URL-based pointer to an external resource with an optional hash for verification and change detection.</xs:documentation>
664
+ </xs:annotation>
665
+ <xs:sequence>
666
+ <xs:element name="hash"
667
+ type="oscal-metadata-hash-FIELD"
668
+ minOccurs="0"
669
+ maxOccurs="unbounded"/>
670
+ </xs:sequence>
671
+ <xs:attribute name="href" use="required" type="URIReferenceDatatype">
672
+ <xs:annotation>
673
+ <xs:appinfo>
674
+ <m:formal-name>Hypertext Reference</m:formal-name>
675
+ <m:description>A resolvable URL pointing to the referenced resource.</m:description>
676
+ </xs:appinfo>
677
+ <xs:documentation>
678
+ <b>Hypertext Reference</b>: A resolvable URL pointing to the referenced resource.</xs:documentation>
679
+ </xs:annotation>
680
+ </xs:attribute>
681
+ <xs:attribute name="media-type" type="StringDatatype">
682
+ <xs:annotation>
683
+ <xs:appinfo>
684
+ <m:formal-name>Media Type</m:formal-name>
685
+ <m:description>A label that indicates the nature of a resource, as a data serialization or format.</m:description>
686
+ </xs:appinfo>
687
+ <xs:documentation>
688
+ <b>Media Type</b>: A label that indicates the nature of a resource, as a data serialization or format.</xs:documentation>
689
+ </xs:annotation>
690
+ </xs:attribute>
691
+ </xs:complexType>
692
+ </xs:element>
693
+ <xs:element name="base64" minOccurs="0" maxOccurs="1">
694
+ <xs:complexType>
695
+ <xs:annotation>
696
+ <xs:appinfo>
697
+ <m:formal-name>Base64</m:formal-name>
698
+ <m:description>A resource encoded using the Base64 alphabet defined by <a href="https://www.rfc-editor.org/rfc/rfc2045.html">RFC 2045</a>.</m:description>
699
+ </xs:appinfo>
700
+ <xs:documentation>
701
+ <b>Base64</b>: A resource encoded using the Base64 alphabet defined by RFC 2045.</xs:documentation>
702
+ </xs:annotation>
703
+ <xs:simpleContent>
704
+ <xs:extension base="Base64Datatype">
705
+ <xs:attribute name="filename" type="TokenDatatype">
706
+ <xs:annotation>
707
+ <xs:appinfo>
708
+ <m:formal-name>File Name</m:formal-name>
709
+ <m:description>Name of the file before it was encoded as Base64 to be embedded in a <code>resource</code>. This is the name that will be assigned to the file when the file is decoded.</m:description>
710
+ </xs:appinfo>
711
+ <xs:documentation>
712
+ <b>File Name</b>: Name of the file before it was encoded as Base64 to be embedded in a resource. This is the name that will be assigned to the file when the file is decoded.</xs:documentation>
713
+ </xs:annotation>
714
+ </xs:attribute>
715
+ <xs:attribute name="media-type" type="StringDatatype">
716
+ <xs:annotation>
717
+ <xs:appinfo>
718
+ <m:formal-name>Media Type</m:formal-name>
719
+ <m:description>A label that indicates the nature of a resource, as a data serialization or format.</m:description>
720
+ </xs:appinfo>
721
+ <xs:documentation>
722
+ <b>Media Type</b>: A label that indicates the nature of a resource, as a data serialization or format.</xs:documentation>
723
+ </xs:annotation>
724
+ </xs:attribute>
725
+ </xs:extension>
726
+ </xs:simpleContent>
727
+ </xs:complexType>
728
+ </xs:element>
729
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
730
+ <xs:annotation>
731
+ <xs:appinfo>
732
+ <m:formal-name>Remarks</m:formal-name>
733
+ <m:description>Additional commentary about the containing object.</m:description>
734
+ </xs:appinfo>
735
+ <xs:documentation>
736
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
737
+ </xs:annotation>
738
+ <xs:complexType>
739
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
740
+ </xs:complexType>
741
+ </xs:element>
742
+ </xs:sequence>
743
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
744
+ <xs:annotation>
745
+ <xs:appinfo>
746
+ <m:formal-name>Resource Universally Unique Identifier</m:formal-name>
747
+ <m:description>A unique identifier for a resource.</m:description>
748
+ </xs:appinfo>
749
+ <xs:documentation>
750
+ <b>Resource Universally Unique Identifier</b>: A unique identifier for a resource.</xs:documentation>
751
+ </xs:annotation>
752
+ </xs:attribute>
753
+ </xs:complexType>
754
+ </xs:element>
755
+ </xs:sequence>
756
+ </xs:complexType>
757
+ <xs:complexType name="oscal-metadata-property-ASSEMBLY">
758
+ <xs:annotation>
759
+ <xs:appinfo>
760
+ <m:formal-name>Property</m:formal-name>
761
+ <m:description>An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.</m:description>
762
+ </xs:appinfo>
763
+ <xs:documentation>
764
+ <b>Property</b>: An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.</xs:documentation>
765
+ </xs:annotation>
766
+ <xs:sequence>
767
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
768
+ <xs:annotation>
769
+ <xs:appinfo>
770
+ <m:formal-name>Remarks</m:formal-name>
771
+ <m:description>Additional commentary about the containing object.</m:description>
772
+ </xs:appinfo>
773
+ <xs:documentation>
774
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
775
+ </xs:annotation>
776
+ <xs:complexType>
777
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
778
+ </xs:complexType>
779
+ </xs:element>
780
+ </xs:sequence>
781
+ <xs:attribute name="name" use="required" type="TokenDatatype">
782
+ <xs:annotation>
783
+ <xs:appinfo>
784
+ <m:formal-name>Property Name</m:formal-name>
785
+ <m:description>A textual label, within a namespace, that identifies a specific attribute, characteristic, or quality of the property's containing object.</m:description>
786
+ </xs:appinfo>
787
+ <xs:documentation>
788
+ <b>Property Name</b>: A textual label, within a namespace, that identifies a specific attribute, characteristic, or quality of the property's containing object.</xs:documentation>
789
+ </xs:annotation>
790
+ </xs:attribute>
791
+ <xs:attribute name="uuid" type="UUIDDatatype">
792
+ <xs:annotation>
793
+ <xs:appinfo>
794
+ <m:formal-name>Property Universally Unique Identifier</m:formal-name>
795
+ <m:description>A unique identifier for a property.</m:description>
796
+ </xs:appinfo>
797
+ <xs:documentation>
798
+ <b>Property Universally Unique Identifier</b>: A unique identifier for a property.</xs:documentation>
799
+ </xs:annotation>
800
+ </xs:attribute>
801
+ <xs:attribute name="ns" type="URIDatatype">
802
+ <xs:annotation>
803
+ <xs:appinfo>
804
+ <m:formal-name>Property Namespace</m:formal-name>
805
+ <m:description>A namespace qualifying the property's name. This allows different organizations to associate distinct semantics with the same name.</m:description>
806
+ </xs:appinfo>
807
+ <xs:documentation>
808
+ <b>Property Namespace</b>: A namespace qualifying the property's name. This allows different organizations to associate distinct semantics with the same name.</xs:documentation>
809
+ </xs:annotation>
810
+ </xs:attribute>
811
+ <xs:attribute name="value" use="required" type="StringDatatype">
812
+ <xs:annotation>
813
+ <xs:appinfo>
814
+ <m:formal-name>Property Value</m:formal-name>
815
+ <m:description>Indicates the value of the attribute, characteristic, or quality.</m:description>
816
+ </xs:appinfo>
817
+ <xs:documentation>
818
+ <b>Property Value</b>: Indicates the value of the attribute, characteristic, or quality.</xs:documentation>
819
+ </xs:annotation>
820
+ </xs:attribute>
821
+ <xs:attribute name="class" type="TokenDatatype">
822
+ <xs:annotation>
823
+ <xs:appinfo>
824
+ <m:formal-name>Property Class</m:formal-name>
825
+ <m:description>A textual label that provides a sub-type or characterization of the property's <code>name</code>.</m:description>
826
+ </xs:appinfo>
827
+ <xs:documentation>
828
+ <b>Property Class</b>: A textual label that provides a sub-type or characterization of the property's name.</xs:documentation>
829
+ </xs:annotation>
830
+ </xs:attribute>
831
+ <xs:attribute name="group" type="TokenDatatype">
832
+ <xs:annotation>
833
+ <xs:appinfo>
834
+ <m:formal-name>Property Group</m:formal-name>
835
+ <m:description>An identifier for relating distinct sets of properties.</m:description>
836
+ </xs:appinfo>
837
+ <xs:documentation>
838
+ <b>Property Group</b>: An identifier for relating distinct sets of properties.</xs:documentation>
839
+ </xs:annotation>
840
+ </xs:attribute>
841
+ </xs:complexType>
842
+ <xs:complexType name="oscal-metadata-link-ASSEMBLY">
843
+ <xs:annotation>
844
+ <xs:appinfo>
845
+ <m:formal-name>Link</m:formal-name>
846
+ <m:description>A reference to a local or remote resource, that has a specific relation to the containing object.</m:description>
847
+ </xs:appinfo>
848
+ <xs:documentation>
849
+ <b>Link</b>: A reference to a local or remote resource, that has a specific relation to the containing object.</xs:documentation>
850
+ </xs:annotation>
851
+ <xs:sequence>
852
+ <xs:element name="text" minOccurs="0" maxOccurs="1">
853
+ <xs:complexType mixed="true">
854
+ <xs:annotation>
855
+ <xs:appinfo>
856
+ <m:formal-name>Link Text</m:formal-name>
857
+ <m:description>A textual label to associate with the link, which may be used for presentation in a tool.</m:description>
858
+ </xs:appinfo>
859
+ <xs:documentation>
860
+ <b>Link Text</b>: A textual label to associate with the link, which may be used for presentation in a tool.</xs:documentation>
861
+ </xs:annotation>
862
+ <xs:complexContent>
863
+ <xs:extension base="MarkupLineDatatype"/>
864
+ </xs:complexContent>
865
+ </xs:complexType>
866
+ </xs:element>
867
+ </xs:sequence>
868
+ <xs:attribute name="href" use="required" type="URIReferenceDatatype">
869
+ <xs:annotation>
870
+ <xs:appinfo>
871
+ <m:formal-name>Hypertext Reference</m:formal-name>
872
+ <m:description>A resolvable URL reference to a resource.</m:description>
873
+ </xs:appinfo>
874
+ <xs:documentation>
875
+ <b>Hypertext Reference</b>: A resolvable URL reference to a resource.</xs:documentation>
876
+ </xs:annotation>
877
+ </xs:attribute>
878
+ <xs:attribute name="rel" type="TokenDatatype">
879
+ <xs:annotation>
880
+ <xs:appinfo>
881
+ <m:formal-name>Link Relation Type</m:formal-name>
882
+ <m:description>Describes the type of relationship provided by the link's hypertext reference. This can be an indicator of the link's purpose.</m:description>
883
+ </xs:appinfo>
884
+ <xs:documentation>
885
+ <b>Link Relation Type</b>: Describes the type of relationship provided by the link's hypertext reference. This can be an indicator of the link's purpose.</xs:documentation>
886
+ </xs:annotation>
887
+ </xs:attribute>
888
+ <xs:attribute name="media-type" type="StringDatatype">
889
+ <xs:annotation>
890
+ <xs:appinfo>
891
+ <m:formal-name>Media Type</m:formal-name>
892
+ <m:description>A label that indicates the nature of a resource, as a data serialization or format.</m:description>
893
+ </xs:appinfo>
894
+ <xs:documentation>
895
+ <b>Media Type</b>: A label that indicates the nature of a resource, as a data serialization or format.</xs:documentation>
896
+ </xs:annotation>
897
+ </xs:attribute>
898
+ <xs:attribute name="resource-fragment" type="StringDatatype">
899
+ <xs:annotation>
900
+ <xs:appinfo>
901
+ <m:formal-name>Resource Fragment</m:formal-name>
902
+ <m:description>In case where the <code>href</code> points to a <code>back-matter/resource</code>, this value will indicate the URI <a href="https://www.rfc-editor.org/rfc/rfc3986#section-3.5">fragment</a> to append to any <code>rlink</code> associated with the resource. This value MUST be <a href="https://www.rfc-editor.org/rfc/rfc3986#section-2.1">URI encoded</a>.</m:description>
903
+ </xs:appinfo>
904
+ <xs:documentation>
905
+ <b>Resource Fragment</b>: In case where the href points to a back-matter/resource, this value will indicate the URI fragment to append to any rlink associated with the resource. This value MUST be URI encoded.</xs:documentation>
906
+ </xs:annotation>
907
+ </xs:attribute>
908
+ </xs:complexType>
909
+ <xs:complexType name="oscal-metadata-responsible-party-ASSEMBLY">
910
+ <xs:annotation>
911
+ <xs:appinfo>
912
+ <m:formal-name>Responsible Party</m:formal-name>
913
+ <m:description>A reference to a set of persons and/or organizations that have responsibility for performing the referenced role in the context of the containing object.</m:description>
914
+ </xs:appinfo>
915
+ <xs:documentation>
916
+ <b>Responsible Party</b>: A reference to a set of persons and/or organizations that have responsibility for performing the referenced role in the context of the containing object.</xs:documentation>
917
+ </xs:annotation>
918
+ <xs:sequence>
919
+ <xs:element name="party-uuid"
920
+ type="oscal-metadata-party-uuid-FIELD"
921
+ minOccurs="1"
922
+ maxOccurs="unbounded"/>
923
+ <xs:element name="prop"
924
+ type="oscal-metadata-property-ASSEMBLY"
925
+ minOccurs="0"
926
+ maxOccurs="unbounded"/>
927
+ <xs:element name="link"
928
+ type="oscal-metadata-link-ASSEMBLY"
929
+ minOccurs="0"
930
+ maxOccurs="unbounded"/>
931
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
932
+ <xs:annotation>
933
+ <xs:appinfo>
934
+ <m:formal-name>Remarks</m:formal-name>
935
+ <m:description>Additional commentary about the containing object.</m:description>
936
+ </xs:appinfo>
937
+ <xs:documentation>
938
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
939
+ </xs:annotation>
940
+ <xs:complexType>
941
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
942
+ </xs:complexType>
943
+ </xs:element>
944
+ </xs:sequence>
945
+ <xs:attribute name="role-id" use="required" type="TokenDatatype">
946
+ <xs:annotation>
947
+ <xs:appinfo>
948
+ <m:formal-name>Responsible Role</m:formal-name>
949
+ <m:description>A reference to a <code>role</code> performed by a <code>party</code>.</m:description>
950
+ </xs:appinfo>
951
+ <xs:documentation>
952
+ <b>Responsible Role</b>: A reference to a role performed by a party.</xs:documentation>
953
+ </xs:annotation>
954
+ </xs:attribute>
955
+ </xs:complexType>
956
+ <xs:complexType name="oscal-metadata-action-ASSEMBLY">
957
+ <xs:annotation>
958
+ <xs:appinfo>
959
+ <m:formal-name>Action</m:formal-name>
960
+ <m:description>An action applied by a role within a given party to the content.</m:description>
961
+ </xs:appinfo>
962
+ <xs:documentation>
963
+ <b>Action</b>: An action applied by a role within a given party to the content.</xs:documentation>
964
+ </xs:annotation>
965
+ <xs:sequence>
966
+ <xs:element name="prop"
967
+ type="oscal-metadata-property-ASSEMBLY"
968
+ minOccurs="0"
969
+ maxOccurs="unbounded"/>
970
+ <xs:element name="link"
971
+ type="oscal-metadata-link-ASSEMBLY"
972
+ minOccurs="0"
973
+ maxOccurs="unbounded"/>
974
+ <xs:element name="responsible-party"
975
+ type="oscal-metadata-responsible-party-ASSEMBLY"
976
+ minOccurs="0"
977
+ maxOccurs="unbounded"/>
978
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
979
+ <xs:annotation>
980
+ <xs:appinfo>
981
+ <m:formal-name>Remarks</m:formal-name>
982
+ <m:description>Additional commentary about the containing object.</m:description>
983
+ </xs:appinfo>
984
+ <xs:documentation>
985
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
986
+ </xs:annotation>
987
+ <xs:complexType>
988
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
989
+ </xs:complexType>
990
+ </xs:element>
991
+ </xs:sequence>
992
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
993
+ <xs:annotation>
994
+ <xs:appinfo>
995
+ <m:formal-name>Action Universally Unique Identifier</m:formal-name>
996
+ <m:description>A unique identifier that can be used to reference this defined action elsewhere in an OSCAL document. A UUID should be consistently used for a given location across revisions of the document.</m:description>
997
+ </xs:appinfo>
998
+ <xs:documentation>
999
+ <b>Action Universally Unique Identifier</b>: A unique identifier that can be used to reference this defined action elsewhere in an OSCAL document. A UUID should be consistently used for a given location across revisions of the document.</xs:documentation>
1000
+ </xs:annotation>
1001
+ </xs:attribute>
1002
+ <xs:attribute name="date" type="DateTimeWithTimezoneDatatype">
1003
+ <xs:annotation>
1004
+ <xs:appinfo>
1005
+ <m:formal-name>Action Occurrence Date</m:formal-name>
1006
+ <m:description>The date and time when the action occurred.</m:description>
1007
+ </xs:appinfo>
1008
+ <xs:documentation>
1009
+ <b>Action Occurrence Date</b>: The date and time when the action occurred.</xs:documentation>
1010
+ </xs:annotation>
1011
+ </xs:attribute>
1012
+ <xs:attribute name="type" use="required" type="TokenDatatype">
1013
+ <xs:annotation>
1014
+ <xs:appinfo>
1015
+ <m:formal-name>Action Type</m:formal-name>
1016
+ <m:description>The type of action documented by the assembly, such as an approval.</m:description>
1017
+ </xs:appinfo>
1018
+ <xs:documentation>
1019
+ <b>Action Type</b>: The type of action documented by the assembly, such as an approval.</xs:documentation>
1020
+ </xs:annotation>
1021
+ </xs:attribute>
1022
+ <xs:attribute name="system" use="required" type="URIDatatype">
1023
+ <xs:annotation>
1024
+ <xs:appinfo>
1025
+ <m:formal-name>Action Type System</m:formal-name>
1026
+ <m:description>Specifies the action type system used.</m:description>
1027
+ </xs:appinfo>
1028
+ <xs:documentation>
1029
+ <b>Action Type System</b>: Specifies the action type system used.</xs:documentation>
1030
+ </xs:annotation>
1031
+ </xs:attribute>
1032
+ </xs:complexType>
1033
+ <xs:complexType name="oscal-metadata-responsible-role-ASSEMBLY">
1034
+ <xs:annotation>
1035
+ <xs:appinfo>
1036
+ <m:formal-name>Responsible Role</m:formal-name>
1037
+ <m:description>A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.</m:description>
1038
+ </xs:appinfo>
1039
+ <xs:documentation>
1040
+ <b>Responsible Role</b>: A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.</xs:documentation>
1041
+ </xs:annotation>
1042
+ <xs:sequence>
1043
+ <xs:element name="prop"
1044
+ type="oscal-metadata-property-ASSEMBLY"
1045
+ minOccurs="0"
1046
+ maxOccurs="unbounded"/>
1047
+ <xs:element name="link"
1048
+ type="oscal-metadata-link-ASSEMBLY"
1049
+ minOccurs="0"
1050
+ maxOccurs="unbounded"/>
1051
+ <xs:element name="party-uuid"
1052
+ type="oscal-metadata-party-uuid-FIELD"
1053
+ minOccurs="0"
1054
+ maxOccurs="unbounded"/>
1055
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
1056
+ <xs:annotation>
1057
+ <xs:appinfo>
1058
+ <m:formal-name>Remarks</m:formal-name>
1059
+ <m:description>Additional commentary about the containing object.</m:description>
1060
+ </xs:appinfo>
1061
+ <xs:documentation>
1062
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1063
+ </xs:annotation>
1064
+ <xs:complexType>
1065
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1066
+ </xs:complexType>
1067
+ </xs:element>
1068
+ </xs:sequence>
1069
+ <xs:attribute name="role-id" use="required" type="TokenDatatype">
1070
+ <xs:annotation>
1071
+ <xs:appinfo>
1072
+ <m:formal-name>Responsible Role ID</m:formal-name>
1073
+ <m:description>A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#human-oriented">human-oriented</a> identifier reference to a <code>role</code> performed.</m:description>
1074
+ </xs:appinfo>
1075
+ <xs:documentation>
1076
+ <b>Responsible Role ID</b>: A human-oriented identifier reference to a role performed.</xs:documentation>
1077
+ </xs:annotation>
1078
+ </xs:attribute>
1079
+ </xs:complexType>
1080
+ <xs:complexType name="oscal-metadata-hash-FIELD">
1081
+ <xs:annotation>
1082
+ <xs:appinfo>
1083
+ <m:formal-name>Hash</m:formal-name>
1084
+ <m:description>A representation of a cryptographic digest generated over a resource using a specified hash algorithm.</m:description>
1085
+ </xs:appinfo>
1086
+ <xs:documentation>
1087
+ <b>Hash</b>: A representation of a cryptographic digest generated over a resource using a specified hash algorithm.</xs:documentation>
1088
+ </xs:annotation>
1089
+ <xs:simpleContent>
1090
+ <xs:extension base="StringDatatype">
1091
+ <xs:attribute name="algorithm" use="required" type="StringDatatype">
1092
+ <xs:annotation>
1093
+ <xs:appinfo>
1094
+ <m:formal-name>Hash algorithm</m:formal-name>
1095
+ <m:description>The digest method by which a hash is derived.</m:description>
1096
+ </xs:appinfo>
1097
+ <xs:documentation>
1098
+ <b>Hash algorithm</b>: The digest method by which a hash is derived.</xs:documentation>
1099
+ </xs:annotation>
1100
+ </xs:attribute>
1101
+ </xs:extension>
1102
+ </xs:simpleContent>
1103
+ </xs:complexType>
1104
+ <xs:complexType name="oscal-metadata-remarks-FIELD">
1105
+ <xs:annotation>
1106
+ <xs:appinfo>
1107
+ <m:formal-name>Remarks</m:formal-name>
1108
+ <m:description>Additional commentary about the containing object.</m:description>
1109
+ </xs:appinfo>
1110
+ <xs:documentation>
1111
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1112
+ </xs:annotation>
1113
+ <xs:complexContent>
1114
+ <xs:extension base="MarkupMultilineDatatype"/>
1115
+ </xs:complexContent>
1116
+ </xs:complexType>
1117
+ <xs:simpleType name="oscal-metadata-published-FIELD">
1118
+ <xs:annotation>
1119
+ <xs:appinfo>
1120
+ <m:formal-name>Publication Timestamp</m:formal-name>
1121
+ <m:description>The date and time the document was last made available.</m:description>
1122
+ </xs:appinfo>
1123
+ <xs:documentation>
1124
+ <b>Publication Timestamp</b>: The date and time the document was last made available.</xs:documentation>
1125
+ </xs:annotation>
1126
+ <xs:restriction base="DateTimeWithTimezoneDatatype"/>
1127
+ </xs:simpleType>
1128
+ <xs:simpleType name="oscal-metadata-last-modified-FIELD">
1129
+ <xs:annotation>
1130
+ <xs:appinfo>
1131
+ <m:formal-name>Last Modified Timestamp</m:formal-name>
1132
+ <m:description>The date and time the document was last stored for later retrieval.</m:description>
1133
+ </xs:appinfo>
1134
+ <xs:documentation>
1135
+ <b>Last Modified Timestamp</b>: The date and time the document was last stored for later retrieval.</xs:documentation>
1136
+ </xs:annotation>
1137
+ <xs:restriction base="DateTimeWithTimezoneDatatype"/>
1138
+ </xs:simpleType>
1139
+ <xs:simpleType name="oscal-metadata-version-FIELD">
1140
+ <xs:annotation>
1141
+ <xs:appinfo>
1142
+ <m:formal-name>Document Version</m:formal-name>
1143
+ <m:description>Used to distinguish a specific revision of an OSCAL document from other previous and future versions.</m:description>
1144
+ </xs:appinfo>
1145
+ <xs:documentation>
1146
+ <b>Document Version</b>: Used to distinguish a specific revision of an OSCAL document from other previous and future versions.</xs:documentation>
1147
+ </xs:annotation>
1148
+ <xs:restriction base="StringDatatype"/>
1149
+ </xs:simpleType>
1150
+ <xs:simpleType name="oscal-metadata-oscal-version-FIELD">
1151
+ <xs:annotation>
1152
+ <xs:appinfo>
1153
+ <m:formal-name>OSCAL Version</m:formal-name>
1154
+ <m:description>The OSCAL model version the document was authored against and will conform to as valid.</m:description>
1155
+ </xs:appinfo>
1156
+ <xs:documentation>
1157
+ <b>OSCAL Version</b>: The OSCAL model version the document was authored against and will conform to as valid.</xs:documentation>
1158
+ </xs:annotation>
1159
+ <xs:restriction base="StringDatatype"/>
1160
+ </xs:simpleType>
1161
+ <xs:simpleType name="oscal-metadata-email-address-FIELD">
1162
+ <xs:annotation>
1163
+ <xs:appinfo>
1164
+ <m:formal-name>Email Address</m:formal-name>
1165
+ <m:description>An email address as defined by <a href="https://tools.ietf.org/html/rfc5322#section-3.4.1">RFC 5322 Section 3.4.1</a>.</m:description>
1166
+ </xs:appinfo>
1167
+ <xs:documentation>
1168
+ <b>Email Address</b>: An email address as defined by RFC 5322 Section 3.4.1.</xs:documentation>
1169
+ </xs:annotation>
1170
+ <xs:restriction base="EmailAddressDatatype"/>
1171
+ </xs:simpleType>
1172
+ <xs:complexType name="oscal-metadata-telephone-number-FIELD">
1173
+ <xs:annotation>
1174
+ <xs:appinfo>
1175
+ <m:formal-name>Telephone Number</m:formal-name>
1176
+ <m:description>A telephone service number as defined by <a href="https://www.itu.int/rec/T-REC-E.164-201011-I/en">ITU-T E.164</a>.</m:description>
1177
+ </xs:appinfo>
1178
+ <xs:documentation>
1179
+ <b>Telephone Number</b>: A telephone service number as defined by ITU-T E.164.</xs:documentation>
1180
+ </xs:annotation>
1181
+ <xs:simpleContent>
1182
+ <xs:extension base="StringDatatype">
1183
+ <xs:attribute name="type" type="StringDatatype">
1184
+ <xs:annotation>
1185
+ <xs:appinfo>
1186
+ <m:formal-name>type flag</m:formal-name>
1187
+ <m:description>Indicates the type of phone number.</m:description>
1188
+ </xs:appinfo>
1189
+ <xs:documentation>
1190
+ <b>type flag</b>: Indicates the type of phone number.</xs:documentation>
1191
+ </xs:annotation>
1192
+ </xs:attribute>
1193
+ </xs:extension>
1194
+ </xs:simpleContent>
1195
+ </xs:complexType>
1196
+ <xs:complexType name="oscal-metadata-address-ASSEMBLY">
1197
+ <xs:annotation>
1198
+ <xs:appinfo>
1199
+ <m:formal-name>Address</m:formal-name>
1200
+ <m:description>A postal address for the location.</m:description>
1201
+ </xs:appinfo>
1202
+ <xs:documentation>
1203
+ <b>Address</b>: A postal address for the location.</xs:documentation>
1204
+ </xs:annotation>
1205
+ <xs:sequence>
1206
+ <xs:element name="addr-line"
1207
+ type="oscal-metadata-addr-line-FIELD"
1208
+ minOccurs="0"
1209
+ maxOccurs="unbounded"/>
1210
+ <xs:element name="city" minOccurs="0" maxOccurs="1">
1211
+ <xs:simpleType>
1212
+ <xs:annotation>
1213
+ <xs:appinfo>
1214
+ <m:formal-name>City</m:formal-name>
1215
+ <m:description>City, town or geographical region for the mailing address.</m:description>
1216
+ </xs:appinfo>
1217
+ <xs:documentation>
1218
+ <b>City</b>: City, town or geographical region for the mailing address.</xs:documentation>
1219
+ </xs:annotation>
1220
+ <xs:restriction base="StringDatatype"/>
1221
+ </xs:simpleType>
1222
+ </xs:element>
1223
+ <xs:element name="state" minOccurs="0" maxOccurs="1">
1224
+ <xs:simpleType>
1225
+ <xs:annotation>
1226
+ <xs:appinfo>
1227
+ <m:formal-name>State</m:formal-name>
1228
+ <m:description>State, province or analogous geographical region for a mailing address.</m:description>
1229
+ </xs:appinfo>
1230
+ <xs:documentation>
1231
+ <b>State</b>: State, province or analogous geographical region for a mailing address.</xs:documentation>
1232
+ </xs:annotation>
1233
+ <xs:restriction base="StringDatatype"/>
1234
+ </xs:simpleType>
1235
+ </xs:element>
1236
+ <xs:element name="postal-code" minOccurs="0" maxOccurs="1">
1237
+ <xs:simpleType>
1238
+ <xs:annotation>
1239
+ <xs:appinfo>
1240
+ <m:formal-name>Postal Code</m:formal-name>
1241
+ <m:description>Postal or ZIP code for mailing address.</m:description>
1242
+ </xs:appinfo>
1243
+ <xs:documentation>
1244
+ <b>Postal Code</b>: Postal or ZIP code for mailing address.</xs:documentation>
1245
+ </xs:annotation>
1246
+ <xs:restriction base="StringDatatype"/>
1247
+ </xs:simpleType>
1248
+ </xs:element>
1249
+ <xs:element name="country" minOccurs="0" maxOccurs="1">
1250
+ <xs:simpleType>
1251
+ <xs:annotation>
1252
+ <xs:appinfo>
1253
+ <m:formal-name>Country Code</m:formal-name>
1254
+ <m:description>The ISO 3166-1 alpha-2 country code for the mailing address.</m:description>
1255
+ </xs:appinfo>
1256
+ <xs:documentation>
1257
+ <b>Country Code</b>: The ISO 3166-1 alpha-2 country code for the mailing address.</xs:documentation>
1258
+ </xs:annotation>
1259
+ <xs:restriction base="StringDatatype"/>
1260
+ </xs:simpleType>
1261
+ </xs:element>
1262
+ </xs:sequence>
1263
+ <xs:attribute name="type" type="TokenDatatype">
1264
+ <xs:annotation>
1265
+ <xs:appinfo>
1266
+ <m:formal-name>Address Type</m:formal-name>
1267
+ <m:description>Indicates the type of address.</m:description>
1268
+ </xs:appinfo>
1269
+ <xs:documentation>
1270
+ <b>Address Type</b>: Indicates the type of address.</xs:documentation>
1271
+ </xs:annotation>
1272
+ </xs:attribute>
1273
+ </xs:complexType>
1274
+ <xs:simpleType name="oscal-metadata-addr-line-FIELD">
1275
+ <xs:annotation>
1276
+ <xs:appinfo>
1277
+ <m:formal-name>Address line</m:formal-name>
1278
+ <m:description>A single line of an address.</m:description>
1279
+ </xs:appinfo>
1280
+ <xs:documentation>
1281
+ <b>Address line</b>: A single line of an address.</xs:documentation>
1282
+ </xs:annotation>
1283
+ <xs:restriction base="StringDatatype"/>
1284
+ </xs:simpleType>
1285
+ <xs:complexType name="oscal-metadata-document-id-FIELD">
1286
+ <xs:annotation>
1287
+ <xs:appinfo>
1288
+ <m:formal-name>Document Identifier</m:formal-name>
1289
+ <m:description>A document identifier qualified by an identifier <code>scheme</code>.</m:description>
1290
+ </xs:appinfo>
1291
+ <xs:documentation>
1292
+ <b>Document Identifier</b>: A document identifier qualified by an identifier scheme.</xs:documentation>
1293
+ </xs:annotation>
1294
+ <xs:simpleContent>
1295
+ <xs:extension base="StringDatatype">
1296
+ <xs:attribute name="scheme" type="URIDatatype">
1297
+ <xs:annotation>
1298
+ <xs:appinfo>
1299
+ <m:formal-name>Document Identification Scheme</m:formal-name>
1300
+ <m:description>Qualifies the kind of document identifier using a URI. If the scheme is not provided the value of the element will be interpreted as a string of characters.</m:description>
1301
+ </xs:appinfo>
1302
+ <xs:documentation>
1303
+ <b>Document Identification Scheme</b>: Qualifies the kind of document identifier using a URI. If the scheme is not provided the value of the element will be interpreted as a string of characters.</xs:documentation>
1304
+ </xs:annotation>
1305
+ </xs:attribute>
1306
+ </xs:extension>
1307
+ </xs:simpleContent>
1308
+ </xs:complexType>
1309
+ <xs:complexType name="oscal-mapping-common-mapping-ASSEMBLY">
1310
+ <xs:annotation>
1311
+ <xs:appinfo>
1312
+ <m:formal-name>Control Mapping</m:formal-name>
1313
+ <m:description>A mapping between two target resources.</m:description>
1314
+ </xs:appinfo>
1315
+ <xs:documentation>
1316
+ <b>Control Mapping</b>: A mapping between two target resources.</xs:documentation>
1317
+ </xs:annotation>
1318
+ <xs:sequence>
1319
+ <xs:element name="source-resource"
1320
+ type="oscal-mapping-common-mapping-resource-reference-ASSEMBLY"
1321
+ minOccurs="1"
1322
+ maxOccurs="1"/>
1323
+ <xs:element name="target-resource"
1324
+ type="oscal-mapping-common-mapping-resource-reference-ASSEMBLY"
1325
+ minOccurs="1"
1326
+ maxOccurs="1"/>
1327
+ <xs:element name="map"
1328
+ type="oscal-mapping-common-map-ASSEMBLY"
1329
+ minOccurs="1"
1330
+ maxOccurs="unbounded"/>
1331
+ <xs:element name="prop"
1332
+ type="oscal-metadata-property-ASSEMBLY"
1333
+ minOccurs="0"
1334
+ maxOccurs="unbounded"/>
1335
+ <xs:element name="link"
1336
+ type="oscal-metadata-link-ASSEMBLY"
1337
+ minOccurs="0"
1338
+ maxOccurs="unbounded"/>
1339
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
1340
+ <xs:annotation>
1341
+ <xs:appinfo>
1342
+ <m:formal-name>Remarks</m:formal-name>
1343
+ <m:description>Additional commentary about the containing object.</m:description>
1344
+ </xs:appinfo>
1345
+ <xs:documentation>
1346
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1347
+ </xs:annotation>
1348
+ <xs:complexType>
1349
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1350
+ </xs:complexType>
1351
+ </xs:element>
1352
+ <xs:element name="mapping-description" minOccurs="0" maxOccurs="1">
1353
+ <xs:annotation>
1354
+ <xs:appinfo>
1355
+ <m:formal-name>Mapping Description</m:formal-name>
1356
+ <m:description>Description of the context and intended use of the mapping set.</m:description>
1357
+ </xs:appinfo>
1358
+ <xs:documentation>
1359
+ <b>Mapping Description</b>: Description of the context and intended use of the mapping set.</xs:documentation>
1360
+ </xs:annotation>
1361
+ <xs:complexType>
1362
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1363
+ </xs:complexType>
1364
+ </xs:element>
1365
+ <xs:element name="source-gap-summary"
1366
+ type="oscal-mapping-common-gap-summary-ASSEMBLY"
1367
+ minOccurs="0"
1368
+ maxOccurs="1"/>
1369
+ <xs:element name="target-gap-summary"
1370
+ type="oscal-mapping-common-gap-summary-ASSEMBLY"
1371
+ minOccurs="0"
1372
+ maxOccurs="1"/>
1373
+ <xs:element name="confidence-score"
1374
+ type="oscal-mapping-common-confidence-score-FIELD"
1375
+ minOccurs="0"
1376
+ maxOccurs="1"/>
1377
+ <xs:element name="coverage"
1378
+ type="oscal-mapping-common-coverage-FIELD"
1379
+ minOccurs="0"
1380
+ maxOccurs="1"/>
1381
+ </xs:sequence>
1382
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
1383
+ <xs:annotation>
1384
+ <xs:appinfo>
1385
+ <m:formal-name>Mapping Universally Unique Identifier</m:formal-name>
1386
+ <m:description>A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented"> machine-oriented</a>, <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#cross-instance"> cross-instance</a> scope that can be used to reference this mapping definition elsewhere in this or other OSCAL instances. The locally defined <em>UUID</em> of the <code> mapping</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#consistency"> per-subject</a>, which means it should be consistently used to identify the same mapping across revisions of the document.</m:description>
1387
+ </xs:appinfo>
1388
+ <xs:documentation>
1389
+ <b>Mapping Universally Unique Identifier</b>: A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this mapping definition elsewhere in this or other OSCAL instances. The locally defined UUID of the mapping can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance). This UUID should be assigned per-subject, which means it should be consistently used to identify the same mapping across revisions of the document.</xs:documentation>
1390
+ </xs:annotation>
1391
+ </xs:attribute>
1392
+ <xs:attribute name="method" type="StringDatatype">
1393
+ <xs:annotation>
1394
+ <xs:appinfo>
1395
+ <m:formal-name>Method</m:formal-name>
1396
+ <m:description>The method used to complete the overall mapping.</m:description>
1397
+ </xs:appinfo>
1398
+ <xs:documentation>
1399
+ <b>Method</b>: The method used to complete the overall mapping.</xs:documentation>
1400
+ </xs:annotation>
1401
+ </xs:attribute>
1402
+ <xs:attribute name="matching-rationale" type="StringDatatype">
1403
+ <xs:annotation>
1404
+ <xs:appinfo>
1405
+ <m:formal-name>Matching</m:formal-name>
1406
+ <m:description>The method used for relating controls within the mapping. The supported methods are aligned with the <a href=" https://doi.org/10.6028/NIST.IR.8477">NIST Interagency Report (IR) 8477</a>, Section 4.3 Set Theory Relationship Mapping.</m:description>
1407
+ </xs:appinfo>
1408
+ <xs:documentation>
1409
+ <b>Matching</b>: The method used for relating controls within the mapping. The supported methods are aligned with the NIST Interagency Report (IR) 8477, Section 4.3 Set Theory Relationship Mapping.</xs:documentation>
1410
+ </xs:annotation>
1411
+ </xs:attribute>
1412
+ <xs:attribute name="status" type="StringDatatype">
1413
+ <xs:annotation>
1414
+ <xs:appinfo>
1415
+ <m:formal-name>Status</m:formal-name>
1416
+ <m:description>The current status of this mapping document.</m:description>
1417
+ </xs:appinfo>
1418
+ <xs:documentation>
1419
+ <b>Status</b>: The current status of this mapping document.</xs:documentation>
1420
+ </xs:annotation>
1421
+ </xs:attribute>
1422
+ </xs:complexType>
1423
+ <xs:complexType name="oscal-mapping-common-map-ASSEMBLY">
1424
+ <xs:annotation>
1425
+ <xs:appinfo>
1426
+ <m:formal-name>Mapping Entry</m:formal-name>
1427
+ <m:description>A relationship-based mapping between a source and target set consisting of members (i.e., controls, control statements) from the respective source and target.</m:description>
1428
+ </xs:appinfo>
1429
+ <xs:documentation>
1430
+ <b>Mapping Entry</b>: A relationship-based mapping between a source and target set consisting of members (i.e., controls, control statements) from the respective source and target.</xs:documentation>
1431
+ </xs:annotation>
1432
+ <xs:sequence>
1433
+ <xs:element name="relationship" minOccurs="1" maxOccurs="1">
1434
+ <xs:simpleType>
1435
+ <xs:annotation>
1436
+ <xs:appinfo>
1437
+ <m:formal-name>Mapping Entry Relationship</m:formal-name>
1438
+ <m:description>The relationship type for the mapping entry, which describes the relationship between the effective requirements of the specified source and target sets in the context of the <code>matching-rationale</code> method globaly defined in the <code>provenance</code> unless overwritten locally in the <code> map</code>. The <code>relationship</code> type and the <code>matching-rationale</code> must be used together. However, more than one <code>matching-rationale</code> method may apply to a <code>source</code> and <code>target</code> pair. </m:description>
1439
+ </xs:appinfo>
1440
+ <xs:documentation>
1441
+ <b>Mapping Entry Relationship</b>: The relationship type for the mapping entry, which describes the relationship between the effective requirements of the specified source and target sets in the context of the matching-rationale method globaly defined in the provenance unless overwritten locally in the map. The relationship type and the matching-rationale must be used together. However, more than one matching-rationale method may apply to a source and target pair. </xs:documentation>
1442
+ </xs:annotation>
1443
+ <xs:restriction base="TokenDatatype"/>
1444
+ </xs:simpleType>
1445
+ </xs:element>
1446
+ <xs:element name="source"
1447
+ type="oscal-mapping-common-mapping-item-ASSEMBLY"
1448
+ minOccurs="1"
1449
+ maxOccurs="unbounded"/>
1450
+ <xs:element name="target"
1451
+ type="oscal-mapping-common-mapping-item-ASSEMBLY"
1452
+ minOccurs="1"
1453
+ maxOccurs="unbounded"/>
1454
+ <xs:element name="qualifier"
1455
+ type="oscal-mapping-common-qualifier-item-ASSEMBLY"
1456
+ minOccurs="0"
1457
+ maxOccurs="unbounded"/>
1458
+ <xs:element name="confidence-score"
1459
+ type="oscal-mapping-common-confidence-score-FIELD"
1460
+ minOccurs="0"
1461
+ maxOccurs="1"/>
1462
+ <xs:element name="coverage"
1463
+ type="oscal-mapping-common-coverage-FIELD"
1464
+ minOccurs="0"
1465
+ maxOccurs="1"/>
1466
+ <xs:element name="prop"
1467
+ type="oscal-metadata-property-ASSEMBLY"
1468
+ minOccurs="0"
1469
+ maxOccurs="unbounded"/>
1470
+ <xs:element name="link"
1471
+ type="oscal-metadata-link-ASSEMBLY"
1472
+ minOccurs="0"
1473
+ maxOccurs="unbounded"/>
1474
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
1475
+ <xs:annotation>
1476
+ <xs:appinfo>
1477
+ <m:formal-name>Remarks</m:formal-name>
1478
+ <m:description>Additional commentary about the containing object.</m:description>
1479
+ </xs:appinfo>
1480
+ <xs:documentation>
1481
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1482
+ </xs:annotation>
1483
+ <xs:complexType>
1484
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1485
+ </xs:complexType>
1486
+ </xs:element>
1487
+ </xs:sequence>
1488
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
1489
+ <xs:annotation>
1490
+ <xs:appinfo>
1491
+ <m:formal-name>Mapping Entry Identifier</m:formal-name>
1492
+ <m:description>The unique identifier for the mapping entry.</m:description>
1493
+ </xs:appinfo>
1494
+ <xs:documentation>
1495
+ <b>Mapping Entry Identifier</b>: The unique identifier for the mapping entry.</xs:documentation>
1496
+ </xs:annotation>
1497
+ </xs:attribute>
1498
+ <xs:attribute name="ns" type="URIDatatype">
1499
+ <xs:annotation>
1500
+ <xs:appinfo>
1501
+ <m:formal-name>Relationship Value Namespace</m:formal-name>
1502
+ <m:description>A namespace qualifying the relationship's value. This allows different organizations to associate distinct semantics for relationships with the same name.</m:description>
1503
+ </xs:appinfo>
1504
+ <xs:documentation>
1505
+ <b>Relationship Value Namespace</b>: A namespace qualifying the relationship's value. This allows different organizations to associate distinct semantics for relationships with the same name.</xs:documentation>
1506
+ </xs:annotation>
1507
+ </xs:attribute>
1508
+ <xs:attribute name="matching-rationale" type="StringDatatype">
1509
+ <xs:annotation>
1510
+ <xs:appinfo>
1511
+ <m:formal-name>Matching</m:formal-name>
1512
+ <m:description>The method used for relating controls within the mapping. The supported methods are aligned with the <a href=" https://doi.org/10.6028/NIST.IR.8477">NIST Interagency Report (IR) 8477</a>, Section 4.3 Set Theory Relationship Mapping.</m:description>
1513
+ </xs:appinfo>
1514
+ <xs:documentation>
1515
+ <b>Matching</b>: The method used for relating controls within the mapping. The supported methods are aligned with the NIST Interagency Report (IR) 8477, Section 4.3 Set Theory Relationship Mapping.</xs:documentation>
1516
+ </xs:annotation>
1517
+ </xs:attribute>
1518
+ </xs:complexType>
1519
+ <xs:complexType name="oscal-mapping-common-mapping-item-ASSEMBLY">
1520
+ <xs:annotation>
1521
+ <xs:appinfo>
1522
+ <m:formal-name>Mapping Entry Item (source or target)</m:formal-name>
1523
+ <m:description>A specific edge within a source or target that is the subject of a mapping.</m:description>
1524
+ </xs:appinfo>
1525
+ <xs:documentation>
1526
+ <b>Mapping Entry Item (source or target)</b>: A specific edge within a source or target that is the subject of a mapping.</xs:documentation>
1527
+ </xs:annotation>
1528
+ <xs:sequence>
1529
+ <xs:element name="prop"
1530
+ type="oscal-metadata-property-ASSEMBLY"
1531
+ minOccurs="0"
1532
+ maxOccurs="unbounded"/>
1533
+ <xs:element name="link"
1534
+ type="oscal-metadata-link-ASSEMBLY"
1535
+ minOccurs="0"
1536
+ maxOccurs="unbounded"/>
1537
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
1538
+ <xs:annotation>
1539
+ <xs:appinfo>
1540
+ <m:formal-name>Remarks</m:formal-name>
1541
+ <m:description>Additional commentary about the containing object.</m:description>
1542
+ </xs:appinfo>
1543
+ <xs:documentation>
1544
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1545
+ </xs:annotation>
1546
+ <xs:complexType>
1547
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1548
+ </xs:complexType>
1549
+ </xs:element>
1550
+ </xs:sequence>
1551
+ <xs:attribute name="type" use="required" type="TokenDatatype">
1552
+ <xs:annotation>
1553
+ <xs:appinfo>
1554
+ <m:formal-name>Subject Type</m:formal-name>
1555
+ <m:description>The semantic type of the subject.</m:description>
1556
+ </xs:appinfo>
1557
+ <xs:documentation>
1558
+ <b>Subject Type</b>: The semantic type of the subject.</xs:documentation>
1559
+ </xs:annotation>
1560
+ </xs:attribute>
1561
+ <xs:attribute name="id-ref" use="required" type="StringDatatype">
1562
+ <xs:annotation>
1563
+ <xs:appinfo>
1564
+ <m:formal-name>Subject Identifier Reference</m:formal-name>
1565
+ <m:description>A reference to an identified subject that is of the specified <code>type</code> .</m:description>
1566
+ </xs:appinfo>
1567
+ <xs:documentation>
1568
+ <b>Subject Identifier Reference</b>: A reference to an identified subject that is of the specified type .</xs:documentation>
1569
+ </xs:annotation>
1570
+ </xs:attribute>
1571
+ </xs:complexType>
1572
+ <xs:complexType name="oscal-mapping-common-mapping-resource-reference-ASSEMBLY">
1573
+ <xs:annotation>
1574
+ <xs:appinfo>
1575
+ <m:formal-name>Mapped Resource Reference</m:formal-name>
1576
+ <m:description>A reference to a resource that is either the source or the target of a mapping.</m:description>
1577
+ </xs:appinfo>
1578
+ <xs:documentation>
1579
+ <b>Mapped Resource Reference</b>: A reference to a resource that is either the source or the target of a mapping.</xs:documentation>
1580
+ </xs:annotation>
1581
+ <xs:sequence>
1582
+ <xs:element name="prop"
1583
+ type="oscal-metadata-property-ASSEMBLY"
1584
+ minOccurs="0"
1585
+ maxOccurs="unbounded"/>
1586
+ <xs:element name="link"
1587
+ type="oscal-metadata-link-ASSEMBLY"
1588
+ minOccurs="0"
1589
+ maxOccurs="unbounded"/>
1590
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
1591
+ <xs:annotation>
1592
+ <xs:appinfo>
1593
+ <m:formal-name>Remarks</m:formal-name>
1594
+ <m:description>Additional commentary about the containing object.</m:description>
1595
+ </xs:appinfo>
1596
+ <xs:documentation>
1597
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1598
+ </xs:annotation>
1599
+ <xs:complexType>
1600
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1601
+ </xs:complexType>
1602
+ </xs:element>
1603
+ </xs:sequence>
1604
+ <xs:attribute name="ns" type="URIDatatype">
1605
+ <xs:annotation>
1606
+ <xs:appinfo>
1607
+ <m:formal-name>Resource Type Namespace</m:formal-name>
1608
+ <m:description>An optional namespace qualifying the resource's <code>type</code>. </m:description>
1609
+ </xs:appinfo>
1610
+ <xs:documentation>
1611
+ <b>Resource Type Namespace</b>: An optional namespace qualifying the resource's type. </xs:documentation>
1612
+ </xs:annotation>
1613
+ </xs:attribute>
1614
+ <xs:attribute name="type" use="required" type="TokenDatatype">
1615
+ <xs:annotation>
1616
+ <xs:appinfo>
1617
+ <m:formal-name>Resource Type</m:formal-name>
1618
+ <m:description>The semantic type of the resource.</m:description>
1619
+ </xs:appinfo>
1620
+ <xs:documentation>
1621
+ <b>Resource Type</b>: The semantic type of the resource.</xs:documentation>
1622
+ </xs:annotation>
1623
+ </xs:attribute>
1624
+ <xs:attribute name="href" use="required" type="URIReferenceDatatype">
1625
+ <xs:annotation>
1626
+ <xs:appinfo>
1627
+ <m:formal-name>Catalog or Profile Reference</m:formal-name>
1628
+ <m:description>A resolvable URL reference to the base catalog or profile that this profile is tailoring.</m:description>
1629
+ </xs:appinfo>
1630
+ <xs:documentation>
1631
+ <b>Catalog or Profile Reference</b>: A resolvable URL reference to the base catalog or profile that this profile is tailoring.</xs:documentation>
1632
+ </xs:annotation>
1633
+ </xs:attribute>
1634
+ </xs:complexType>
1635
+ <xs:complexType name="oscal-mapping-common-qualifier-item-ASSEMBLY">
1636
+ <xs:annotation>
1637
+ <xs:appinfo>
1638
+ <m:formal-name>Relationship Qualifier</m:formal-name>
1639
+ <m:description>Describes requirements, incompatibilities and gaps that are identified between a target and source in a mapping item.</m:description>
1640
+ </xs:appinfo>
1641
+ <xs:documentation>
1642
+ <b>Relationship Qualifier</b>: Describes requirements, incompatibilities and gaps that are identified between a target and source in a mapping item.</xs:documentation>
1643
+ </xs:annotation>
1644
+ <xs:sequence>
1645
+ <xs:element name="description" minOccurs="1" maxOccurs="1">
1646
+ <xs:complexType>
1647
+ <xs:annotation>
1648
+ <xs:appinfo>
1649
+ <m:formal-name>Description of the qualifier</m:formal-name>
1650
+ <m:description>Details that outline what requirements must be met, or cannot be met. If the qualifier identifies a gap, this should idenfity the gap, and any incompatibilities.</m:description>
1651
+ </xs:appinfo>
1652
+ <xs:documentation>
1653
+ <b>Description of the qualifier</b>: Details that outline what requirements must be met, or cannot be met. If the qualifier identifies a gap, this should idenfity the gap, and any incompatibilities.</xs:documentation>
1654
+ </xs:annotation>
1655
+ <xs:complexContent>
1656
+ <xs:extension base="MarkupMultilineDatatype"/>
1657
+ </xs:complexContent>
1658
+ </xs:complexType>
1659
+ </xs:element>
1660
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
1661
+ <xs:annotation>
1662
+ <xs:appinfo>
1663
+ <m:formal-name>Remarks</m:formal-name>
1664
+ <m:description>Additional commentary about the containing object.</m:description>
1665
+ </xs:appinfo>
1666
+ <xs:documentation>
1667
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1668
+ </xs:annotation>
1669
+ <xs:complexType>
1670
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1671
+ </xs:complexType>
1672
+ </xs:element>
1673
+ </xs:sequence>
1674
+ <xs:attribute name="subject" use="required" type="StringDatatype">
1675
+ <xs:annotation>
1676
+ <xs:appinfo>
1677
+ <m:formal-name>Subject</m:formal-name>
1678
+ <m:description>The focus of the qualifier.</m:description>
1679
+ </xs:appinfo>
1680
+ <xs:documentation>
1681
+ <b>Subject</b>: The focus of the qualifier.</xs:documentation>
1682
+ </xs:annotation>
1683
+ </xs:attribute>
1684
+ <xs:attribute name="predicate" use="required" type="StringDatatype">
1685
+ <xs:annotation>
1686
+ <xs:appinfo>
1687
+ <m:formal-name>Predicate</m:formal-name>
1688
+ <m:description>The predicate describes how the qualifer applies to the subject.</m:description>
1689
+ </xs:appinfo>
1690
+ <xs:documentation>
1691
+ <b>Predicate</b>: The predicate describes how the qualifer applies to the subject.</xs:documentation>
1692
+ </xs:annotation>
1693
+ </xs:attribute>
1694
+ <xs:attribute name="category" use="required" type="StringDatatype">
1695
+ <xs:annotation>
1696
+ <xs:appinfo>
1697
+ <m:formal-name>Category</m:formal-name>
1698
+ <m:description>The category expresses the resolvable nature of the predicate.</m:description>
1699
+ </xs:appinfo>
1700
+ <xs:documentation>
1701
+ <b>Category</b>: The category expresses the resolvable nature of the predicate.</xs:documentation>
1702
+ </xs:annotation>
1703
+ </xs:attribute>
1704
+ </xs:complexType>
1705
+ <xs:complexType name="oscal-mapping-common-mapping-provenance-ASSEMBLY">
1706
+ <xs:annotation>
1707
+ <xs:appinfo>
1708
+ <m:formal-name>Mapping Provenance</m:formal-name>
1709
+ <m:description>Describes requirements, incompatibilities and gaps that are identified between a target and source in a mapping item.</m:description>
1710
+ </xs:appinfo>
1711
+ <xs:documentation>
1712
+ <b>Mapping Provenance</b>: Describes requirements, incompatibilities and gaps that are identified between a target and source in a mapping item.</xs:documentation>
1713
+ </xs:annotation>
1714
+ <xs:sequence>
1715
+ <xs:element name="confidence-score"
1716
+ type="oscal-mapping-common-confidence-score-FIELD"
1717
+ minOccurs="0"
1718
+ maxOccurs="1"/>
1719
+ <xs:element name="coverage"
1720
+ type="oscal-mapping-common-coverage-FIELD"
1721
+ minOccurs="0"
1722
+ maxOccurs="1"/>
1723
+ <xs:element name="mapping-description" minOccurs="1" maxOccurs="1">
1724
+ <xs:annotation>
1725
+ <xs:appinfo>
1726
+ <m:formal-name>Mapping Description</m:formal-name>
1727
+ <m:description>Description of the context and intended use of the mapping set.</m:description>
1728
+ </xs:appinfo>
1729
+ <xs:documentation>
1730
+ <b>Mapping Description</b>: Description of the context and intended use of the mapping set.</xs:documentation>
1731
+ </xs:annotation>
1732
+ <xs:complexType>
1733
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1734
+ </xs:complexType>
1735
+ </xs:element>
1736
+ <xs:element name="responsible-party"
1737
+ type="oscal-metadata-responsible-party-ASSEMBLY"
1738
+ minOccurs="0"
1739
+ maxOccurs="unbounded"/>
1740
+ <xs:element name="prop"
1741
+ type="oscal-metadata-property-ASSEMBLY"
1742
+ minOccurs="0"
1743
+ maxOccurs="unbounded"/>
1744
+ <xs:element name="link"
1745
+ type="oscal-metadata-link-ASSEMBLY"
1746
+ minOccurs="0"
1747
+ maxOccurs="unbounded"/>
1748
+ <xs:element name="remarks" minOccurs="0" maxOccurs="1">
1749
+ <xs:annotation>
1750
+ <xs:appinfo>
1751
+ <m:formal-name>Remarks</m:formal-name>
1752
+ <m:description>Additional commentary about the containing object.</m:description>
1753
+ </xs:appinfo>
1754
+ <xs:documentation>
1755
+ <b>Remarks</b>: Additional commentary about the containing object.</xs:documentation>
1756
+ </xs:annotation>
1757
+ <xs:complexType>
1758
+ <xs:group ref="blockElementGroup" maxOccurs="unbounded" minOccurs="0"/>
1759
+ </xs:complexType>
1760
+ </xs:element>
1761
+ </xs:sequence>
1762
+ <xs:attribute name="method" use="required" type="StringDatatype">
1763
+ <xs:annotation>
1764
+ <xs:appinfo>
1765
+ <m:formal-name>Method</m:formal-name>
1766
+ <m:description>The method used to complete the overall mapping.</m:description>
1767
+ </xs:appinfo>
1768
+ <xs:documentation>
1769
+ <b>Method</b>: The method used to complete the overall mapping.</xs:documentation>
1770
+ </xs:annotation>
1771
+ </xs:attribute>
1772
+ <xs:attribute name="matching-rationale" use="required" type="StringDatatype">
1773
+ <xs:annotation>
1774
+ <xs:appinfo>
1775
+ <m:formal-name>Matching</m:formal-name>
1776
+ <m:description>The method used for relating controls within the mapping. The supported methods are aligned with the <a href=" https://doi.org/10.6028/NIST.IR.8477">NIST Interagency Report (IR) 8477</a>, Section 4.3 Set Theory Relationship Mapping.</m:description>
1777
+ </xs:appinfo>
1778
+ <xs:documentation>
1779
+ <b>Matching</b>: The method used for relating controls within the mapping. The supported methods are aligned with the NIST Interagency Report (IR) 8477, Section 4.3 Set Theory Relationship Mapping.</xs:documentation>
1780
+ </xs:annotation>
1781
+ </xs:attribute>
1782
+ <xs:attribute name="status" use="required" type="StringDatatype">
1783
+ <xs:annotation>
1784
+ <xs:appinfo>
1785
+ <m:formal-name>Status</m:formal-name>
1786
+ <m:description>The current status of this mapping document.</m:description>
1787
+ </xs:appinfo>
1788
+ <xs:documentation>
1789
+ <b>Status</b>: The current status of this mapping document.</xs:documentation>
1790
+ </xs:annotation>
1791
+ </xs:attribute>
1792
+ </xs:complexType>
1793
+ <xs:complexType name="oscal-mapping-common-gap-summary-ASSEMBLY">
1794
+ <xs:annotation>
1795
+ <xs:appinfo>
1796
+ <m:formal-name>Gap Summary</m:formal-name>
1797
+ <m:description>A <em>by-id</em> collection of all controls that were not mapped at all in this <code> mapping-collection</code>. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the <code> relationship-gal</code>. </m:description>
1798
+ </xs:appinfo>
1799
+ <xs:documentation>
1800
+ <b>Gap Summary</b>: A by-id collection of all controls that were not mapped at all in this mapping-collection. If a control is partially mapped, the parts of the control are not mappable, the gap and discrepancies should be documented in the relationship-gal. </xs:documentation>
1801
+ </xs:annotation>
1802
+ <xs:sequence>
1803
+ <xs:element name="unmapped-controls"
1804
+ type="oscal-mapping-common-select-control-by-id-ASSEMBLY"
1805
+ minOccurs="1"
1806
+ maxOccurs="unbounded"/>
1807
+ </xs:sequence>
1808
+ <xs:attribute name="uuid" use="required" type="UUIDDatatype">
1809
+ <xs:annotation>
1810
+ <xs:appinfo>
1811
+ <m:formal-name>Gap Summary Universally Unique Identifier</m:formal-name>
1812
+ <m:description>A <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#machine-oriented"> machine-oriented</a>, <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#globally-unique">globally unique</a> identifier with <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#cross-instance"> cross-instance</a> scope that can be used to reference this mapping gap summary elsewhere in <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#ssp-identifiers">this or other OSCAL instances</a>. The locally defined <em>UUID</em> of the <code>SSP</code> can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance).This UUID should be assigned <a href="https://pages.nist.gov/OSCAL/concepts/identifier-use/#consistency"> per-subject</a>, which means it should be consistently used to identify the same subject across revisions of the document.</m:description>
1813
+ </xs:appinfo>
1814
+ <xs:documentation>
1815
+ <b>Gap Summary Universally Unique Identifier</b>: A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this mapping gap summary elsewhere in this or other OSCAL instances. The locally defined UUID of the SSP can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance).This UUID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.</xs:documentation>
1816
+ </xs:annotation>
1817
+ </xs:attribute>
1818
+ </xs:complexType>
1819
+ <xs:complexType name="oscal-mapping-common-select-control-by-id-ASSEMBLY">
1820
+ <xs:annotation>
1821
+ <xs:appinfo>
1822
+ <m:formal-name>Select Control</m:formal-name>
1823
+ <m:description>Select a control or controls from an imported control set.</m:description>
1824
+ </xs:appinfo>
1825
+ <xs:documentation>
1826
+ <b>Select Control</b>: Select a control or controls from an imported control set.</xs:documentation>
1827
+ </xs:annotation>
1828
+ <xs:sequence>
1829
+ <xs:element name="with-id" minOccurs="0" maxOccurs="unbounded">
1830
+ <xs:simpleType>
1831
+ <xs:annotation>
1832
+ <xs:appinfo>
1833
+ <m:formal-name>Match Controls by Identifier</m:formal-name>
1834
+ <m:description>Selecting a control by its ID given as a literal.</m:description>
1835
+ </xs:appinfo>
1836
+ <xs:documentation>
1837
+ <b>Match Controls by Identifier</b>: Selecting a control by its ID given as a literal.</xs:documentation>
1838
+ </xs:annotation>
1839
+ <xs:restriction base="TokenDatatype"/>
1840
+ </xs:simpleType>
1841
+ </xs:element>
1842
+ <xs:element name="matching"
1843
+ type="oscal-mapping-common-matching-ASSEMBLY"
1844
+ minOccurs="0"
1845
+ maxOccurs="unbounded"/>
1846
+ </xs:sequence>
1847
+ <xs:attribute name="with-child-controls" type="TokenDatatype">
1848
+ <xs:annotation>
1849
+ <xs:appinfo>
1850
+ <m:formal-name>Include Contained Controls with Control</m:formal-name>
1851
+ <m:description>When a control is included, whether its child (dependent) controls are also included.</m:description>
1852
+ </xs:appinfo>
1853
+ <xs:documentation>
1854
+ <b>Include Contained Controls with Control</b>: When a control is included, whether its child (dependent) controls are also included.</xs:documentation>
1855
+ </xs:annotation>
1856
+ </xs:attribute>
1857
+ </xs:complexType>
1858
+ <xs:complexType name="oscal-mapping-common-matching-ASSEMBLY">
1859
+ <xs:annotation>
1860
+ <xs:appinfo>
1861
+ <m:formal-name>Match Controls by Pattern</m:formal-name>
1862
+ <m:description>Selecting a set of controls by matching their IDs with a wildcard pattern.</m:description>
1863
+ </xs:appinfo>
1864
+ <xs:documentation>
1865
+ <b>Match Controls by Pattern</b>: Selecting a set of controls by matching their IDs with a wildcard pattern.</xs:documentation>
1866
+ </xs:annotation>
1867
+ <xs:attribute name="pattern" type="StringDatatype">
1868
+ <xs:annotation>
1869
+ <xs:appinfo>
1870
+ <m:formal-name>Pattern</m:formal-name>
1871
+ <m:description>A <a href="https://en.wikipedia.org/wiki/Glob_(programming)">glob expression</a> matching the IDs of one or more controls to be selected.</m:description>
1872
+ </xs:appinfo>
1873
+ <xs:documentation>
1874
+ <b>Pattern</b>: A glob expression matching the IDs of one or more controls to be selected.</xs:documentation>
1875
+ </xs:annotation>
1876
+ </xs:attribute>
1877
+ </xs:complexType>
1878
+ <xs:complexType name="oscal-mapping-common-confidence-score-FIELD">
1879
+ <xs:annotation>
1880
+ <xs:appinfo>
1881
+ <m:formal-name>Confidence Score</m:formal-name>
1882
+ <m:description>This records either a string category or a decimal value from 0-1 representing a percentage. Both of these values describe an estimation of the author's confidence that this mapping is correct and accurate. </m:description>
1883
+ </xs:appinfo>
1884
+ <xs:documentation>
1885
+ <b>Confidence Score</b>: This records either a string category or a decimal value from 0-1 representing a percentage. Both of these values describe an estimation of the author's confidence that this mapping is correct and accurate. </xs:documentation>
1886
+ </xs:annotation>
1887
+ <xs:simpleContent>
1888
+ <xs:extension base="StringDatatype">
1889
+ <xs:attribute name="category" type="StringDatatype"/>
1890
+ <xs:attribute name="percentage" type="DecimalDatatype"/>
1891
+ </xs:extension>
1892
+ </xs:simpleContent>
1893
+ </xs:complexType>
1894
+ <xs:complexType name="oscal-mapping-common-coverage-FIELD">
1895
+ <xs:annotation>
1896
+ <xs:appinfo>
1897
+ <m:formal-name>Coverage</m:formal-name>
1898
+ <m:description>A decimal value from 0-1, representing the percentage coverage of the targets by the sources.</m:description>
1899
+ </xs:appinfo>
1900
+ <xs:documentation>
1901
+ <b>Coverage</b>: A decimal value from 0-1, representing the percentage coverage of the targets by the sources.</xs:documentation>
1902
+ </xs:annotation>
1903
+ <xs:simpleContent>
1904
+ <xs:extension base="DecimalDatatype">
1905
+ <xs:attribute name="generation-method" type="StringDatatype"/>
1906
+ </xs:extension>
1907
+ </xs:simpleContent>
1908
+ </xs:complexType>
1909
+ <xs:complexType name="oscal-mapping-common-mapping-description-FIELD">
1910
+ <xs:annotation>
1911
+ <xs:appinfo>
1912
+ <m:formal-name>Mapping Description</m:formal-name>
1913
+ <m:description>Description of the context and intended use of the mapping set.</m:description>
1914
+ </xs:appinfo>
1915
+ <xs:documentation>
1916
+ <b>Mapping Description</b>: Description of the context and intended use of the mapping set.</xs:documentation>
1917
+ </xs:annotation>
1918
+ <xs:complexContent>
1919
+ <xs:extension base="MarkupMultilineDatatype"/>
1920
+ </xs:complexContent>
1921
+ </xs:complexType>
1922
+ <xs:complexType name="MarkupMultilineDatatype">
1923
+ <xs:choice minOccurs="1" maxOccurs="unbounded">
1924
+ <xs:group ref="blockElementGroup"/>
1925
+ </xs:choice>
1926
+ </xs:complexType>
1927
+ <xs:group name="headingBlockElementGroup">
1928
+ <xs:choice>
1929
+ <xs:element name="h1" type="inlineMarkupType"/>
1930
+ <xs:element name="h2" type="inlineMarkupType"/>
1931
+ <xs:element name="h3" type="inlineMarkupType"/>
1932
+ <xs:element name="h4" type="inlineMarkupType"/>
1933
+ <xs:element name="h5" type="inlineMarkupType"/>
1934
+ <xs:element name="h6" type="inlineMarkupType"/>
1935
+ </xs:choice>
1936
+ </xs:group>
1937
+ <xs:group name="blockElementGroup">
1938
+ <xs:choice>
1939
+ <xs:group ref="headingBlockElementGroup"/>
1940
+ <xs:group ref="listsGroup"/>
1941
+ <xs:group ref="blockTextGroup"/>
1942
+ <xs:element name="p" type="inlineMarkupType"/>
1943
+ <xs:element name="table" type="tableType"/>
1944
+ <!-- QUESTION: Deprecate this? -->
1945
+ <xs:element name="img" type="imageType"/>
1946
+ </xs:choice>
1947
+ </xs:group>
1948
+ <xs:group name="blockTextGroup">
1949
+ <xs:choice>
1950
+ <xs:element name="pre" type="preformattedType"/>
1951
+ <xs:element name="hr"/>
1952
+ <!-- TODO: need to add support for blockquote, which can contain block elements. usnistgov/metaschema#70 -->
1953
+ <xs:element name="blockquote" type="blockQuoteType"/>
1954
+ </xs:choice>
1955
+ </xs:group>
1956
+ <xs:complexType name="preformattedType" mixed="true">
1957
+ <xs:complexContent>
1958
+ <xs:extension base="inlineMarkupType">
1959
+ <xs:annotation>
1960
+ <xs:documentation>The content model is the same as inlineMarkupType, but line endings need
1961
+ to be preserved, since this is pre-formatted.</xs:documentation>
1962
+ </xs:annotation>
1963
+ </xs:extension>
1964
+ </xs:complexContent>
1965
+ </xs:complexType>
1966
+ <xs:complexType name="listType">
1967
+ <xs:sequence>
1968
+ <xs:element name="li"
1969
+ type="listItemType"
1970
+ minOccurs="1"
1971
+ maxOccurs="unbounded"/>
1972
+ </xs:sequence>
1973
+ </xs:complexType>
1974
+ <xs:complexType name="orderedListType">
1975
+ <xs:complexContent>
1976
+ <xs:extension base="listType">
1977
+ <!-- TODO: confirm if romans are allowed -->
1978
+ <xs:attribute name="start" type="xs:nonNegativeInteger"/>
1979
+ </xs:extension>
1980
+ </xs:complexContent>
1981
+ </xs:complexType>
1982
+ <xs:group name="listsGroup">
1983
+ <xs:choice>
1984
+ <xs:element name="ul" type="listType"/>
1985
+ <xs:element name="ol" type="orderedListType"/>
1986
+ </xs:choice>
1987
+ </xs:group>
1988
+ <xs:complexType name="listItemType" mixed="true">
1989
+ <!-- TODO: is this the correct construction? -->
1990
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
1991
+ <xs:group ref="inlineMarkupGroup"/>
1992
+ <xs:group ref="listsGroup"/>
1993
+ <xs:group ref="blockTextGroup"/>
1994
+ <xs:group ref="headingBlockElementGroup"/>
1995
+ <xs:element name="p" type="inlineMarkupType"/>
1996
+ </xs:choice>
1997
+ </xs:complexType>
1998
+ <xs:complexType name="tableType">
1999
+ <xs:sequence>
2000
+ <xs:element maxOccurs="unbounded" name="tr" type="tableRowType"/>
2001
+ </xs:sequence>
2002
+ </xs:complexType>
2003
+ <xs:complexType name="tableRowType">
2004
+ <!-- QUESTION: Should we allow TH and TD to be mixed? -->
2005
+ <xs:choice minOccurs="1" maxOccurs="unbounded">
2006
+ <xs:element name="td" type="tableCellType" maxOccurs="unbounded"/>
2007
+ <xs:element name="th" type="tableCellType" maxOccurs="unbounded"/>
2008
+ </xs:choice>
2009
+ </xs:complexType>
2010
+ <xs:complexType name="tableCellType" mixed="true">
2011
+ <xs:complexContent>
2012
+ <!-- TODO: consider adding a choice between the inline or paragraphs. We need to figure out what is supported in Markdown. -->
2013
+ <xs:extension base="inlineMarkupType">
2014
+ <!-- TODO: need to add support for alignment. usnistgov/metaschema#70 -->
2015
+ <xs:attribute name="align" type="alignType" default="left"/>
2016
+ </xs:extension>
2017
+ </xs:complexContent>
2018
+ </xs:complexType>
2019
+ <xs:simpleType name="alignType">
2020
+ <xs:restriction base="xs:token">
2021
+ <xs:enumeration value="left"/>
2022
+ <xs:enumeration value="center"/>
2023
+ <xs:enumeration value="right"/>
2024
+ </xs:restriction>
2025
+ </xs:simpleType>
2026
+ <xs:complexType name="blockQuoteType">
2027
+ <!-- TODO: confirm if nested blockquote is supported in markdown -->
2028
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
2029
+ <xs:group ref="blockElementGroup"/>
2030
+ </xs:choice>
2031
+ </xs:complexType>
2032
+ <xs:complexType name="MarkupLineDatatype" mixed="true">
2033
+ <xs:complexContent>
2034
+ <xs:extension base="inlineMarkupType"/>
2035
+ </xs:complexContent>
2036
+ </xs:complexType>
2037
+ <xs:complexType name="inlineMarkupType" mixed="true">
2038
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
2039
+ <xs:group ref="inlineMarkupGroup"/>
2040
+ </xs:choice>
2041
+ </xs:complexType>
2042
+ <xs:group name="inlineMarkupGroup">
2043
+ <xs:choice>
2044
+ <xs:element name="a" type="anchorType"/>
2045
+ <xs:element name="insert" type="insertType"/>
2046
+ <xs:element name="br"/>
2047
+ <xs:group ref="phraseMarkupGroup"/>
2048
+ </xs:choice>
2049
+ </xs:group>
2050
+ <xs:group name="phraseMarkupGroup">
2051
+ <xs:choice>
2052
+ <xs:element name="code" type="codeType"/>
2053
+ <xs:element name="em" type="inlineMarkupType"/>
2054
+ <xs:element name="i" type="inlineMarkupType"/>
2055
+ <xs:element name="b" type="inlineMarkupType"/>
2056
+ <xs:element name="strong" type="inlineMarkupType"/>
2057
+ <xs:element name="sub" type="inlineMarkupType"/>
2058
+ <xs:element name="sup" type="inlineMarkupType"/>
2059
+ <xs:element name="q" type="inlineMarkupType"/>
2060
+ <xs:element name="img" type="imageType"/>
2061
+ </xs:choice>
2062
+ </xs:group>
2063
+ <xs:complexType name="codeType">
2064
+ <xs:complexContent>
2065
+ <xs:extension base="inlineMarkupType">
2066
+ <xs:attribute name="class" type="xs:token"/>
2067
+ </xs:extension>
2068
+ </xs:complexContent>
2069
+ </xs:complexType>
2070
+ <xs:complexType name="imageType">
2071
+ <xs:attribute name="alt" type="xs:string"/>
2072
+ <xs:attribute name="src" use="required" type="xs:anyURI"/>
2073
+ <xs:attribute name="title" type="xs:string"/>
2074
+ </xs:complexType>
2075
+ <xs:complexType name="anchorType" mixed="true">
2076
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
2077
+ <xs:group ref="phraseMarkupGroup"/>
2078
+ </xs:choice>
2079
+ <xs:attribute name="href" type="xs:anyURI"/>
2080
+ <xs:attribute name="title" type="xs:string"/>
2081
+ </xs:complexType>
2082
+ <xs:complexType name="insertType">
2083
+ <xs:annotation>
2084
+ <xs:documentation>An insert can be used to identify a placeholder for dynamically inserting text related to a specific object, which is referenced by the object's identifier using an <code xmlns="">id-ref</code>. This insert mechanism allows the selection of which text value from the object to dynamically include based on the application's display requirements.</xs:documentation>
2085
+ </xs:annotation>
2086
+ <xs:attribute name="type" use="required" type="xs:NCName">
2087
+ <xs:annotation>
2088
+ <xs:documentation>The type of object to include from (e.g., parameter, control, component, role, etc.)</xs:documentation>
2089
+ </xs:annotation>
2090
+ </xs:attribute>
2091
+ <xs:attribute name="id-ref" use="required" type="xs:NCName">
2092
+ <xs:annotation>
2093
+ <xs:documentation>The identity of the object to insert a value for. The identity will be selected from the index of objects of the specified <code xmlns="">type</code>. The specific value to include is based on the application's display requirements, which will likely use a specific data element associated with the <code xmlns="">type</code> (e.g., title, identifier, value, etc.) that is appropriate for the application.</xs:documentation>
2094
+ </xs:annotation>
2095
+ </xs:attribute>
2096
+ </xs:complexType>
2097
+ <xs:simpleType name="Base64Datatype">
2098
+ <xs:annotation>
2099
+ <xs:documentation>Binary data encoded using the Base64 encoding algorithm
2100
+ as defined by RFC4648.</xs:documentation>
2101
+ </xs:annotation>
2102
+ <xs:restriction base="xs:base64Binary">
2103
+ <xs:pattern value="[0-9A-Za-z+/]+={0,2}"/>
2104
+ </xs:restriction>
2105
+ </xs:simpleType>
2106
+ <xs:simpleType name="DateTimeDatatype">
2107
+ <xs:annotation>
2108
+ <xs:documentation>A string representing a point in time with an optional timezone.</xs:documentation>
2109
+ </xs:annotation>
2110
+ <xs:restriction base="xs:dateTime">
2111
+ <xs:pattern value="(((2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26])))-02-29)|(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))|(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))|(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30)))T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|(-((0[0-9]|1[0-2]):00|0[39]:30)|\+((0[0-9]|1[0-4]):00|(0[34569]|10):30|(0[58]|12):45)))?"/>
2112
+ </xs:restriction>
2113
+ </xs:simpleType>
2114
+ <xs:simpleType name="DateTimeWithTimezoneDatatype">
2115
+ <xs:annotation>
2116
+ <xs:documentation>A string representing a point in time with a required timezone.</xs:documentation>
2117
+ </xs:annotation>
2118
+ <xs:restriction base="DateTimeDatatype">
2119
+ <xs:pattern value="(((2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26])))-02-29)|(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))|(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))|(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30)))T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|(-((0[0-9]|1[0-2]):00|0[39]:30)|\+((0[0-9]|1[0-4]):00|(0[34569]|10):30|(0[58]|12):45)))"/>
2120
+ </xs:restriction>
2121
+ </xs:simpleType>
2122
+ <xs:simpleType name="DecimalDatatype">
2123
+ <xs:annotation>
2124
+ <xs:documentation>A real number expressed using a whole and optional fractional part
2125
+ separated by a period.</xs:documentation>
2126
+ </xs:annotation>
2127
+ <xs:restriction base="xs:decimal">
2128
+ <xs:pattern value="\S(.*\S)?">
2129
+ <xs:annotation>
2130
+ <xs:documentation>This pattern ensures that leading and trailing whitespace is
2131
+ disallowed. This helps to even the user experience between implementations
2132
+ related to whitespace.</xs:documentation>
2133
+ </xs:annotation>
2134
+ </xs:pattern>
2135
+ </xs:restriction>
2136
+ </xs:simpleType>
2137
+ <xs:simpleType name="EmailAddressDatatype">
2138
+ <xs:annotation>
2139
+ <xs:documentation>An email address string formatted according to RFC 6531.</xs:documentation>
2140
+ </xs:annotation>
2141
+ <xs:restriction base="StringDatatype">
2142
+ <xs:pattern value=".+@.+">
2143
+ <!-- TODO: Need a better pattern. -->
2144
+ </xs:pattern>
2145
+ </xs:restriction>
2146
+ </xs:simpleType>
2147
+ <xs:simpleType name="StringDatatype">
2148
+ <xs:annotation>
2149
+ <xs:documentation>A non-empty string of Unicode characters with leading and trailing whitespace
2150
+ disallowed. Whitespace is: U+9, U+10, U+32 or [ \n\t]+</xs:documentation>
2151
+ </xs:annotation>
2152
+ <xs:restriction base="xs:string">
2153
+ <xs:annotation>
2154
+ <xs:documentation>The 'string' datatype restricts the XSD type by prohibiting leading
2155
+ and trailing whitespace, and something (not only whitespace) is required.</xs:documentation>
2156
+ </xs:annotation>
2157
+ <xs:whiteSpace value="preserve"/>
2158
+ <xs:pattern value="\S(.*\S)?">
2159
+ <xs:annotation>
2160
+ <xs:documentation>This pattern ensures that leading and trailing whitespace is
2161
+ disallowed. This helps to even the user experience between implementations
2162
+ related to whitespace.</xs:documentation>
2163
+ </xs:annotation>
2164
+ </xs:pattern>
2165
+ </xs:restriction>
2166
+ </xs:simpleType>
2167
+ <xs:simpleType name="TokenDatatype">
2168
+ <xs:annotation>
2169
+ <!--<xs:documentation>Matching XSD NCName, except whitespace is not collapsed.</xs:documentation> -->
2170
+ <xs:documentation>A non-empty, non-colonized name as defined by XML Schema Part 2: Datatypes
2171
+ Second Edition (https://www.w3.org/TR/xmlschema11-2/#NCName), with leading and trailing
2172
+ whitespace disallowed.</xs:documentation>
2173
+ </xs:annotation>
2174
+ <xs:restriction base="StringDatatype">
2175
+ <xs:pattern value="(\p{L}|_)(\p{L}|\p{N}|[.\-_])*">
2176
+ <xs:annotation>
2177
+ <!--<xs:documentation>An XML initial character (but not colon), followed
2178
+ by any XML name character (but not colon).</xs:documentation> -->
2179
+ <xs:documentation>A single token may not contain whitespace.
2180
+ </xs:documentation>
2181
+ </xs:annotation>
2182
+ </xs:pattern>
2183
+ </xs:restriction>
2184
+ </xs:simpleType>
2185
+ <xs:simpleType name="URIDatatype">
2186
+ <xs:annotation>
2187
+ <xs:documentation>A universal resource identifier (URI) formatted according to RFC3986.</xs:documentation>
2188
+ </xs:annotation>
2189
+ <xs:restriction base="xs:anyURI">
2190
+ <xs:pattern value="[a-zA-Z][a-zA-Z0-9+\-.]+:.*\S">
2191
+ <xs:annotation>
2192
+ <xs:documentation>Requires a scheme with colon per RFC 3986.</xs:documentation>
2193
+ </xs:annotation>
2194
+ </xs:pattern>
2195
+ </xs:restriction>
2196
+ </xs:simpleType>
2197
+ <xs:simpleType name="URIReferenceDatatype">
2198
+ <xs:annotation>
2199
+ <xs:documentation>A URI Reference, either a URI or a relative-reference, formatted according to section 4.1 of RFC3986.</xs:documentation>
2200
+ </xs:annotation>
2201
+ <xs:restriction base="xs:anyURI">
2202
+ <xs:pattern value="\S(.*\S)?">
2203
+ <xs:annotation>
2204
+ <xs:documentation>This pattern ensures that leading and trailing whitespace is
2205
+ disallowed. This helps to even the user experience between implementations
2206
+ related to whitespace.</xs:documentation>
2207
+ </xs:annotation>
2208
+ </xs:pattern>
2209
+ </xs:restriction>
2210
+ </xs:simpleType>
2211
+ <xs:simpleType name="UUIDDatatype">
2212
+ <xs:annotation>
2213
+ <xs:documentation>A type 4 ('random' or 'pseudorandom') or type 5 UUID per RFC
2214
+ 4122.</xs:documentation>
2215
+ </xs:annotation>
2216
+ <xs:restriction base="StringDatatype">
2217
+ <xs:pattern value="[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[45][0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}">
2218
+ <xs:annotation>
2219
+ <xs:documentation>A sequence of 8-4-4-4-12 hex digits, with extra
2220
+ constraints in the 13th and 17-18th places for version 4 and 5
2221
+ </xs:documentation>
2222
+ </xs:annotation>
2223
+ </xs:pattern>
2224
+ </xs:restriction>
2225
+ </xs:simpleType>
2226
+ </xs:schema>