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