-
Notifications
You must be signed in to change notification settings - Fork 8
/
niem-code-lists-spec.html
616 lines (595 loc) · 207 KB
/
niem-code-lists-spec.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>NIEM Code Lists Specification, 4.0.1</title><style type="text/css" media="all">body { font-family: "Times New Roman", Times, serif; background-color: #FFF; color: #000; margin: 3em; } p.todo { color: #000; background-color: #FCC; } a { text-decoration: none; color: #000; background-color: #FFF; } span.issue, span.issue a { color: #000; background-color: #FCC; } a[href]:hover { color: #000; background-color: #F9FAD4; } a.url { font-family: "Courier New", Courier, monospace; font-size: 80%; } a.ref, span.ref { font-weight: bold; } span.termRef::before { content: "·"; } span.termRef::after { content: "·"; } div.img { width: 100%; text-align: center; } img { width: 100%; } div.table { } div.table > table { margin: auto; } div.title { font-size: 200%; font-weight: bold; margin: 1em 5em; text-align: center; } div.subtitle { font-size: 150%; font-weight: bold; margin: 1em 5em; text-align: center; } div.heading { font-size: 125%; font-weight: bold; margin-top: 1em; margin-bottom: 1em; page-break-after: avoid; page-break-inside: avoid; } div.rule-section > div.heading { font-size: 100%; } div.section, div.rule-section { margin-left: 2em; } div.section div.section { margin-left: 0; } div.section div.heading { margin-left: -2em; } div.meta { width: 33%; float: right; clear: right; } div.meta > p { padding: 0; margin: 0; } div.box, div.meta { background-color: #EEE; color: #000; border: solid black 1px; padding: 1.0em; } div.box a, div.meta a { background-color: #EEE; color: #000; } div.box a:hover, div.meta a:hover { background-color: #F9FAD4; color: #000; } div.box + div.box, div.figure + div.box { margin-top: 1em; } div.normativeHead { font-weight: bold; margin-bottom: 1em; } dfn { font-style: normal; font-weight: bold; } div.sub { margin-top: 1em; margin-left: 2em; } div.sub > *:last-child { margin-bottom: 0; } td,th { border: solid black 1px; } th { color: #000; background-color: #EEE; } table { border-collapse: collapse; } code { font-family: "Courier New", Courier, monospace; font-size: 80%; } pre { font-family: "Courier New", Courier, monospace; font-size: 80%; white-space: pre-wrap; margin: 0; } div.caption { font-weight: bold; text-align: center; page-break-after: avoid; page-break-inside: avoid; } p.hang { text-indent: -2em; margin-left: 2em; } q { quotes: '\201C' '\201D' '\2018' '\2019'; } q:before { content: open-quote; } q:after { content: close-quote; } ol ol > li { list-style-type: upper-alpha; } li > p { margin-top: 0; margin-bottom: 0; } p + p { margin-top: 1em; } div > *:last-child { margin-bottom: 0; } blockquote > *:last-child { margin-bottom: 0; }</style></head><body><div class="title">NIEM Code Lists Specification</div><div class="subtitle">Version 4.0.1</div><div class="subtitle">September 28, 2022</div><div class="subtitle">NIEM Technical Architecture Committee (NTAC)</div><div class="section"><div class="heading"><a name="d3e15"></a>Abstract</div><p>This document establishes methods for using code list artifacts with NIEM information exchange specifications. It provides for the use of Genericode documents, as well as for CSV code lists. It supports the use of code lists at schema definition time, via annotations for XML Schema documents that bind schema components to code lists. It supports the use of code lists at run time, via XML Schema components for use in XML documents that bind XML data to code lists. It also includes identifiers for well-known columns that have semantics needed across the NIEM community.</p></div><div class="section"><div class="heading"><a name="d3e25"></a>Authors</div><p>Webb Roberts, Georgia Tech Research Institute (<a class="url" target="_blank" href="mailto:webb.roberts@gtri.gatech.edu"><webb.roberts@gtri.gatech.edu></a>), Lead Author</p></div><div class="section"><div class="heading"><a name="d3e37"></a>Document Status</div><p>This document is a specification product of the NIEM Technical Architecture Committee (NTAC). This version of this document is normative for the conformance targets it defines.</p><p>Updates, revisions, and errata for this specification are posted to <a class="url" target="_blank" href="https://github.com/NIEM/NIEM-Code-Lists-Spec">https://github.com/NIEM/NIEM-Code-Lists-Spec</a>. Please submit comments on this specification as issues at <a class="url" target="_blank" href="https://github.com/NIEM/NIEM-Code-Lists-Spec/issues">https://github.com/NIEM/NIEM-Code-Lists-Spec/issues</a>.</p></div><div class="section"><div class="heading"><a name="toc"></a>Table of Contents</div><ul><li><a href="#section_1">1. Introduction</a><ul><li><a href="#section_1.1">1.1. Code list example</a></li><li><a href="#section_1.2">1.2. Machine-readable format for a code list</a></li><li><a href="#section_1.3">1.3. Identifiers for code lists</a></li><li><a href="#section_1.4">1.4. Mechanism for resolving code lists</a></li><li><a href="#section_1.5">1.5. Identifying a code list at run time</a></li><li><a href="#section_1.6">1.6. Identifying a code list at schema time</a></li></ul></li><li><a href="#section_2">2. Terminology</a><ul><li><a href="#section_2.1">2.1. RFC 2119: Key words for use in RFCs to Indicate Requirement Levels</a></li><li><a href="#section_2.2">2.2. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</a></li><li><a href="#section_2.3">2.3. XML</a></li><li><a href="#section_2.4">2.4. XML Namespaces</a></li><li><a href="#section_2.5">2.5. XML Information Set</a></li><li><a href="#section_2.6">2.6. XML Schema</a></li><li><a href="#section_2.7">2.7. Conformance Targets Attribute Specification</a></li><li><a href="#section_2.8">2.8. NIEM Naming and Design Rules</a></li><li><a href="#section_2.9">2.9. Code Lists</a></li><li><a href="#section_2.10">2.10. RFC 4180: Comma-separated values (CSV) files</a></li><li><a href="#section_2.11">2.11. XML Catalogs</a></li></ul></li><li><a href="#section_3">3. Conformance targets</a><ul><li><a href="#section_3.1">3.1. Code list document</a></li><li><a href="#section_3.2">3.2. Genericode code list document</a></li><li><a href="#section_3.3">3.3. CSV code list document</a></li><li><a href="#section_3.4">3.4. Code list-enabled schema document</a></li><li><a href="#section_3.5">3.5. Code list-enabled instance document</a></li><li><a href="#section_3.6">3.6. Code list validation set</a></li></ul></li><li><a href="#section_4">4. Binding XML content to code lists</a><ul><li><a href="#section_4.1">4.1. Multiple bindings</a></li><li><a href="#section_4.2">4.2. Binding by URI</a></li><li><a href="#section_4.3">4.3. Definition of code list binding</a></li><li><a href="#section_4.4">4.4. Run-time binding</a><ul><li><a href="#section_4.4.1">4.4.1. Syntax for run-time code list binding</a></li><li><a href="#section_4.4.2">4.4.2. Run-time effective code list binding</a></li></ul></li><li><a href="#section_4.5">4.5. Schema-time binding</a><ul><li><a href="#section_4.5.1">4.5.1. Syntax for schema-time code list binding</a></li><li><a href="#section_4.5.2">4.5.2. Simple binding of schema components</a></li><li><a href="#section_4.5.3">4.5.3. Complex binding of schema components</a></li></ul></li><li><a href="#section_4.6">4.6. Matches for code list bindings</a></li></ul></li><li><a href="#section_5">5. Comma-separated values (CSV) code lists</a></li><li><a href="#section_6">6. Genericode code lists</a></li><li><a href="#section_7">7. Well-known columns and references</a><ul><li><a href="#section_7.1">7.1. Column: <q>code</q></a></li><li><a href="#section_7.2">7.2. Column: <q>definition</q></a></li><li><a href="#section_7.3">7.3. Column: <q>subclass-of</q></a></li><li><a href="#section_7.4">7.4. Column: <q>uri</q></a></li><li><a href="#section_7.5">7.5. Columns supporting ranges of values</a><ul><li><a href="#section_7.5.1">7.5.1. Column: <q>minimum-inclusive</q></a></li><li><a href="#section_7.5.2">7.5.2. Column: <q>minimum-exclusive</q></a></li><li><a href="#section_7.5.3">7.5.3. Column: <q>maximum-inclusive</q></a></li><li><a href="#section_7.5.4">7.5.4. Column: <q>maximum-exclusive</q></a></li></ul></li><li><a href="#section_7.6">7.6. Code list example using well-known columns</a></li></ul></li><li><a href="#appendix_A">Appendix A. References</a></li><li><a href="#appendix_B">Appendix B. XML Schema document for the code lists instance namespace</a></li><li><a href="#appendix_C">Appendix C. XML Schema document for the code list schema appinfo namespace</a></li><li><a href="#appendix_D">Appendix D. Example documents: Make–Model example</a><ul><li><a href="#appendix_D.1">Appendix D.1. Vehicle make and model code list</a></li><li><a href="#appendix_D.2">Appendix D.2. Make–Model code list CSV file</a></li><li><a href="#appendix_D.3">Appendix D.3. Make–Model code list Genericode file</a></li><li><a href="#appendix_D.4">Appendix D.4. XML instance with schema-time code list binding</a></li><li><a href="#appendix_D.5">Appendix D.5. Extension schema with schema-time code list binding</a></li><li><a href="#appendix_D.6">Appendix D.6. XML catalog for schema-time code list binding</a></li><li><a href="#appendix_D.7">Appendix D.7. XML instance with run-time code list binding</a></li><li><a href="#appendix_D.8">Appendix D.8. Extension schema with run-time code list binding</a></li><li><a href="#appendix_D.9">Appendix D.9. XML catalog for run-time code list binding</a></li></ul></li><li><a href="#appendix_E">Appendix E. Index</a></li><li><a href="#appendix_F">Appendix F. Index of definitions</a></li><li><a href="#appendix_G">Appendix G. Index of rules</a></li></ul></div><div class="section"><div class="heading"><a name="d3e63"></a>Table of Figures</div><ul><li><a href="#figure_1-1">Figure 1-1: An XML instance with run-time code list binding</a></li><li><a href="#figure_1-2">Figure 1-2: XML instance using schema-time code list binding</a></li><li><a href="#figure_1-3">Figure 1-3: XML schema defining a simple code list binding</a></li><li><a href="#figure_1-4">Figure 1-4: XML schema defining a complex code list binding</a></li><li><a href="#figure_7-1">Figure 7-1: Instance referencing range columns</a></li><li><a href="#figure_7-2">Figure 7-2: Definition of columns in Genericode</a></li><li><a href="#figure_7-3">Figure 7-3: Definition of columns in Genericode</a></li><li><a href="#figure_7-4">Figure 7-4: Distinct entries in Genericode</a></li></ul></div><div class="section"><div class="heading"><a name="d3e71"></a>Table of Tables</div><ul><li><a href="#table_1-1">Table 1-1: Example code list: vehicle makes and models</a></li><li><a href="#table_3-1">Table 3-1: Codes representing conformance targets</a></li><li><a href="#table_7-1">Table 7-1: Example code list: directions</a></li><li><a href="#table_7-2">Table 7-2: Use of columns in a code list</a></li><li><a href="#table_D-1">Table D-1: Vehicle make and model code list</a></li></ul></div><div class="section"><div class="heading"><a name="section_1"></a>1. Introduction</div><p>This document establishes methods for using code list artifacts with NIEM information exchange specifications. It provides for the use of Genericode documents, as well as for CSV code lists. It supports the use of code lists at schema definition time, via annotations for XML Schema documents that bind schema components to code lists. It supports the use of code lists at run time, via XML Schema components for use in XML documents that bind XML data to code lists. It also includes identifiers for well-known columns that have semantics needed across the NIEM community.</p><p>This specification supplements the use of XML Schema enumerations and simple types as a representation of code lists for information exchanges, which is sufficient for many use cases. The use of separate artifacts for code lists, along with annotations for XML Schema documents, has several goals and benefits, including include:</p><ul><li><p>Highly detailed and precise code lists, including:</p><ul><li>Multiple columns may be used to carry additional information about a code, or about a concept represented by a code.</li><li>Multiple fields in an exchange may be validated against the same code list, enabling the use of composite keys composed of values from multiple columns of a code list. This supports use cases such as validation of both make and model of a vehicle, or state and county of a location.</li><li>Support for relationships between codes, via the <q>subclass-of</q> column, so that one entry in a code list can described as a specialization of another entry.</li><li>Support for multiple languages for code definitions and other information.</li></ul></li><li>Independent version management of code lists and XML schemas for information exchange. A single version of a code list may be used for multiple exchanges, and a single exchange specification may use multiple versions of a code list. As well, an exchange may support multiple versions of a code list simultaneously.</li><li>Easy updating of code lists within schema sets and operational systems.</li><li>A code list may be represented as a CSV spreadsheet document, enabling easy editing and importing of codes and supporting data.</li><li>A code list may be represented as a Genericode XML document, supporting XML approaches to metadata management, and supporting the advanced features of Genericode, including version management and composite keys.</li><li>Code lists may be specified at schema time, in which case code list identifiers may appear in XML Schema documents.</li><li>Code lists may be specified at run time, in which case code list identifiers may appear in XML messages.</li><li>Software for resolving code list identifiers to code list documents is included in many software platforms, via implementations of entity resolvers that use XML Catalogs.</li></ul><p>This specification expands support for code lists, by enabling code lists to be managed independently of XML Schema documents, while still allowing them to support development of XML schemas and to be used for run-time validation. With the support of this specification, a single revision of a code list document may be used with multiple information exchange specifications. As well, a single information exchange specification may be used with multiple versions of a code list.</p><p>Features of this specification may be used in combination with other methods of representing code lists in exchanges, such as the use of enumerated values in simple types defined by XML Schema documents.</p><p>This specification describes an abstract model for code lists, and describes implementation of that model via Genericode and CSV files. Use of additional representations may be incorporated into future versions of this specification, as needed. In addition, the metadata and methods described by this document may support web service interactions for code list access, although such a mechanism is not described herein.</p><div class="section"><div class="heading"><a name="section-intro-example"></a><a name="section_1.1"></a>1.1. Code list example</div><p>This section provides an example of a code list and how that code list can be integrated with XML Schemas to provide additional validation and meaning to messages. Take as an example a code list for vehicle makes and models:</p><div class="table"><div class="caption"><a name="table_1-1"></a>Table 1-1: Example code list: vehicle makes and models</div><table><thead><tr><th>Make code</th><th>Make description</th><th>Model code</th><th>Model description</th><th>Class</th></tr></thead><tbody><tr><td>FORD</td><td>Ford</td><td>FUS</td><td>Fusion</td><td>Auto</td></tr><tr><td>HOND</td><td>Honda</td><td>CIV</td><td>Civic</td><td>Auto</td></tr><tr><td>HOND</td><td>Honda</td><td>CRV</td><td>CRV</td><td>SUV</td></tr><tr><td>DODG</td><td>Dodge</td><td>R15</td><td>Ram 1500</td><td>Pickup</td></tr><tr><td>NISS</td><td>Nissan</td><td>ALT</td><td>Altima</td><td>Auto</td></tr><tr><td>FORD</td><td>Ford</td><td>F15</td><td>F-150</td><td>Pickup</td></tr><tr><td>TOYT</td><td>Toyota</td><td>COA</td><td>Corolla</td><td>Auto</td></tr><tr><td>FORD</td><td>Ford</td><td>500</td><td>Five Hundred</td><td>Auto</td></tr><tr><td>HOND</td><td>Honda</td><td>ACC</td><td>Accord</td><td>Auto</td></tr><tr><td>TOYT</td><td>Toyota</td><td>CAM</td><td>Camry</td><td>Auto</td></tr><tr><td>CHEV</td><td>Chevrolet</td><td>SLV</td><td>Silverado</td><td>Pickup</td></tr><tr><td>MERZ</td><td>Mercedes-Benz</td><td>500</td><td>500 Series</td><td>Auto</td></tr></tbody></table></div><p>To take the summary from <a href="#section_2.9">Section 2.9, <em>Code Lists</em>, below</a>:</p><blockquote><p>To summarize, a <a name="d3e418"></a><a href="#definition_code_list"><span class="termRef">code list</span></a> is a set of distinct entries with a corresponding set of columns. Each <a name="d3e421"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entry</span></a> contains a set of code values. Each <a name="d3e424"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> corresponds to a distinct column in the code list. Each <a name="d3e427"></a><a href="#definition_column"><span class="termRef">column</span></a> identifies and describes the code values within the distinct entries of the code list. A <a name="d3e430"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> is a name for the code list as a whole, and a <a name="d3e434"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> is a name of a single column within a code list.</p></blockquote><p>In this example:</p><ul><li>The <a name="d3e449"></a><a href="#definition_code_list"><span class="termRef">code list</span></a> is the table.</li><li>The <a name="d3e458"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entries</span></a> are the rows (excluding the header) that start with <q>FORD</q>, <q>HOND</q>, etc.</li><li>The <a name="d3e473"></a><a href="#definition_code_value"><span class="termRef">code values</span></a> are the values of the individual table cells (excluding the header), including <q>FORD</q>, <q>Ford</q>, <q>FUS</q>, <q>Fusion</q>, etc.</li><li>The code list <a name="d3e494"></a><a href="#definition_column"><span class="termRef">columns</span></a> are the vertical stacks <q>Make code</q>, <q>Make description</q>, <q>Model code</q>, <q>Model description</q>, and <q>Class</q>. Each column has a header and a slot within each distinct entry.</li></ul><p>What we see above is a code list, but there are things missing; in order to make code lists and their uses machine-readable and verifiable, this specification provides:</p><ol><li><strong>Machine-readable formats</strong> for code lists. This specification provides for the use of Genericode (an XML representation) and CSV files to represent code lists. It also provides a foundation for other representations of code lists, to be identified and implemented later.</li><li><strong>Identifiers</strong> for code lists. This specification defines that an <a name="d3e535"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a> is an identifier for a code list (as well, <a href="#Genericode" class="ref">[Genericode]</a> distinguishes between an identifier for a class of code lists and an identifier for a particular version of a code list). This specification also defines an <a name="d3e540"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a> as an identifier for a column, and a character string value as a name of a column within a code list.</li><li>Mechanism for <strong>resolving</strong> code lists. This specification leverages XML Catalogs to resolve code list identifier URIs into code list documents.</li><li>Mechanism for identifying the <strong>use of a code list in an XML message</strong>, such that it can be identified or specified by the exchanged message itself. This specification provides several XML attributes (in the <a name="d3e561"></a><a href="#definition_code_lists_instance_namespace"><span class="termRef">code lists instance namespace</span></a>) that label XML element content as corresponding to code values in a code list.</li><li>Mechanism for identifying <strong>use of a code list in an XML Schema</strong>, such that it can be determined at IEPD development time or system load time. This specification provides a small XML vocabulary (in the <a name="d3e573"></a><a href="#definition_code_lists_schema_appinfo_namespace"><span class="termRef">code lists schema appinfo namespace</span></a>) that annotates XML Schema component definitions, to describe correspondences between XML content and code values in a code list.</li><li><strong>Matching values</strong> in an XML instance document to code list distinct entries: This specification defines matches between a code list binding and a code list. Each code list binding may result in zero or more matches to <a name="d3e585"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entries</span></a> in a <a name="d3e588"></a><a href="#definition_code_list"><span class="termRef">code list</span></a>. </li></ol></div><div class="section"><div class="heading"><a name="section_1.2"></a>1.2. Machine-readable format for a code list</div><p>This specification provides for representing code lists using CSV files and Genericode files. The code list in <a href="#table_1-1">Table 1-1, <em>Example code list: vehicle makes and models</em>, above,</a> may be represented as a CSV or Genericode document, as shown in <a href="#appendix_D.2">Appendix D.2, <em>Make–Model code list CSV file</em>, below,</a> and <a href="#appendix_D.3">Appendix D.3, <em>Make–Model code list Genericode file</em>, below</a>.</p><p>This specification also provides a framework for code lists that may be implemented using other formats. The syntax of code list bindings and code list use in instance documents may leverage formats other than CSV and Genericode. Future specifications may identify how other formats satisfy the code list framework defined by this document. </p></div><div class="section"><div class="heading"><a name="section_1.3"></a>1.3. Identifiers for code lists</div><p>Consistent with <a href="#Genericode" class="ref">[Genericode]</a>, this specification defines <a name="d3e622"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URIs</span></a> as identifiers for code lists. Each code list may have any number of identifiers, each a URI. Genericode identifies several kinds of URIs that identify a code list.</p><p>This specification also provides for the identification of columns within a code list. It defines column names as strings, whereas Genericode defines column IDs of type <code>xs:ID</code>. The use of strings to carry identifiers allows CSV and other non-Genericode representations for code lists.</p><p>The use of identifiers for code lists and columns is shown in the examples:</p><ul><li><a href="#appendix_D.3">Appendix D.3, <em>Make–Model code list Genericode file</em>, below,</a> shows URIs that identify the code list (one for the class of code list, another for the specific version of the code list). It also shows column definitions, each of which is provided an ID.</li><li><a href="#appendix_D.5">Appendix D.5, <em>Extension schema with schema-time code list binding</em>, below,</a> shows the use of code list URIs and column names to reference a code list from an XML Schema document.</li><li><a href="#appendix_D.7">Appendix D.7, <em>XML instance with run-time code list binding</em>, below,</a> shows the use of code list URIs and column names to reference a code list from an XML instance document.</li><li><a href="#appendix_D.6">Appendix D.6, <em>XML catalog for schema-time code list binding</em>, below,</a> and <a href="#appendix_D.9">Appendix D.9, <em>XML catalog for run-time code list binding</em>, below,</a> show the use of code list URIs to identify Genericode documents.</li></ul></div><div class="section"><div class="heading"><a name="section_1.4"></a>1.4. Mechanism for resolving code lists</div><p>This specification uses the mechanism defined by <a href="#XMLCatalogs" class="ref">[XML Catalogs]</a> to describe the resolution of <a name="d3e670"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> URIs into <a name="d3e673"></a><a href="#definition_code_list_document"><span class="termRef">code list documents</span></a>. Examples of this in use are shown in the <a name="d3e676"></a><a href="#definition_catalog_entry_file"><span class="termRef">catalog entry files</span></a> in <a href="#appendix_D.6">Appendix D.6, <em>XML catalog for schema-time code list binding</em>, below,</a> and <a href="#appendix_D.9">Appendix D.9, <em>XML catalog for run-time code list binding</em>, below</a>. Each of these catalog files resolves the <a name="d3e684"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> <q>http://example.org/code-list/vehicle-make-model</q> to a locally available <a name="d3e690"></a><a href="#definition_resource"><span class="termRef">resource</span></a> <q>make-model.gc</q>, a Genericode code list document. </p></div><div class="section"><div class="heading"><a name="section-intro-run-time"></a><a name="section_1.5"></a>1.5. Identifying a code list at run time</div><p>An XML document can connect its contents to code lists using attributes that appear in the instance. This is called a run-time binding, and connects the simple content of an element to a code value in a code list. The attributes that define this connection are in the <a name="d3e706"></a><a href="#definition_code_lists_instance_namespace"><span class="termRef">code lists instance namespace</span></a>. They are:</p><ul><li>Attribute <code>cli:codeListURI</code>: Carries an <a name="d3e718"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a> that acts as a <a name="d3e721"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a>. It identifies a code list to which the value belongs.</li><li>Attribute <code>cli:codeListColumnName</code>: Carries an <code>xs:string</code> that holds the name of a column within the code list, or a well-known column reference. The value of the element corresponds to a value in the identified column. This attribute may be optional; if it does not appear, the binding defaults to <q>#code</q>, which is resolved to a code column, as specified for the class of code list document.</li><li><p>Attribute <code>cli:codeListConstrainingIndicator</code>: carries an <code>xs:boolean</code> that indicates whether the binding to the code list defines a constraint on the validity of the message. This attribute is optional; if it does not appear, then the binding constrains message validity. Values are:</p><ul><li><strong>true</strong>: The message is valid only if the value of the element appears in the indicated column of the indicated code list. This is the default.</li><li><strong>false</strong>: The validity of the message is not affected by the occurrence of the value within the code list. This allows a code list to be used as a source of meaningful values while allowing values not in the code list to be passed.</li></ul></li></ul><p> <a href="#figure_1-1">Figure 1-1, <em>An XML instance with run-time code list binding</em>, below,</a> shows an example of run-time binding It uses the attribute <code>cli:codeListURI</code> to connect the value of element <code>ext:VehicleMakeCode</code> (<q>DODG</q>) to the make–model code list, and the attribute <code>cli:codeListColumnName</code> to connect the value to the <q>make</q> column of that code list. It also connects the value of <code>ext:VehicleModelCode</code> (<q>R15</q>) to the <q>model</q> column of the code list.</p><div class="figure"><div class="caption"><a name="figure_1-1"></a>Figure 1-1: An XML instance with run-time code list binding</div><div class="box"><pre><nc:Vehicle
xmlns:cli="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/"
xmlns:ext="http://example.org/namespace/extension-run-time"
xmlns:nc="http://release.niem.gov/niem/niem-core/4.0/">
<ext:VehicleMakeCode
cli:codeListURI="http://example.org/code-list/vehicle-make-model"
cli:codeListColumnName="make"
>DODG</ext:VehicleMakeCode>
<ext:VehicleModelCode
cli:codeListURI="http://example.org/code-list/vehicle-make-model"
cli:codeListColumnName="model"
>R15</ext:VehicleModelCode>
</nc:Vehicle>
</pre></div></div><p>Advantages of this strategy include:</p><ul><li>The connection is established by the writer of the message, rather than the writer of the schema.</li><li>The connection is established at run time, rather than at the time the schemas are defined.</li><li>The connection to code lists is explicit in the XML instance document, rather than being defined in schemas that are not exchanged.</li></ul></div><div class="section"><div class="heading"><a name="section-intro-schema-time"></a><a name="section_1.6"></a>1.6. Identifying a code list at schema time</div><p>This specification defines an annotation vocabulary, the <a name="d3e836"></a><a href="#definition_code_lists_schema_appinfo_namespace"><span class="termRef">code lists schema appinfo namespace</span></a>, which allows connections between code lists and elements, attributes, and types that are defined in an XML Schema. This is managed with two annotation elements:</p><ul><li><p><code>clsa:SimpleCodeListBinding</code>: a simple code list binding connects the simple content of an element or the value of an attribute to a code list. It is added to a schema component definition as an appinfo annotation. A simple code list binding may be attached to top-level attribute declarations, element declarations, simple type definitions, and complex type definitions. It has the following attributes:</p><ul><li>Attribute <code>codeListURI</code> identifies the code list.</li><li>Attribute <code>columnName</code> identifies the code list column, or a well-known column reference.</li><li>Attribute <code>constrainingIndicator</code> indicates whether the existence (or absence) of a value in a code list impacts validity of the instance XML document.</li></ul></li><li><p><code>clsa:ComplexCodeListBinding</code>: a complex code list binding on a complex type or element connects child elements to columns of a code list. Like a simple code list binding, it is added as a schema annotation on schema component definitions. It may be added to a top-level element declaration, or to a named complex type definition. It has the following parts:</p><ul><li>Attribute <code>codeListURI</code> identifies the code list.</li><li>Attribute <code>constrainingIndicator</code> indicates whether the existence (or absence) of a value in a code list impacts validity of the instance XML document.</li><li><p>Element <code>clsa:ElementCodeListBinding</code> attaches child elements to columns of the code list. It has attributes:</p><ul><li>Attribute <code>elementName</code> provides the name of an element whose value is connected to a code list.</li><li>Attribute <code>columnName</code> provides the name of a column of the code list, or a well-known column reference.</li></ul></li></ul></li></ul><p><a href="#figure_1-2">Figure 1-2, <em>XML instance using schema-time code list binding</em>, below,</a> shows an instance that uses schema-time binding. The instance does not carry any information about code lists; it does not have a code list identifier, nor does it have a column name. The instance is simple.</p><div class="figure"><div class="caption"><a name="figure_1-2"></a>Figure 1-2: XML instance using schema-time code list binding</div><div class="box"><pre><ext:Vehicle
<ext:VehicleMakeCode>DODG</ext:VehicleMakeCode>
<ext:VehicleModelCode>R15</ext:VehicleModelCode>
</ext:Vehicle>
</pre></div></div><p>The simple code list binding in <a href="#figure_1-3">Figure 1-3, <em>XML schema defining a simple code list binding</em>, below,</a> connects the content of VehicleMakeCode to the code list's <q>make</q> column.</p><div class="figure"><div class="caption"><a name="figure_1-3"></a>Figure 1-3: XML schema defining a simple code list binding</div><div class="box"><pre><xs:element name="VehicleMakeCode" type="niem-xs:token"
substitutionGroup="nc:VehicleMakeAbstract">
<xs:annotation>
<xs:documentation>A code for a manufacturer of a vehicle.</xs:documentation>
<xs:appinfo>
<clsa:SimpleCodeListBinding
codeListURI="http://example.org/code-list/vehicle-make-model"
columnName="make"/>
</xs:appinfo>
</xs:annotation>
</xs:element>
</pre></div></div><p>The complex code list binding in <a href="#figure_1-4">Figure 1-4, <em>XML schema defining a complex code list binding</em>, below,</a> connects <code>nc:VehicleMake</code> and <code>nc:VehicleModel</code> child elements of element <code>Vehicle</code> to the code list:</p><ul><li>It connects the <code>nc:VehicleMake</code> element (or an element substitutable for <code>nc:VehicleMake</code>) to the column named <q>make</q>.</li><li>It connects the <code>nc:VehicleModel</code> element (or an element substitutable for <code>nc:VehicleModel</code>) to the column named <q>model</q>.</li></ul><div class="figure"><div class="caption"><a name="figure_1-4"></a>Figure 1-4: XML schema defining a complex code list binding</div><div class="box"><pre><xs:element name="Vehicle" type="nc:VehicleType"
substitutionGroup="nc:Vehicle">
<xs:annotation>
<xs:appinfo>
<clsa:ComplexCodeListBinding
codeListURI="http://example.org/code-list/vehicle-make-model">
<clsa:ElementCodeListBinding elementName="ext:VehicleMakeCode"
columnName="make"/>
<clsa:ElementCodeListBinding elementName="ext:VehicleModelCode"
columnName="model"/>
</clsa:ComplexCodeListBinding>
</xs:appinfo>
</xs:annotation>
</xs:element>
</pre></div></div><p>Advantages of this strategy include:</p><ul><li>Simplicity: Instance documents that don't specify code list bindings are simpler than those that do. When the schema defines the code list binding, the instance documents do not need to carry the code list connection attributes, making them much less verbose.</li><li>Trust: connections to code lists are not defined by untrusted messages. The connections between the instances and code lists are defined as part of the schema of the message.</li><li>Multiple bindings: a single value in an instance XML document be connected to multiple code lists in different ways. This is done by defining multiple code list bindings for elements, attributes, or types in the XML Schema that defines the value.</li><li>Multiple columns: multiple child elements may be connected to multiple columns in a code list. For example, from <a href="#appendix_D.8">Appendix D.8, <em>Extension schema with run-time code list binding</em>, below,</a> this annotation on a vehicle type connects the make and model fields of the vehicle to the make and model columns of a code list:</li></ul></div></div><div class="section"><div class="heading"><a name="section_2"></a>2. Terminology</div><p>This document relies on terminology defined by other specifications and standards, as well as terminology specific to this specification. This section introduces many terms, and directs the reader to the external source definition of a term when appropriate. The following sections reflect the different sources and topics of this terminology:</p><ul><li><a href="#section_2.1">Section 2.1, <em>RFC 2119: Key words for use in RFCs to Indicate Requirement Levels</em></a></li><li><a href="#section_2.2">Section 2.2, <em>RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</em></a></li><li><a href="#section_2.3">Section 2.3, <em>XML</em></a></li><li><a href="#section_2.4">Section 2.4, <em>XML Namespaces</em></a></li><li><a href="#section_2.5">Section 2.5, <em>XML Information Set</em></a></li><li><a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#section_2.7">Section 2.7, <em>Conformance Targets Attribute Specification</em></a></li><li><a href="#section_2.8">Section 2.8, <em>NIEM Naming and Design Rules</em></a></li><li><a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#section_2.10">Section 2.10, <em>RFC 4180: Comma-separated values (CSV) files</em></a></li><li><a href="#section_2.11">Section 2.11, <em>XML Catalogs</em></a></li></ul><div class="section"><div class="heading"><a name="section_2.1"></a>2.1. RFC 2119: Key words for use in RFCs to Indicate Requirement Levels</div><p>Within normative content (rules and definitions), the key words <q>MUST</q>, <q>MUST NOT</q>, <q>REQUIRED</q>, <q>SHALL</q>, <q>SHALL NOT</q>, <q>SHOULD</q>, <q>SHOULD NOT</q>, <q>RECOMMENDED</q>, <q>MAY</q>, and <q>OPTIONAL</q> in this document are to be interpreted as described in <a href="#RFC2119" class="ref">[RFC2119]</a>.</p></div><div class="section"><div class="heading"><a name="section_2.2"></a>2.2. RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</div><p><a href="#RFC3986" class="ref">[RFC3986]</a> defines <a name="definition_uniform_resource_identifier"></a><dfn>uniform resource identifier</dfn> (<a name="definition_URI"></a><dfn>URI</dfn>), which it describes as:</p><blockquote><p>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource.</p></blockquote><p>The term <a name="definition_absolute_URI"></a><dfn>absolute URI</dfn> is as defined by <a href="#RFC3986" class="ref">[RFC3986]</a> <a target="_blank" href="http://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3, <em>Absolute URI</em></a>, identifying a uniform resource identifier that matches the grammar production <code>absolute-URI</code>.</p><p>The term <a name="definition_resource"></a><dfn>resource</dfn> is defined by <a href="#RFC3986" class="ref">[RFC3986]</a> <a target="_blank" href="http://tools.ietf.org/html/rfc3986#page-5">Section 1.1, <em>Overview of URIs</em></a>, which states:</p><blockquote><p>This specification does not limit the scope of what might be a resource; rather, the term <q>resource</q> is used in a general sense for whatever might be identified by a URI. Familiar examples include an electronic document, an image, a source of information with a consistent purpose (e.g., <q>today’s weather report for Los Angeles</q>), a service (e.g., an HTTP-to-SMS gateway), and a collection of other resources.</p></blockquote></div><div class="section"><div class="heading"><a name="section_2.3"></a>2.3. XML</div><p>The term <a name="definition_XML_document"></a><dfn>XML document</dfn> is defined by <a href="#XML" class="ref">[XML]</a> <a target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/#dt-xml-doc">Section 2, <em>Documents</em></a>, which states:</p><blockquote><p>A data object is an XML document if it is well-formed, as defined in this specification.</p></blockquote></div><div class="section"><div class="heading"><a name="section_2.4"></a>2.4. XML Namespaces</div><p>This document uses XML Namespaces as defined by <a href="#XMLNamespaces" class="ref">[XMLNamespaces]</a>.</p><p>The following namespace prefixes are used consistently within this specification. These prefixes are not normative; this document issues no requirement that these prefixes be used in any conformant artifact. Although there is no requirement for a schema or XML document to use a particular namespace prefix, the meaning of the following namespace prefixes have fixed meaning in this document.</p><ul><li><code>xs</code> (<q>XML Schema</q>): The namespace for the XML Schema definition language as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> and <a href="#XMLSchema2" class="ref">[XMLSchema2]</a>: <q><code>http://www.w3.org/2001/XMLSchema</code></q>.</li><li><code>ct</code> (<q>conformance targets</q>): The namespace defined by <a href="#CTAS" class="ref">[CTAS]</a> for the <code>ct:conformanceTargets</code> attribute: <q><code>http://release.niem.gov/niem/conformanceTargets/3.0/</code></q>.</li><li><code>cli</code> (<q>code lists instance</q>): Defined by this specification, the <a name="definition_code_lists_instance_namespace"></a><dfn>code lists instance namespace</dfn> defines attributes that connect XML element content to code lists at run time: <q><code>http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/</code></q>. The XML schema document defining this namespace is provided in <a href="#appendix_B">Appendix B, <em>XML Schema document for the code lists instance namespace</em>, below</a>.</li><li><code>clsa</code> (<q>code list schema appinfo</q>): Defined by this specification, the <a name="definition_code_lists_schema_appinfo_namespace"></a><dfn>code lists schema appinfo namespace</dfn> defines an XML vocabulary for use in <code>xs:appinfo</code> on XML Schema component definitions, which connect XML element and attribute content to code lists: <q><code>http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-schema-appinfo/</code></q>. The XML schema document defining this namespace is provided in <a href="#appendix_C">Appendix C, <em>XML Schema document for the code list schema appinfo namespace</em>, below</a>.</li><li><code>gc</code> (<q>Genericode</q>): The namespace for the XML vocabulary for Genericode, as defined by <a href="#Genericode" class="ref">[Genericode]</a>: <q><code>http://docs.oasis-open.org/codelist/ns/genericode/1.0/</code></q>.</li></ul></div><div class="section"><div class="heading"><a name="section_2.5"></a>2.5. XML Information Set</div><p>This document refers to content of XML documents using terms from <a href="#XMLInfoset" class="ref">[XML Infoset]</a>. Terminology adapted from <a href="#XMLInfoset" class="ref">[XML Infoset]</a> includes:</p><ul><li>The term <a name="definition_element"></a><dfn>element</dfn> refers to an element information item as defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.element">Section 2.2, <em>Element Information Items</em></a>.</li><li>The term <a name="definition_attribute"></a><dfn>attribute</dfn> refers to an attribute information item as defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.attribute">Section 2.3, <em>Attribute Information Items</em></a>.</li><li>The term <a name="definition_text"></a><dfn>text</dfn> refers to the encapsulation of a series of character information items, as defined by defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.character">Section 2.6, <em>Character Information Items</em></a>. A text item aggregates all contiguous character information items that have the same parent node.</li><li><p>Properties of information items used by this document include:</p><ul><li><strong>[namespace name]</strong> and <strong>[local name]</strong> of an element or attribute</li><li><strong>[parent]</strong> of an element</li><li><strong>[attributes]</strong> of an element</li></ul></li><li>An information item that is identified by a qualified name is referring to the <strong>[namespace name]</strong> corresponding to the qualified name’s prefix assigned value or namespace URI, and <strong>[local name]</strong> corresponding to the qualified name’s local name.</li></ul></div><div class="section"><div class="heading"><a name="section_2.6"></a>2.6. XML Schema</div><p>This specification provides definitions and mechanisms that may be used within XML Schemas and individual XML Schema documents for validation of information exchanges. To define these mechanisms, terminology from the XML Schema specification must be clarified.</p><p>Terms adapted from <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> include:</p><ul><li><p>The term <a name="definition_XML_Schema_definition_language"></a><dfn>XML Schema definition language</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#abstract">subsection <em>Abstract</em></a>, which states:</p><blockquote><p><em>XML Schema: Structures</em> specifies the XML Schema definition language, which offers facilities for describing the structure and constraining the contents of XML 1.0 documents, including those which exploit the XML Namespace facility. The schema language, which is itself represented in XML 1.0 and uses namespaces, substantially reconstructs and considerably extends the capabilities found in XML 1.0 document type definitions (DTDs).</p></blockquote></li><li><p>The term <a name="definition_XML_Schema"></a><dfn>XML Schema</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-schema">Section 2.2, <em>XML Schema Abstract Data Model</em></a>, which states:</p><blockquote><p>An <strong>XML Schema</strong> is a set of schema components.</p></blockquote></li><li><p>The term <a name="definition_schema_component"></a><dfn>schema component</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-component">Section 2.2, <em>XML Schema Abstract Data Model</em></a>, which states:</p><blockquote><p><strong>Schema component</strong> is the generic term for the building blocks that comprise the abstract data model of the schema.</p></blockquote></li><li><p>The term <a name="definition_schema_document"></a><dfn>schema document</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-schemaDoc">Section 3.1.2, <em>XML Representations of Components</em></a>, which states:</p><blockquote><p>A document in this form (i.e. a <schema> element information item) is a <strong>schema document</strong>.</p></blockquote></li><li>The term <a name="definition_normalized_value"></a><dfn>normalized value</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-nv">Section 3.1.4, <em>White Space Normalization during Validation</em></a>.</li><li>The term <a name="definition_attribute_declaration"></a><dfn>attribute declaration</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Attribute_Declaration">Section 2.2.2.3, <em>Attribute Declaration</em></a>.</li><li>The term <a name="definition_element_declaration"></a><dfn>element declaration</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Element_Declaration">Section 2.2.2.1, <em>Element Declaration</em></a>.</li><li>The <a name="definition_substitution_group"></a><dfn>substitution group</dfn> of an element declaration is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-eq">Section 3.3.6, <em>Constraints on Element Declaration Schema Components</em></a>.</li><li>The term <a name="definition_type_definition"></a><dfn>type definition</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-typeDefn">Section 2.2.1, <em>Type Definition Components</em></a>.</li><li>The term <a name="definition_simple_type_definition"></a><dfn>simple type definition</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Simple_Type_Definition">Section 2.2.1.2, <em>Simple Type Definition</em></a>.</li><li>The term <a name="definition_complex_type_definition"></a><dfn>complex type definition</dfn> is defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Complex_Type_Definition">Section 2.2.1.3, <em>Complex Type Definition</em></a>.</li><li><p>The term <a name="definition_schema-valid"></a><dfn>schema-valid</dfn> refers to <q>valid</q> as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-vn">Section 2.1, <em>Overview of XML Schema</em></a>.</p><p>Note that a requirement for XML content to be schema-valid does not imply or require that validation against XML Schemas must actually occur at run time. Rather, it means that the XML content that is required to be schema-valid must be composed such that it would be assessed as valid were schema validity assessment to take place. Schema validity may be described in terms of a schema document, in which case validity should be considered as strictly assessed against the namespaces defined by that schema document.</p></li><li><p>A type <var>$derived</var> is <a name="definition_derived"></a><dfn>derived</dfn> from a type <var>$base</var> if and only if type <var>$derived</var> is validly derived from type <var>$base</var> for <em>{extension, restriction}</em> as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#cos-ct-derived-ok">Section 3.4.6, <em>Constraints on Complex Type Definition Schema Components</em>, subsection <em>Schema Component Constraint: Type Derivation OK (Complex)</em></a> and <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#cos-st-derived-ok">Section 3.14.6, <em>Constraints on Simple Type Definition Schema Components</em>, subsection <em>Schema Component Constraint: Type Derivation OK (Simple)</em></a>.</p><p>Note that this means that a type can be said to be derived from itself.</p></li></ul><p>The XML Schema defines properties of schema components, including:</p><ul><li>{type definition} of an <a name="d3e1708"></a><a href="#definition_attribute_declaration"><span class="termRef">attribute declaration</span></a>, as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#a-simple_type_definition">Section 3.2.1, <em>The Attribute Declaration Schema Component</em></a></li><li>{type definition} of an <a name="d3e1722"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a>, as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#type_definition">Section 3.3.1, <em>The Element Declaration Schema Component</em></a></li></ul><p>The XML Schema specification defines additional properties of information set information items as part of the <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-psvi">post-schema-validation infoset (PSVI)</a>. These properties include:</p><ul><li><strong>[attribute declaration]</strong> of an <a name="d3e1749"></a><a href="#definition_attribute"><span class="termRef">attribute</span></a>, as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#a-declaration">Section 3.2.5, <em>Attribute Declaration Information Set Contributions</em></a></li><li><strong>[element declaration]</strong> of an <a name="d3e1766"></a><a href="#definition_element"><span class="termRef">element</span></a>, as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#e-declaration">Section 3.3.5, <em>Element Declaration Information Set Contributions</em></a></li><li><strong>[type definition]</strong> of an <a name="d3e1783"></a><a href="#definition_element"><span class="termRef">element</span></a>, as defined by <a href="#XMLSchema1" class="ref">[XMLSchema1]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#e-type_definition">Section 3.3.5, <em>Element Declaration Information Set Contributions</em></a></li></ul><p>To facilitate code lists representing ranges of values as described in <a href="#section_7.5">Section 7.5, <em>Columns supporting ranges of values</em>, below</a>, the following terms are adapted from <a href="#XMLSchema2" class="ref">[XMLSchema2]</a>, <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#rf-bounded">Section 4.2, <em>Fundamental Facets</em>, Subsection 4.2.1, <em>bounded</em></a>:</p><ul><li>The term <a name="definition_inclusive_upper_bound"></a><dfn>inclusive upper bound</dfn> is as defined by <a href="#XMLSchema2" class="ref">[XMLSchema2]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#dt-inclusive-upper-bound">Section 4.2.1, <em>bounded</em></a>.</li><li>The term <a name="definition_exclusive_upper_bound"></a><dfn>exclusive upper bound</dfn> is as defined by <a href="#XMLSchema2" class="ref">[XMLSchema2]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#dt-exclusive-upper-bound">Section 4.2.1, <em>bounded</em></a>.</li><li>The term <a name="definition_inclusive_lower_bound"></a><dfn>inclusive lower bound</dfn> is as defined by <a href="#XMLSchema2" class="ref">[XMLSchema2]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#dt-inclusive-lower-bound">Section 4.2.1, <em>bounded</em></a>.</li><li>The term <a name="definition_exclusive_lower_bound"></a><dfn>exclusive lower bound</dfn> is as defined by <a href="#XMLSchema2" class="ref">[XMLSchema2]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#dt-exclusive-lower-bound">Section 4.2.1, <em>bounded</em></a>.</li></ul><p>See also <a href="#section_2.8">Section 2.8, <em>NIEM Naming and Design Rules</em>, below,</a> for the term <a name="d3e1873"></a><a href="#definition_XML_Schema_document_set"><span class="termRef">XML Schema document set</span></a>.</p></div><div class="section"><div class="heading"><a name="section_2.7"></a>2.7. Conformance Targets Attribute Specification</div><p><a href="#CTAS" class="ref">[CTAS]</a> defines several terms used normatively within this specification.</p><p>The term <a name="definition_conformance_target"></a><dfn>conformance target</dfn> is defined by <a href="#CTAS" class="ref">[CTAS]</a> <a target="_blank" href="http://reference.niem.gov/niem/specification/conformance-targets-attribute/3.0/NIEM-CTAS-3.0-2014-07-31.html#definition_conformance_target">Section 3.1, <em>Conformance Target Defined</em></a> which states:</p><blockquote><p>A <em>conformance target</em> is a class of artifact, such as an interface, protocol, document, platform, process or service, that is the subject of conformance clauses and normative statements. There may be several conformance targets defined within a specification, and these targets may be diverse so as to reflect different aspects of a specification. For example, a protocol message and a protocol engine may be different conformance targets.</p></blockquote><p>The term <a name="definition_conformance_target_identifier"></a><dfn>conformance target identifier</dfn> is defined by <a href="#CTAS" class="ref">[CTAS]</a> <a target="_blank" href="http://reference.niem.gov/niem/specification/conformance-targets-attribute/3.0/NIEM-CTAS-3.0-2014-07-31.html#definition_conformance_target_identifier">Section 3.1, <em>Conformance Target Defined</em></a>, which states:</p><blockquote><p>A <em>conformance target identifier</em> is an internationalized resource identifier that uniquely identifies a conformance target.</p></blockquote><p>The term <a name="definition_effective_conformance_target_identifier"></a><dfn>effective conformance target identifier</dfn> is defined by <a href="#CTAS" class="ref">[CTAS]</a> <a target="_blank" href="http://reference.niem.gov/niem/specification/conformance-targets-attribute/3.0/NIEM-CTAS-3.0-2014-07-31.html#definition_effective_conformance_target_identifier">Section 4, <em>Semantics and Use</em></a>, which states:</p><blockquote><p>An <em>effective conformance target identifier</em> of a conformant document is an internationalized resource identifier reference that occurs in the document’s effective conformance targets attribute.</p></blockquote></div><div class="section"><div class="heading"><a name="section-term-ndr"></a><a name="section_2.8"></a>2.8. NIEM Naming and Design Rules</div><p>The term <a name="definition_application_information"></a><dfn>application information</dfn> (of a <a name="d3e1967"></a><a href="#definition_schema_component"><span class="termRef">schema component</span></a>) is defined by <a href="#NDR" class="ref">[NIEM NDR]</a> <a target="_blank" href="http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/niem-ndr-5.0.html#definition_application_information">Section 10.9, <em>Machine-readable annotations</em></a>, describing the contents of <code>xs:appinfo</code> annotations on the element that defines a schema component.</p><p>The term <a name="definition_XML_Schema_document_set"></a><dfn>XML Schema document set</dfn> is defined by <a href="#NDR" class="ref">[NIEM NDR]</a> <a target="_blank" href="http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/niem-ndr-5.0.html#definition_XML_Schema_document_set">Section 3.4, <em>XML Schema terminology</em></a>, which states:</p><blockquote><p>An XML Schema document set is a set of schema documents that together define an XML Schema suitable for assessing the validity of an XML document.</p></blockquote></div><div class="section"><div class="heading"><a name="section-term-code-lists"></a><a name="section_2.9"></a>2.9. Code Lists</div><p>To facilitate the use of code lists, this document must define some terms related to code lists and their use. <a href="#Genericode" class="ref">[Genericode]</a> is the source of some of this terminology, although in this specification much of this terminology refers to code lists in the abstract, rather than only as concrete Genericode documents.</p><div class="box"><div class="normativeHead"><a name="definition_code_list"></a>[Definition: <dfn>code list</dfn>]</div><div class="sub"><p>A <strong>code list</strong> is a set of <a name="d3e2019"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entries</span></a> with a corresponding set of <a name="d3e2022"></a><a href="#definition_column"><span class="termRef">columns</span></a>. A code list may be thought of as a table, with table rows as distinct entries, table columns as code list columns, and individual cells as <a name="d3e2025"></a><a href="#definition_code_value"><span class="termRef">code values</span></a>.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_distinct_entry"></a>[Definition: <dfn>distinct entry</dfn>]</div><div class="sub"><p>A <strong>distinct entry</strong> is a single conceptual entity within a <a name="d3e2037"></a><a href="#definition_code_list"><span class="termRef">code list</span></a>. It is composed of a set of <a name="d3e2040"></a><a href="#definition_code_value"><span class="termRef">code values</span></a>, each corresponding to a <a name="d3e2043"></a><a href="#definition_column"><span class="termRef">column</span></a> of the code list. It may be thought of as a row of a table, where each individual cell of a row corresponds to a column of the table.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_code_value"></a>[Definition: <dfn>code value</dfn>]</div><div class="sub"><p>A <strong>code value</strong> is a single data value within a <a name="d3e2055"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entry</span></a> in a <a name="d3e2058"></a><a href="#definition_code_list"><span class="termRef">code list</span></a>. Each code value of a distinct entry corresponds to a <a name="d3e2061"></a><a href="#definition_column"><span class="termRef">column</span></a> of the code list.</p></div></div><p><a href="#Genericode" class="ref">[Genericode]</a> uses the term <q><a name="d3e2071">value</a></q> to refer to a data item that corresponds to a column within a distinct entry. <q>Value</q> is a very common word, with broadly-understood meaning, and using it by itself, but with a very specialized meaning, would be misconstrued in many cases. For that reason, this document prefers the term <a name="d3e2077"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> when referring to a value of a <a name="d3e2080"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entry</span></a>.</p><div class="box"><div class="normativeHead"><a name="definition_column"></a>[Definition: <dfn>column</dfn>]</div><div class="sub"><p>A <strong>column</strong> of a <a name="d3e2091"></a><a href="#definition_code_list"><span class="termRef">code list</span></a> is metadata that describes a <a name="d3e2094"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> within each <a name="d3e2097"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entry</span></a> of the code list. Each code value within the code list corresponds to one column of the code list.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_code_list_identifier"></a>[Definition: <dfn>code list identifier</dfn>]</div><div class="sub"><p>A <strong>code list identifier</strong> is an <a name="d3e2109"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a> that identifies a <a name="d3e2112"></a><a href="#definition_code_list"><span class="termRef">code list</span></a>.</p></div></div><p>This document defines two designators for a column of a code list, the <a name="d3e2119"></a><a href="#definition_column_identifier"><span class="termRef">column identifier</span></a> and the <a name="d3e2122"></a><a href="#definition_column_name"><span class="termRef">column name</span></a>.</p><div class="box"><div class="normativeHead"><a name="definition_column_identifier"></a>[Definition: <dfn>column identifier</dfn>]</div><div class="sub"><p>A <strong>column identifier</strong> is an <a name="d3e2133"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a> that identifies a <a name="d3e2136"></a><a href="#definition_column"><span class="termRef">column</span></a> of a <a name="d3e2139"></a><a href="#definition_code_list"><span class="termRef">code list</span></a>.</p></div></div><p>A <a name="d3e2146"></a><a href="#definition_column_identifier"><span class="termRef">column identifier</span></a> identifies a column irrespective of the specific code list in which it occurs. <a href="#Genericode" class="ref">[Genericode]</a> defines <code>CanonicalUri</code> and <code>CanonicalVersionUri</code> that are column identifiers, which it provides for assigning universal semantics to code list columns.</p><div class="box"><div class="normativeHead"><a name="definition_column_name"></a>[Definition: <dfn>column name</dfn>]</div><div class="sub"><p>A <strong>column name</strong> is a character string value that identifies a <a name="d3e2166"></a><a href="#definition_column"><span class="termRef">column</span></a> within the scope of a <a name="d3e2169"></a><a href="#definition_code_list"><span class="termRef">code list</span></a>.</p></div></div><p>A <a name="d3e2176"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> is a text (character string) value that identifies a column, only within the scope of a specific code list. A column within a <a name="d3e2179"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> has an XML ID that uniquely identifies it within the document.</p><p>Note that all of the above definitions are abstract. They do not get into the details of Genericode, (e.g., canonical URIs, version URIs, location URIs, <code>ColumnRef</code>s, <code>ColumnSet</code>s, and <code>KeyRef</code>s). These terms and identifiers are generically defined here so that they may be applied to CSV and Genericode documents, or to other methods of expressing code lists, including other data file formats and registry-based services.</p><p>To summarize, a <a name="d3e2197"></a><a href="#definition_code_list"><span class="termRef">code list</span></a> is a set of distinct entries with a corresponding set of columns. Each <a name="d3e2200"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entry</span></a> contains a set of code values. Each <a name="d3e2203"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> corresponds to a distinct column in the code list. Each <a name="d3e2206"></a><a href="#definition_column"><span class="termRef">column</span></a> identifies and describes the code values within the distinct entries of the code list. A <a name="d3e2209"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> is a name for the code list as a whole, and a <a name="d3e2213"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> is a name of a single column within a code list.</p><p>Further, this document defines the terms <a name="d3e2219"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a>, <a name="d3e2222"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a>, and <a name="d3e2225"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a>. These are <a name="d3e2228"></a><a href="#definition_conformance_target"><span class="termRef">conformance targets</span></a> of this specification. A <a name="d3e2231"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> is a file, document or other <a name="d3e2235"></a><a href="#definition_resource"><span class="termRef">resource</span></a> that carries one or more code lists. A <a name="d3e2238"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a> is a <a name="d3e2241"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> that uses comma-separated values format defined by <a href="#RFC4180" class="ref">[RFC4180]</a>. A <a name="d3e2246"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> is a <a name="d3e2249"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> that uses syntax defined by <a href="#Genericode" class="ref">[Genericode]</a>.</p></div><div class="section"><div class="heading"><a name="section-rfc-4180"></a><a name="section_2.10"></a>2.10. RFC 4180: Comma-separated values (CSV) files</div><p>This document uses the definition of CSV files as defined by <a href="#RFC4180" class="ref">[RFC4180]</a>. The following terms take their definitions from the ABNF (Augmented Backus-Naur Form) grammar defined by <a target="_blank" href="http://www.ietf.org/rfc/rfc4180.txt">Section 2, <em>Definition of the CSV Format</em></a> of that specification.</p><ul><li>A <a name="definition_CSV_file"></a><dfn>CSV file</dfn> is a <a name="d3e2281"></a><a href="#definition_resource"><span class="termRef">resource</span></a> matching rule <q>file</q> of the ABNF grammar.</li><li>A <a name="definition_CSV_header"></a><dfn>CSV header</dfn> is the portion of a <a name="d3e2296"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> matching rule <q>header</q> of the ABNF grammar, and which provides names of columns within the CSV file.</li><li>A <a name="definition_CSV_column_name"></a><dfn>CSV column name</dfn> is the portion of a <a name="d3e2311"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> matching rule <q>name</q> of the ABNF grammar.</li><li>A <a name="definition_CSV_record"></a><dfn>CSV record</dfn> is the portion of a <a name="d3e2326"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> matching rule <q>record</q> of the ABNF grammar.</li><li>A <a name="definition_CSV_field"></a><dfn>CSV field</dfn> is the portion of a <a name="d3e2341"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> matching rule <q>field</q> of the ABNF grammar.</li></ul></div><div class="section"><div class="heading"><a name="section_2.11"></a>2.11. XML Catalogs</div><p>This document relies on <a href="#XMLCatalogs" class="ref">[XML Catalogs]</a> for the mechanisms for identifying and finding a code list from its <a name="d3e2360"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a>.</p><p>The term <a name="definition_entity_catalog"></a><dfn>entity catalog</dfn> is defined by <a href="#XMLCatalogs" class="ref">[XML Catalogs]</a>, which states in <a href="#XMLCatalogs" class="ref">[XML Catalogs]</a> <a target="_blank" href="https://www.oasis-open.org/committees/download.php/14809/std-entity-xml-catalogs-1.1.html#s.entity.catalog">Section 3, <em>An Entity Catalog</em></a>:</p><blockquote><p>The catalog is effectively an ordered list of (one or more) catalog entry files. It is up to the application to determine the ordered list of catalog entry files to be used as the logical catalog.</p></blockquote><p>The resources (i.e., files) that are within the same local cache, ZIP file, or other contained location as an entity catalog are the <a name="definition_local_context"></a><dfn>local context</dfn> of the entity catalog.</p><p>The term <a name="definition_catalog_entry_file"></a><dfn>catalog entry file</dfn> is defined by <a href="#XMLCatalogs" class="ref">[XML Catalogs]</a> <a target="_blank" href="https://www.oasis-open.org/committees/download.php/14809/std-entity-xml-catalogs-1.1.html#s.terminology">Section 2, <em>Terminology</em></a>, which states:</p><blockquote><p>A catalog may be physically contained in one or more catalog entry files. A catalog entry file is a document that contains a set of catalog entries.</p></blockquote><p>The term <a name="definition_resolve"></a><dfn>resolve</dfn> refers to the process of resolving URI references, as described by <a href="#XMLCatalogs" class="ref">[XML Catalogs]</a> <a target="_blank" href="https://www.oasis-open.org/committees/download.php/14809/std-entity-xml-catalogs-1.1.html#s.uri.resx">Section 7.2.2, <em>Resolution of URI references</em></a>, which defines the process for resolving a URI reference to a URI for a corresponding resource, as identified by an entity catalog.</p><div class="box"><div class="normativeHead"><a name="definition_locally-resolved_resource"></a>[Definition: <dfn>locally-resolved resource</dfn>]</div><div class="sub"><p>A <strong>locally-resolved resource</strong> for a <a name="d3e2431"></a><a href="#definition_URI"><span class="termRef">URI</span></a> relative to an entity catalog is the <a name="d3e2434"></a><a href="#definition_resource"><span class="termRef">resource</span></a> yielded through the process of <a name="d3e2437"></a><a href="#definition_resolve"><span class="termRef">resolving</span></a> the URI into a resource URI using the entity catalog, and then producing the corresponding resource from the <a name="d3e2440"></a><a href="#definition_local_context"><span class="termRef">local context</span></a> of the entity catalog.</p></div></div></div></div><div class="section"><div class="heading"><a name="section_3"></a>3. Conformance targets</div><p>This document defines multiple <a name="d3e2454"></a><a href="#definition_conformance_target"><span class="termRef">conformance targets</span></a>. Each conformance target is defined normatively by this specification. Each conformance target has an associated abbreviation, which is used to identify to which conformance targets a rule applies.</p><div class="table"><div class="caption"><a name="table_3-1"></a>Table 3-1: Codes representing conformance targets</div><table><thead><tr><th>Code</th><th>Conformance target</th></tr></thead><tbody><tr><td><a name="conformance_target_CLD"></a>CLD</td><td><a name="d3e2479"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a></td></tr><tr><td><a name="conformance_target_GC-CLD"></a>GC-CLD</td><td><a name="d3e2490"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a></td></tr><tr><td><a name="conformance_target_CSV-CLD"></a>CSV-CLD</td><td><a name="d3e2501"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a></td></tr><tr><td><a name="conformance_target_XSD"></a>XSD</td><td><a name="d3e2513"></a><a href="#definition_code_list-enabled_schema_document"><span class="termRef">code list-enabled schema document</span></a></td></tr><tr><td><a name="conformance_target_INS"></a>INS</td><td><a name="d3e2524"></a><a href="#definition_code_list-enabled_instance_document"><span class="termRef">code list-enabled instance document</span></a></td></tr><tr><td><a name="conformance_target_VSET"></a>VSET</td><td><a name="d3e2535"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a></td></tr></tbody></table></div><div class="section"><div class="heading"><a name="section_3.1"></a>3.1. Code list document</div><div class="box"><div class="normativeHead"><a name="definition_code_list_document"></a>[Definition: <dfn>code list document</dfn>]</div><div class="sub"><p>A <strong>code list document</strong> is a file or <a name="d3e2552"></a><a href="#definition_resource"><span class="termRef">resource</span></a> that contains one or more <a name="d3e2555"></a><a href="#definition_code_list"><span class="termRef">code lists</span></a>. It is a <a name="d3e2558"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. A code list document MUST conform to all rules of this specification that apply to this conformance target. An <a name="d3e2561"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> with an <a name="d3e2565"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#CodeListDocument</code> MUST be a code list document.</p></div></div><p>The specification for an implementation of a code list document by a class of <a name="d3e2575"></a><a href="#definition_resource"><span class="termRef">resource</span></a> (such as with Genericode or CSV) needs to specify the following characteristics:</p><ol><li>Candidate <a name="d3e2585"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifiers</span></a>. Some code list documents specify what URIs may be used to reference the code list. Some <a name="d3e2588"></a><a href="#definition_resource"><span class="termRef">resources</span></a> may feature multiple code lists within a single resource, and the specification must describe how a specific code list is identified within the resource.</li><li>The mapping between features of the resource and <a name="d3e2597"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entries</span></a>.</li><li>The mapping between features of the resource and <a name="d3e2606"></a><a href="#definition_code_value"><span class="termRef">code values</span></a>.</li><li>The mapping between features of the resource and <a name="d3e2615"></a><a href="#definition_column_name"><span class="termRef">column names</span></a>.</li><li>The method of identifying a column as being a well-known column (described in <a href="#section_7">Section 7, <em>Well-known columns and references</em>, below</a>).</li><li>The method of identifying well-known column reference <q>#code</q> (described in <a href="#section_7">Section 7, <em>Well-known columns and references</em>, below</a>).</li><li>The method of identifying the data type of a code value, which can be a data type defined by an XML Schema, or empty.</li></ol><p>These characteristics are described for Genericode files in <a href="#section_6">Section 6, <em>Genericode code lists</em>, below</a>. They are described for CSV files in <a href="#section_5">Section 5, <em>Comma-separated values (CSV) code lists</em>, below</a>.</p></div><div class="section"><div class="heading"><a name="section_3.2"></a>3.2. Genericode code list document</div><div class="box"><div class="normativeHead"><a name="definition_Genericode_code_list_document"></a>[Definition: <dfn>Genericode code list document</dfn>]</div><div class="sub"><p>A <strong>Genericode code list document</strong> is a <a name="d3e2667"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a>. It is a <a name="d3e2670"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. A Genericode code list document MUST conform to all rules of this specification that apply to this conformance target. The <a name="d3e2673"></a><a href="#definition_conformance_target_identifier"><span class="termRef">conformance target identifier</span></a> for this conformance target is <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#GenericodeCodeListDocument</code>.</p></div></div><p><a href="#section_6">Section 6, <em>Genericode code lists</em>, below,</a> provides rules for Genericode code list documents.</p></div><div class="section"><div class="heading"><a name="section_3.3"></a>3.3. CSV code list document</div><div class="box"><div class="normativeHead"><a name="definition_CSV_code_list_document"></a>[Definition: <dfn>CSV code list document</dfn>]</div><div class="sub"><p>A <strong>CSV code list document</strong> is a <a name="d3e2699"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a>. It is a <a name="d3e2702"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. A CSV code list document MUST conform to all rules of this specification that apply to this conformance target. The <a name="d3e2705"></a><a href="#definition_conformance_target_identifier"><span class="termRef">conformance target identifier</span></a> for this conformance target is <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#CSVCodeListDocument</code>.</p></div></div></div><div class="section"><div class="heading"><a name="section_3.4"></a>3.4. Code list-enabled schema document</div><div class="box"><div class="normativeHead"><a name="definition_code_list-enabled_schema_document"></a>[Definition: <dfn>code list-enabled schema document</dfn>]</div><div class="sub"><p>A <strong>code list-enabled schema document</strong> is an XML Schema document that supports the use of <a name="d3e2726"></a><a href="#definition_code_list_document"><span class="termRef">code list documents</span></a> for validation and meaning. It is a <a name="d3e2729"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. A code list-enabled schema document MUST conform to all rules of this specification that apply to this conformance target. The conformance target identifier for this conformance target is <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#SchemaDocument</code>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_3-1"></a>Rule 3-1. Code list-enabled schema document has conformance target</div><div class="box"><div class="normativeHead">[Rule 3-1] (<a href="#conformance_target_XSD">XSD</a>) (Constraint)</div><p>A <a name="d3e2746"></a><a href="#definition_code_list-enabled_schema_document"><span class="termRef">code list-enabled schema document</span></a> MUST have an <a name="d3e2749"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#SchemaDocument</code> </p></div></div><div class="rule-section"><div class="heading"><a name="rule_3-2"></a>Rule 3-2. Document with conformance target is a code list-enabled schema document</div><div class="box"><div class="normativeHead">[Rule 3-2] (<a href="#conformance_target_VSET">VSET</a>) (Constraint)</div><p>A <a name="d3e2767"></a><a href="#definition_resource"><span class="termRef">resource</span></a> with an <a name="d3e2770"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#SchemaDocument</code> MUST be a <a name="d3e2776"></a><a href="#definition_code_list-enabled_schema_document"><span class="termRef">code list-enabled schema document</span></a>.</p></div></div></div><div class="section"><div class="heading"><a name="section_3.5"></a>3.5. Code list-enabled instance document</div><div class="box"><div class="normativeHead"><a name="definition_code_list-enabled_instance_document"></a>[Definition: <dfn>code list-enabled instance document</dfn>]</div><div class="sub"><p>A <strong>code list-enabled instance document</strong> is an XML document that leverages this specification to connect data values with code lists. A code list-enabled instance document MUST conform to all rules of this specification that apply to this conformance target. An <a name="d3e2795"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> with an <a name="d3e2798"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#InstanceDocument</code> MUST be a <a name="d3e2804"></a><a href="#definition_code_list-enabled_instance_document"><span class="termRef">code list-enabled instance document</span></a>.</p></div></div><p>Although this specification defines a conformance target identifier for a code list-enabled instance document, it does not require the conformance target identifier to appear within an instance document.</p></div><div class="section"><div class="heading"><a name="section_3.6"></a>3.6. Code list validation set</div><p>A code list validation set is an abstract concept that brings together the necessary components to define validity of XML documents with respect to code lists, and to identify correspondences between XML data and code list distinct entries. There may be multiple code list validation sets in use at any point of a validation or analysis process; it is a concept meant to facilitate working with code lists.</p><div class="box"><div class="normativeHead"><a name="definition_code_list_validation_set"></a>[Definition: <dfn>code list validation set</dfn>]</div><div class="sub"><p>A <strong>code list validation set</strong> is an abstraction that contains one or more of:</p><ul><li>The instance, a <a name="d3e2834"></a><a href="#definition_code_list-enabled_instance_document"><span class="termRef">code list-enabled instance document</span></a></li><li>The catalog, an <a name="d3e2840"></a><a href="#definition_entity_catalog"><span class="termRef">entity catalog</span></a>, with its <a name="d3e2843"></a><a href="#definition_local_context"><span class="termRef">local context</span></a></li><li>The schema, an <a name="d3e2849"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a>, and</li><li>A <a name="d3e2856"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a></li></ul></div></div></div></div><div class="section"><div class="heading"><a name="section_4"></a>4. Binding XML content to code lists</div><p>XML content in a message may be identified as corresponding to content of a code list. This correspondence is referred to as a <a name="d3e2870"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a>, connecting the XML content to the code list. This specification provides methods for binding XML content to code lists in two ways:</p><ul><li>At run time: An XML document may use identifiers within a message to identify correspondence of content to code lists. This is introduced in <a href="#section_1.5">Section 1.5, <em>Identifying a code list at run time</em>, above</a>, and details are provided in <a href="#section_4.4">Section 4.4, <em>Run-time binding</em>, below</a>.</li><li>At schema time: An XML Schema document may use application information annotations that identify code lists corresponding to the content of schema components. This is introduced in <a href="#section_1.6">Section 1.6, <em>Identifying a code list at schema time</em>, above</a>, and details are provided in <a href="#section_4.4">Section 4.4, <em>Run-time binding</em>, below</a>.</li></ul><div class="section"><div class="heading"><a name="section_4.1"></a>4.1. Multiple bindings</div><p>Code list bindings should be seen as additional semantics and validation for parts of a message. A particular piece of XML content may be bound to multiple code lists at the same time.</p><p>For example, a message may contain elements for <q>vehicle make</q> and <q>vehicle model</q>. These values may have multiple bindings, including:</p><ul><li>The <q>vehicle make</q> element may be bound to a code list containing vehicle manufacturers.</li><li>The <q>vehicle model</q> element may be bound to a code list containing vehicle models.</li><li>The pair, together, of <q>vehicle make</q> and <q>vehicle model</q> may be bound to a code list identifying a complete list of all known valid vehicle make and model combinations.</li><li>The pair, together, may be bound to a code list identifying only valid make and model combinations of vehicles with diesel engines, which were manufactured in the United States. This represents an intentional subset of all known combinations.</li></ul></div><div class="section"><div class="heading"><a name="section_4.2"></a>4.2. Binding by URI</div><p>Content is bound to a code list using a URI as the identifier of the code list. This identifier may be any of the following:</p><ul><li>A canonical URI, as defined by <a href="#Genericode" class="ref">[Genericode]</a>. This identifies the code list in general, and it may be satisfied by the latest version of the code list, or some other version, as determined by the information exchange developer.</li><li>A canonical version URI, as defined by <a href="#Genericode" class="ref">[Genericode]</a>. This identifies a specific version of the code list, as implemented by a particular Genericode document.</li><li>A location URI for a Genericode document. This identifies a particular Genericode document by a resolvable URL.</li><li>Some other URI, identifying some other source of code list semantics. Although this specification is focused on leveraging concrete local code list documents, the mechanisms this specification provides may be used to express a dependence on registry-maintained code lists, or on other network-based semantics. The URI is just an identifier, and may have a well-known semantic within a community. Such semantics should be identified within documentation in an information exchange.</li></ul></div><div class="section"><div class="heading"><a name="section_4.3"></a>4.3. Definition of code list binding</div><p>A code list binding brings together a set of columns from a code list with a corresponding set of data from an XML document. The binding can provide meaning for data in an XML document, and can provide additional validity constraints on an XML document. The code list binding defined here is an abstract concept, bringing together a code list (via a <a name="d3e2981"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a>), <a name="d3e2984"></a><a href="#definition_column_name"><span class="termRef">column names</span></a>, and data values (such as from an information exchange package or other XML document). This abstract definition is leveraged in <a href="#section_4.4">Section 4.4, <em>Run-time binding</em>, below,</a> and <a href="#section_4.5">Section 4.5, <em>Schema-time binding</em>, below</a>.</p><p>A code list binding may be applied to a single value or to multiple values. The abstract definition of <a name="d3e2994"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> is applied to the concrete mechanisms for binding data values to code lists, through run-time binding or schema-time binding.</p><div class="box"><div class="normativeHead"><a name="definition_code_list_binding"></a>[Definition: <dfn>code list binding</dfn>]</div><div class="sub"><p>A <strong>code list binding</strong> is an assigned correspondence between a set of data values, such as data within an XML document, and a set of columns within a code list, identified via a <a name="d3e3005"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> and a set of <a name="d3e3008"></a><a href="#definition_column_name"><span class="termRef">column names</span></a>.</p><p>A code list binding has the following properties:</p><ul><li>a <a name="d3e3020"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a></li><li><p>a set of column/value pairs, each having:</p><ul><li>a column reference: either a <a name="d3e3032"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> or a well-known column reference, and</li><li>a data value</li></ul></li><li>A boolean value, <var>constraining</var>.</li></ul></div></div></div><div class="section"><div class="heading"><a name="section-binding-run-time"></a><a name="section_4.4"></a>4.4. Run-time binding</div><p>This document provides an XML Schema document for run-time binding of XML content to code lists. This schema is provided in <a href="#appendix_B">Appendix B, <em>XML Schema document for the code lists instance namespace</em>, below</a>.</p><div class="section"><div class="heading"><a name="section_4.4.1"></a>4.4.1. Syntax for run-time code list binding</div><div class="rule-section"><div class="heading"><a name="rule_4-1"></a>Rule 4-1. Content in the <q>cli</q> namespace conforms to schema</div><div class="box"><div class="normativeHead">[Rule 4-1] (<a href="#conformance_target_INS">INS</a>) (Constraint)</div><p>Any XML content in the namespace <code>http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/</code> MUST be <a name="d3e3082"></a><a href="#definition_schema-valid"><span class="termRef">schema-valid</span></a> to the XML Schema definitions contained in the schema document in <a href="#appendix_B">Appendix B, <em>XML Schema document for the code lists instance namespace</em>, below</a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_4-2"></a>Rule 4-2. Code list URI is an absolute URI</div><div class="box"><div class="normativeHead">[Rule 4-2] (<a href="#conformance_target_INS">INS</a>) (Constraint)</div><p>The <a name="d3e3099"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of an <a name="d3e3102"></a><a href="#definition_attribute"><span class="termRef">attribute</span></a> <code>cli:codeListURI</code> MUST be an <a name="d3e3108"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_4-3"></a>Rule 4-3. Column identifier accompanied by code list identifier</div><div class="box"><div class="normativeHead">[Rule 4-3] (<a href="#conformance_target_INS">INS</a>) (Constraint)</div><p>An <a name="d3e3123"></a><a href="#definition_element"><span class="termRef">element</span></a> having an attribute <code>cli:codeListColumnName</code> MUST have an attribute <code>cli:codeListURI</code>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_4-4"></a>Rule 4-4. Constraining indicator accompanied by code list identifier</div><div class="box"><div class="normativeHead">[Rule 4-4] (<a href="#conformance_target_INS">INS</a>) (Constraint)</div><p>An <a name="d3e3144"></a><a href="#definition_element"><span class="termRef">element</span></a> having an attribute <code>cli:codeListConstrainingIndicator</code> MUST have an attribute <code>cli:codeListURI</code>.</p></div></div></div><div class="section"><div class="heading"><a name="section_4.4.2"></a>4.4.2. Run-time effective code list binding</div><div class="rule-section"><div class="heading"><a name="rule_4-5"></a>Rule 4-5. Effective run-time binding.</div><div class="box"><div class="normativeHead">[Rule 4-5] (<a href="#conformance_target_INS">INS</a>) (Interpretation)</div><p>An element <var>$element</var> with an attribute <var>$attribute</var> <code>cli:codeListURI</code> denotes a code list binding of:</p><ul><li>a <a name="d3e3187"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> of the <a name="d3e3190"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of the attribute <code>cli:codeListURI</code></li><li><p>a single column/value pair, having:</p><ul><li>a column reference of: if <var>$element</var> has attribute <code>cli:codeListColumnName</code>, then the <a name="d3e3214"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of that attribute, else <q>#code</q>.</li><li>a data value that is the <a name="d3e3226"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of <var>$element</var>.</li></ul></li><li>A value for <var>constraining</var> that is: if <var>$element</var> has attribute <code>cli:codeListConstrainingIndicator</code>, then its value, otherwise <code>true</code>.</li></ul></div></div></div></div><div class="section"><div class="heading"><a name="section-binding-schema-time"></a><a name="section_4.5"></a>4.5. Schema-time binding</div><p>This document provides XML elements for annotating XML Schema document components, to indicate, at schema time, a code list binding between a code list and one or more data values of the code list.</p><div class="section"><div class="heading"><a name="section_4.5.1"></a>4.5.1. Syntax for schema-time code list binding</div><div class="rule-section"><div class="heading"><a name="rule_4-6"></a>Rule 4-6. Content in the <q>clsa</q> namespace conforms to schema</div><div class="box"><div class="normativeHead">[Rule 4-6] (<a href="#conformance_target_XSD">XSD</a>) (Constraint)</div><p>Any XML content in the namespace <code>http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-schema-appinfo/</code> MUST be <a name="d3e3285"></a><a href="#definition_schema-valid"><span class="termRef">schema-valid</span></a> to the XML Schema definitions contained in the schema document in <a href="#appendix_C">Appendix C, <em>XML Schema document for the code list schema appinfo namespace</em>, below</a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_4-7"></a>Rule 4-7. Elements are <code>xs:appinfo</code> annotations</div><div class="box"><div class="normativeHead">[Rule 4-7] (<a href="#conformance_target_XSD">XSD</a>) (Constraint)</div><p>An element <code>clsa:SimpleCodeListBinding</code> or <code>clsa:ComplexCodeListBinding</code> MUST have <strong>[parent]</strong> element <code>xs:appinfo</code>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_4-8"></a>Rule 4-8. Code list URI is absolute URI</div><div class="box"><div class="normativeHead">[Rule 4-8] (<a href="#conformance_target_XSD">XSD</a>) (Constraint)</div><p>An attribute <code>codeListURI</code> that has <strong>[owner element]</strong> of <code>clsa:SimpleCodeListBinding</code> or <code>clsa:ComplexCodeListBinding</code> MUST have a <a name="d3e3341"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> that is an <a name="d3e3345"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_4-9"></a>Rule 4-9. Simple code list binding to schema components</div><div class="box"><div class="normativeHead">[Rule 4-9] (<a href="#conformance_target_XSD">XSD</a>) (Constraint)</div><p>Element <code>clsa:SimpleCodeListBinding</code> MUST be <a name="d3e3363"></a><a href="#definition_application_information"><span class="termRef">application information</span></a> on one of:</p><ul><li>element <code>xs:attribute</code> that defines a global <a name="d3e3375"></a><a href="#definition_attribute_declaration"><span class="termRef">attribute declaration</span></a></li><li>element <code>xs:element</code> that defines a global <a name="d3e3384"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a></li><li>element <code>xs:simpleType</code> that defines a global <a name="d3e3393"></a><a href="#definition_simple_type_definition"><span class="termRef">simple type definition</span></a></li><li>element <code>xs:complexType</code> that defines a global <a name="d3e3402"></a><a href="#definition_complex_type_definition"><span class="termRef">complex type definition</span></a></li></ul></div></div><div class="rule-section"><div class="heading"><a name="rule_4-10"></a>Rule 4-10. Complex code list binding to schema components</div><div class="box"><div class="normativeHead">[Rule 4-10] (<a href="#conformance_target_XSD">XSD</a>) (Constraint)</div><p>Element <code>clsa:ComplexCodeListBinding</code> MUST be <a name="d3e3421"></a><a href="#definition_application_information"><span class="termRef">application information</span></a> on one of:</p><ul><li>element <code>xs:element</code> that defines a global <a name="d3e3433"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a></li><li>element <code>xs:complexType</code> that defines a global <a name="d3e3442"></a><a href="#definition_complex_type_definition"><span class="termRef">complex type definition</span></a></li></ul></div></div></div><div class="section"><div class="heading"><a name="section_4.5.2"></a>4.5.2. Simple binding of schema components</div><div class="rule-section"><div class="heading"><a name="rule_4-11"></a>Rule 4-11. Attribute declaration effective simple binding</div><div class="box"><div class="normativeHead">[Rule 4-11] (<a href="#conformance_target_VSET">VSET</a>) (Interpretation)</div><p>An element <code>xs:attribute</code> defining an <a name="d3e3466"></a><a href="#definition_attribute_declaration"><span class="termRef">attribute declaration</span></a> <var>$attribute-declaration</var> with <a name="d3e3472"></a><a href="#definition_application_information"><span class="termRef">application information</span></a> of an element <var>$binding-element</var> <code>clsa:SimpleCodeListBinding</code> entails:</p><ul><li><p>Each <a name="d3e3489"></a><a href="#definition_attribute"><span class="termRef">attribute</span></a> <var>$attribute</var> in the instance of the <a name="d3e3495"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> with <strong>[attribute declaration]</strong> equal to <var>$attribute-declaration</var> entails a <a name="d3e3505"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> with:</p><ul><li>A <a name="d3e3515"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> that is the <a name="d3e3518"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of the attribute <code>codeListURI</code> of <var>$binding-element</var>.</li><li><p>A column/value pair with:</p><ul><li>A column reference of: if <var>$binding-element</var> has attribute <code>columnName</code>, then the <a name="d3e3545"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of that attribute, else <q>#code</q>.</li><li>A data value that is the <a name="d3e3556"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of <var>$attribute</var></li></ul></li><li>A value for <var>constraining</var> that is: if <var>$binding-element</var> has attribute <code>constrainingIndicator</code>, then its value, otherwise <code>true</code>.</li></ul></li></ul></div></div><div class="rule-section"><div class="heading"><a name="rule_4-12"></a>Rule 4-12. Element declaration effective simple binding</div><div class="box"><div class="normativeHead">[Rule 4-12] (<a href="#conformance_target_VSET">VSET</a>) (Interpretation)</div><p>An element <code>xs:element</code> defining an <a name="d3e3597"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> <var>$element-declaration</var> with <a name="d3e3603"></a><a href="#definition_application_information"><span class="termRef">application information</span></a> of an element <var>$binding-element</var> <code>clsa:SimpleCodeListBinding</code> entails:</p><ul><li><p>Each <a name="d3e3620"></a><a href="#definition_element"><span class="termRef">element</span></a> <var>$element</var> in the instance of the <a name="d3e3626"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> with <strong>[element declaration]</strong> that is in the <a name="d3e3632"></a><a href="#definition_substitution_group"><span class="termRef">substitution group</span></a> of <var>$element-declaration</var> entails a <a name="d3e3639"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> with:</p><ul><li>A <a name="d3e3649"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> that is the <a name="d3e3652"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of the attribute <code>codeListURI</code> of <var>$binding-element</var>.</li><li><p>A column/value pair with:</p><ul><li>A column reference of: if <var>$binding-element</var> has attribute <code>columnName</code>, then the <a name="d3e3679"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of that attribute, else <q>#code</q>.</li><li>A data value that is the <a name="d3e3690"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of <var>$element</var></li></ul></li><li>A value for <var>constraining</var> that is: if <var>$binding-element</var> has attribute <code>constrainingIndicator</code>, then its value, otherwise <code>true</code>.</li></ul></li></ul></div></div><div class="rule-section"><div class="heading"><a name="rule_4-13"></a>Rule 4-13. Type definition effective simple binding</div><div class="box"><div class="normativeHead">[Rule 4-13] (<a href="#conformance_target_VSET">VSET</a>) (Interpretation)</div><p>An element <code>xs:simpleType</code> or <code>xs:complexType</code> defining a <a name="d3e3734"></a><a href="#definition_type_definition"><span class="termRef">type definition</span></a> <var>$type-definition</var> with <a name="d3e3740"></a><a href="#definition_application_information"><span class="termRef">application information</span></a> of an element <var>$binding-element</var> <code>clsa:SimpleCodeListBinding</code> entails:</p><ul><li><p>Each <a name="d3e3757"></a><a href="#definition_attribute"><span class="termRef">attribute</span></a> <var>$attribute</var> in the instance of the <a name="d3e3763"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> with <strong>[attribute declaration]</strong> with {type definition} <a name="d3e3769"></a><a href="#definition_derived"><span class="termRef">derived</span></a> from <var>$type-definition</var> entails a <a name="d3e3776"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> with:</p><ul><li>A <a name="d3e3786"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> that is the <a name="d3e3789"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of the attribute <code>codeListURI</code> of <var>$binding-element</var>.</li><li><p>A column/value pair with:</p><ul><li>A column reference of: if <var>$binding-element</var> has attribute <code>columnName</code>, then the <a name="d3e3816"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of that attribute, else <q>#code</q>.</li><li>A data value that is the <a name="d3e3827"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of <var>$attribute</var></li></ul></li><li>A value for <var>constraining</var> that is: if <var>$binding-element</var> has attribute <code>constrainingIndicator</code>, then its value, otherwise <code>true</code>.</li></ul></li><li><p>Each <a name="d3e3857"></a><a href="#definition_element"><span class="termRef">element</span></a> <var>$element</var> in the instance of the <a name="d3e3863"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> with <strong>[type definition]</strong> <a name="d3e3869"></a><a href="#definition_derived"><span class="termRef">derived</span></a> from <var>$type-definition</var> entails a <a name="d3e3876"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> with:</p><ul><li>A <a name="d3e3886"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> that is the <a name="d3e3889"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of the attribute <code>codeListURI</code> of <var>$binding-element</var>.</li><li><p>A column/value pair with:</p><ul><li>A column reference of: if <var>$binding-element</var> has attribute <code>columnName</code>, then the <a name="d3e3916"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of that attribute, else <q>#code</q>.</li><li>A data value that is the <a name="d3e3927"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of <var>$element</var></li></ul></li><li>A value for <var>constraining</var> that is: if <var>$binding-element</var> has attribute <code>constrainingIndicator</code>, then its value, otherwise <code>true</code>.</li></ul></li></ul></div></div></div><div class="section"><div class="heading"><a name="section_4.5.3"></a>4.5.3. Complex binding of schema components</div><div class="rule-section"><div class="heading"><a name="rule_4-14"></a>Rule 4-14. Element declaration effective complex binding</div><div class="box"><div class="normativeHead">[Rule 4-14] (<a href="#conformance_target_VSET">VSET</a>) (Interpretation)</div><p>An element <code>xs:element</code> defining an <a name="d3e3974"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> <var>$element-declaration</var> with <a name="d3e3980"></a><a href="#definition_application_information"><span class="termRef">application information</span></a> of an element <var>$binding-element</var> <code>clsa:ComplexCodeListBinding</code> entails:</p><ul><li><p>Each <a name="d3e3997"></a><a href="#definition_element"><span class="termRef">element</span></a> <var>$element</var> in the instance of the <a name="d3e4003"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> with <strong>[element declaration]</strong> that is in the <a name="d3e4009"></a><a href="#definition_substitution_group"><span class="termRef">substitution group</span></a> of <var>$element-declaration</var> entails a <a name="d3e4016"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> with:</p><ul><li>A <a name="d3e4026"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> that is the <a name="d3e4029"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of the attribute <code>codeListURI</code> of <var>$binding-element</var>.</li><li><p>A set of column/value pairs, containing: For each <code>clsa:ElementCodeListBinding</code> child <var>$element-binding</var> of <var>$binding-element</var>:</p><ul><li><p>A column/value pair with:</p><ul><li>A column reference of: if <var>$element-binding</var> has attribute <code>columnName</code>, then the <a name="d3e4071"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of that attribute, else <q>#code</q>.</li><li>A data value that is: if it exists, the first element child of <var>$element</var> that is in the <a name="d3e4086"></a><a href="#definition_substitution_group"><span class="termRef">substitution group</span></a> of an <a name="d3e4089"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> with a name that is equal to the value of attribute <code>elementName</code> of <var>$element-binding</var>, otherwise empty.</li></ul></li></ul></li><li>A value for <var>constraining</var> that is: if <var>$binding-element</var> has attribute <code>constrainingIndicator</code>, then its value, otherwise <code>true</code>.</li></ul></li></ul></div></div><div class="rule-section"><div class="heading"><a name="rule_4-15"></a>Rule 4-15. Complex type definition effective complex binding</div><div class="box"><div class="normativeHead">[Rule 4-15] (<a href="#conformance_target_VSET">VSET</a>) (Interpretation)</div><p>An element <code>xs:complexType</code> defining a <a name="d3e4137"></a><a href="#definition_complex_type_definition"><span class="termRef">complex type definition</span></a> <var>$type-definition</var> with <a name="d3e4143"></a><a href="#definition_application_information"><span class="termRef">application information</span></a> of an element <var>$binding-element</var> <code>clsa:ComplexCodeListBinding</code> entails:</p><ul><li><p>Each <a name="d3e4160"></a><a href="#definition_element"><span class="termRef">element</span></a> <var>$element</var> in the instance of the <a name="d3e4166"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> with <strong>[type definition]</strong> <a name="d3e4172"></a><a href="#definition_derived"><span class="termRef">derived</span></a> from <var>$type-definition</var> entails a <a name="d3e4179"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> with:</p><ul><li>A <a name="d3e4189"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> that is the <a name="d3e4192"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of the attribute <code>codeListURI</code> of <var>$binding-element</var>.</li><li><p>A list of column/value pairs, containing: For each <code>clsa:ElementCodeListBinding</code> child <var>$element-binding</var> of <var>$binding-element</var>:</p><ul><li><p>A column/value pair with:</p><ul><li>A column reference of: if <var>$element-binding</var> has attribute <code>columnName</code>, then the <a name="d3e4234"></a><a href="#definition_normalized_value"><span class="termRef">normalized value</span></a> of that attribute, else <q>#code</q>.</li><li>A data value that is: if it exists, the first element child of <var>$element</var> that is in the <a name="d3e4249"></a><a href="#definition_substitution_group"><span class="termRef">substitution group</span></a> of an <a name="d3e4252"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> with a name that is equal to the value of attribute <code>elementName</code> of <var>$element-binding</var>, otherwise empty.</li></ul></li></ul></li><li>A value for <var>constraining</var> that is: if <var>$binding-element</var> has attribute <code>constrainingIndicator</code>, then its value, otherwise <code>true</code>.</li></ul></li></ul></div></div></div></div><div class="section"><div class="heading"><a name="section_4.6"></a>4.6. Matches for code list bindings</div><p>A <a name="d3e4297"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> defined against a code list document may be matched to zero or more <a name="d3e4300"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entries</span></a> within the code list. The process of finding matches for a code list binding <var>$binding</var> against a <a name="d3e4306"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> is defined by the following rule.</p><div class="rule-section"><div class="heading"><a name="rule-matches-for-code-list-binding"></a><a name="rule_4-16"></a>Rule 4-16. Matches and validity for a code list binding</div><div class="box"><div class="normativeHead">[Rule 4-16] (<a href="#conformance_target_VSET">VSET</a>) (Interpretation)</div><p>A <a name="d3e4319"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> matching against against a <a name="d3e4322"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> yields a set of <a name="d3e4325"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entries</span></a> and a validity value (<em>valid</em> or <em>invalid</em>).</p><p>The matches for a <a name="d3e4337"></a><a href="#definition_code_list_binding"><span class="termRef">code list binding</span></a> <var>$binding</var> against a <a name="d3e4343"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a> MUST be:</p><ul><li>The <a name="d3e4353"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> <var>$identifier</var> is provided by the <var>$binding</var>.</li><li>Using the <a name="d3e4368"></a><a href="#definition_entity_catalog"><span class="termRef">entity catalog</span></a> defined for the <a name="d3e4371"></a><a href="#definition_code_list_validation_set"><span class="termRef">code list validation set</span></a>, <a name="d3e4374"></a><a href="#definition_resolve"><span class="termRef">resolve</span></a> <a name="d3e4377"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> <var>$identifier</var> to a <a name="d3e4384"></a><a href="#definition_locally-resolved_resource"><span class="termRef">locally-resolved resource</span></a> <var>$resource</var>.</li><li>If <var>$resource</var> is not a <a name="d3e4399"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a>, or if no resource is identified for <var>$identifier</var>, then this specification does not define any matches for <var>$binding</var>. The binding is evaluated to be <em>invalid</em>. In this case, the code list identified by <var>$identifier</var> SHOULD be handled by means other than this specification.</li><li><p>If <var>$resource</var> is a <a name="d3e4424"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a>, then the set of matches for <var>$binding</var> is the list of distinct entries in the code list for which every column referenced by <var>$binding</var> has the corresponding value.</p><ul><li>A column/value pair in <var>$binding</var> with a column reference of <q>#code</q> matches as specified for the appropriate class of <a name="d3e4446"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> for that <a name="d3e4449"></a><a href="#definition_column_name"><span class="termRef">column name</span></a>.</li><li><p>A column/value pair in <var>$binding</var> with a column reference of <q>#range</q> matches:</p><ul><li>If <var>$resource</var> does not contain a column corresponding to the well-known columns <q>minimum-inclusive</q>, <q>minimum-exclusive</q>, <q>maximum-inclusive</q>, or <q>maximum-exclusive</q>, then the binding has no matches.</li><li><p>Otherwise, yield all distinct entries for which all of the following are true, given that the value of the column/value pair is <var>$value</var>:</p><ul><li>Either there is no <a name="d3e4502"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> for column <q>minimum-inclusive</q>, or the <a name="d3e4508"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> of that column is less than or equal to <var>$value</var>.</li><li>Either there is no <a name="d3e4520"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> for column <q>minimum-exclusive</q>, or the <a name="d3e4526"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> of that column is less than <var>$value</var>.</li><li>Either there is no <a name="d3e4538"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> for column <q>maximum-inclusive</q>, or the <a name="d3e4544"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> of that column is greater than or equal to <var>$value</var>.</li><li>Either there is no <a name="d3e4556"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> for column <q>maximum-exclusive</q>, or the <a name="d3e4562"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> of that column is greater than <var>$value</var>.</li></ul></li></ul></li></ul></li><li><p>If the binding has no matches, then:</p><ul><li>If the binding is constraining, then it is invalid.</li><li>If the binding is not constraining, then it is valid.</li></ul></li><li>If the binding has one or more matches, then it is valid.</li></ul></div></div><p>The above rule specifies that code list identifiers are to be resolved to <a name="d3e4602"></a><a href="#definition_locally-resolved_resource"><span class="termRef">locally-resolved resources</span></a>, which are in the <a name="d3e4605"></a><a href="#definition_local_context"><span class="termRef">local context</span></a> of the entity catalog. This specification <strong>does not</strong> specify that code list identifiers should be resolved by network fetches of code list resources. Code list identifiers are meant to be treated as identifiers, as names, and not as network locations of resources.</p><p>A code list binding that is used to connect a value to a service or other code list methodology that does not use <a name="d3e4614"></a><a href="#definition_code_list_document"><span class="termRef">code list documents</span></a> will result in invalid matches. This is as designed; matches for services or other methodologies should be determined by a method other than this rule.</p><div class="rule-section"><div class="heading"><a name="rule_4-17"></a>Rule 4-17. Value comparisons based on types</div><p><a href="#rule_4-16">Rule 4-16, <em>Matches and validity for a code list binding</em> (VSET), above,</a> requires values from an XML document to be compared to values from code lists. Whether values match, and how they compare, is dependent on what kind of data those values are. For example, text values and string values are compared using different methods. This rule establishes that typing of comparisons is based on the types of the values.</p><p><a href="#XPathFunctions" class="ref">[XPathFunctions]</a> <a target="_blank" href="https://www.w3.org/TR/xpath-functions/#casting">Section 17, <em>Casting</em></a> provides a set of rules for type casting among XML Schema primitive types.</p><div class="box"><div class="normativeHead">[Rule 4-17] (<a href="#conformance_target_VSET">VSET</a>) (Interpretation)</div><p>Comparisons between a value <var>$instance-value</var> of a column/value pair and a code value <var>$code-value</var> MUST be conducted as follows:</p><ol><li><var>$instance-value</var> has a data type, <var>$instance-data-type</var>, provided by its XML Schema definition.</li><li><var>$code-value</var> has a data type, <var>$code-data-type</var>, as provided by its code list document as specified for its class of code list document. That data type is either a data type defined by the XML Schema definition language, or is empty.</li><li><p>A data type, <var>$comparison-data-type</var>, is calculated as:</p><ul><li>If <var>$code-data-type</var> is empty, then <var>$instance-date-type</var>.</li><li>If it exists, the lowest common ancestor of the two data types.</li><li>Otherwise, <code>xs:string</code>.</li></ul></li><li><var>$instance-value</var> and <var>$code-value</var> are cast to <var>$comparison-data-type</var>, in accordance with <a href="#XPathFunctions" class="ref">[XPathFunctions]</a> <a target="_blank" href="https://www.w3.org/TR/xpath-functions/#casting">Section 17, <em>Casting</em></a>.</li><li>Equality comparisons are conducted as appropriate for <var>$comparison-data-type</var>.</li><li>Inequality comparisons (e.g., less than, greater than) for ranges are conducted as appropriate for lowest atomic base type of <var>$comparison-data-type</var>.</li></ol></div></div><div class="rule-section"><div class="heading"><a name="rule_4-18"></a>Rule 4-18. Code list identified by candidate code list identifiers</div><p>Each class of code list document specifies how its instances define code list identifiers that may refer to a code list. This rule ensures that code lists are referred to via the correct code list identifier, when it is defined.</p><div class="box"><div class="normativeHead">[Rule 4-18] (<a href="#conformance_target_VSET">VSET</a>) (Constraint)</div><p>When a <a name="d3e4752"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> defines candidate <a name="d3e4755"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifiers</span></a>, a <a name="d3e4758"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> against which a <a name="d3e4761"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> <a name="d3e4764"></a><a href="#definition_resource"><span class="termRef">resource</span></a> is <a name="d3e4768"></a><a href="#definition_resolve"><span class="termRef">resolved</span></a> MUST be a candidate code list identifier for that code list document.</p></div></div></div></div><div class="section"><div class="heading"><a name="section-csv-code-lists"></a><a name="section_5"></a>5. Comma-separated values (CSV) code lists</div><p>This document provides for the use of a <a name="d3e4783"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> as an implementation of a <a name="d3e4786"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a>. This section lays out the rules for using CSV files as code list documents. The definitions of CSV structural terms are provided by <a href="#RFC4180" class="ref">[RFC4180]</a>, as noted in <a href="#section_2.10">Section 2.10, <em>RFC 4180: Comma-separated values (CSV) files</em>, above</a>.</p><div class="rule-section"><div class="heading"><a name="rule_5-1"></a>Rule 5-1. CSV code list document is a CSV file</div><div class="box"><div class="normativeHead">[Rule 5-1] (<a href="#conformance_target_CSV-CLD">CSV-CLD</a>) (Constraint)</div><p>A <a name="d3e4803"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a> MUST be a <a name="d3e4806"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_5-2"></a>Rule 5-2. CSV code list document has header</div><div class="box"><div class="normativeHead">[Rule 5-2] (<a href="#conformance_target_CSV-CLD">CSV-CLD</a>) (Constraint)</div><p>A <a name="d3e4821"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a> MUST have a <a name="d3e4824"></a><a href="#definition_CSV_header"><span class="termRef">CSV header</span></a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_5-3"></a>Rule 5-3. CSV column name is not empty</div><div class="box"><div class="normativeHead">[Rule 5-3] (<a href="#conformance_target_CSV-CLD">CSV-CLD</a>) (Constraint)</div><p>A <a name="d3e4839"></a><a href="#definition_CSV_column_name"><span class="termRef">CSV column name</span></a> of a <a name="d3e4842"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a> MUST not be empty.</p></div></div><div class="rule-section"><div class="heading"><a name="rule-csv-implementation"></a><a name="rule_5-4"></a>Rule 5-4. CSV file as a code list document</div><div class="box"><div class="normativeHead">[Rule 5-4] (<a href="#conformance_target_CSV-CLD">CSV-CLD</a>) (Interpretation)</div><p>A <a name="d3e4858"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> may act as a <a name="d3e4861"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a> in the following manner:</p><ol><li><a name="d3e4870"></a><a href="#definition_code_list_identifier"><span class="termRef">Code list identifiers</span></a>: The CSV file does not specify its code list identifiers. Each CSV file contains a single <a name="d3e4873"></a><a href="#definition_code_list"><span class="termRef">code list</span></a>. The CSV file MAY be resolved to any <a name="d3e4876"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a>.</li><li><a name="d3e4884"></a><a href="#definition_distinct_entry"><span class="termRef">Distinct entries</span></a>: Each <a name="d3e4887"></a><a href="#definition_CSV_record"><span class="termRef">CSV record</span></a> of the <a name="d3e4890"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> constitutes a distinct entry.</li><li><a name="d3e4898"></a><a href="#definition_code_value"><span class="termRef">Code values</span></a>: Each <a name="d3e4901"></a><a href="#definition_CSV_field"><span class="termRef">CSV field</span></a> corresponds to a code value.</li><li><a name="d3e4909"></a><a href="#definition_column_name"><span class="termRef">Column names</span></a>: The column name of a <a name="d3e4912"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> is the <a name="d3e4915"></a><a href="#definition_CSV_column_name"><span class="termRef">CSV column name</span></a> corresponding by position within the <a name="d3e4918"></a><a href="#definition_CSV_header"><span class="termRef">CSV header</span></a> to the position of the <a name="d3e4921"></a><a href="#definition_CSV_field"><span class="termRef">CSV field</span></a> within its <a name="d3e4924"></a><a href="#definition_CSV_record"><span class="termRef">CSV record</span></a></li><li>A <a name="d3e4932"></a><a href="#definition_column"><span class="termRef">column</span></a> in a <a name="d3e4935"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> is a well-known column when its <a name="d3e4938"></a><a href="#definition_CSV_column_name"><span class="termRef">CSV column name</span></a> is the same as the <a name="d3e4941"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> of a well-known column.</li><li><p>A reference to <a name="d3e4951"></a><a href="#definition_column"><span class="termRef">column</span></a> <q>#code</q> is matched, in order, to:</p><ul><li>a column with <a name="d3e4963"></a><a href="#definition_CSV_column_name"><span class="termRef">CSV column name</span></a> of <q>code</q>, or</li><li>the first <a name="d3e4973"></a><a href="#definition_column"><span class="termRef">column</span></a> of the <a name="d3e4976"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a>.</li></ul></li><li>A <a name="d3e4986"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> in a <a name="d3e4989"></a><a href="#definition_CSV_file"><span class="termRef">CSV file</span></a> has no type; its data type is empty.</li></ol></div></div></div><div class="section"><div class="heading"><a name="section-genericode-code-lists"></a><a name="section_6"></a>6. Genericode code lists</div><p>This document incorporates a Genericode document as an implementation of a <a name="d3e5005"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a>. This section lays out rules for Genericode documents and their use as code list documents.</p><div class="rule-section"><div class="heading"><a name="rule_6-1"></a>Rule 6-1. Genericode code list document defined by Genericode</div><div class="box"><div class="normativeHead">[Rule 6-1] (<a href="#conformance_target_GC-CLD">GC-CLD</a>) (Constraint)</div><p>A <a name="d3e5017"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> MUST be a Genericode code list document as defined by <a href="#Genericode" class="ref">[Genericode]</a> <a target="_blank" href="http://docs.oasis-open.org/codelist/cs-genericode-1.0/doc/oasis-code-list-representation-genericode.html#_Toc190622791">Section 3.2, <em>Genericode Document Types</em></a>, which states:</p><blockquote><p>A Genericode code list document has the root element <code><gc:CodeList></code>. It contains metadata describing the code list as a whole, as well as explicit code list data — codes and associated values.</p></blockquote></div></div><div class="rule-section"><div class="heading"><a name="rule_6-2"></a>Rule 6-2. Document with conformance target is Genericode code list document</div><div class="box"><div class="normativeHead">[Rule 6-2] (<a href="#conformance_target_VSET">VSET</a>) (Constraint)</div><p>A <a name="d3e5050"></a><a href="#definition_resource"><span class="termRef">resource</span></a> with an <a name="d3e5053"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/code-lists/4.0/#GenericodeCodeListDocument</code> MUST be a <a name="d3e5059"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_6-3"></a>Rule 6-3. Genericode code list document is schema-valid</div><div class="box"><div class="normativeHead">[Rule 6-3] (<a href="#conformance_target_GC-CLD">GC-CLD</a>) (Constraint)</div><p>A <a name="d3e5074"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> MUST be <a name="d3e5077"></a><a href="#definition_schema-valid"><span class="termRef">schema-valid</span></a> against the schema document for the Genericode namespace as provided at <a class="url" target="_blank" href="http://docs.oasis-open.org/codelist/ns/genericode/1.0/">http://docs.oasis-open.org/codelist/ns/genericode/1.0/</a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_6-4"></a>Rule 6-4. XML Schema alternate datatypes are treated the same as built in datatypes</div><p><a href="#XMLSchema2" class="ref">[XMLSchema2]</a> defines an alternate namespace name as an alias that may be used to refer to simple datatypes it defines. <a href="#XMLSchema2" class="ref">[XMLSchema2]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#namespaces">Section 3.1, <em>Namespace considerations</em></a> states:</p><blockquote><p>To facilitate usage in specifications other than the XML Schema definition language, such as those that do not want to know anything about aspects of the XML Schema definition language other than the datatypes, each ·built-in· datatype is also defined in the namespace whose URI is:</p><ul><li>http://www.w3.org/2001/XMLSchema-datatypes</li></ul><p>This applies to both ·built-in· ·primitive· and ·built-in· ·derived· datatypes.</p></blockquote><p><a href="#Genericode" class="ref">[Genericode]</a> uses this alternate namespace name as a default for the datatype library in Genericode documents, referring to it as <q>the URI for W3C XML Schema datatypes</q>. As this separate namespace is not expressing a semantic distinction, and in order to keep Genericode documents simple, this document specifies that the alternate namespace name is to be treated as if it was the namespace name for the XML Schema definition language.</p><div class="box"><div class="normativeHead">[Rule 6-4] (<a href="#conformance_target_GC-CLD">GC-CLD</a>) (Interpretation)</div><p>A datatype with a namespace name of <code>http://www.w3.org/2001/XMLSchema-datatypes</code> MUST be evaluated as if it had a namespace name of <code>http://www.w3.org/2001/XMLSchema</code>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule-genericode-implementation"></a><a name="rule_6-5"></a>Rule 6-5. Genericode file as a code list document</div><div class="box"><div class="normativeHead">[Rule 6-5] (<a href="#conformance_target_GC-CLD">GC-CLD</a>) (Interpretation)</div><p>A <a name="d3e5169"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> may act as a <a name="d3e5172"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> in the following manner:</p><ol><li><a name="d3e5181"></a><a href="#definition_code_list_identifier"><span class="termRef">Code list identifier</span></a>: Candidate code list identifiers for the document are the values for <code>CanonicalUri</code>, <code>CanonicalVersionUri</code>, and <code>LocationUri</code> defined by the Genericode document for the code list.</li><li><a name="d3e5198"></a><a href="#definition_distinct_entry"><span class="termRef">Distinct entries</span></a>: Each row of the Genericode code list document constitutes a distinct entry.</li><li><a name="d3e5206"></a><a href="#definition_code_value"><span class="termRef">Code values</span></a>: Each <code>Value</code> element of the Genericode code list document corresponds to a code value.</li><li><a name="d3e5217"></a><a href="#definition_column_name"><span class="termRef">Column names</span></a>: The columns are as defined by Genericode; the <a name="d3e5220"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> of a column is the value of attribute <code>Id</code> of that column.</li><li>A column in a <a name="d3e5232"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> is a well-known column when its value for <code>CanonicalUri</code> or <code>CanonicalVersionUri</code> corresponds to the <a name="d3e5241"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> specified for that well-known column.</li><li><p>A reference to <a name="d3e5251"></a><a href="#definition_column"><span class="termRef">column</span></a> <q>#code</q> is matched, in order, to:</p><ul><li>a column corresponding to well-known column <q>code</q>,</li><li>a column with <a name="d3e5270"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> <q>code</q>,</li><li>the column in the first single-column key for the code list, or</li><li>the first column in the code list.</li></ul></li><li>A <a name="d3e5290"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> in a Genericode file has a type as specified by the data definition of its column. If the <code>Type</code> attribute references an element declaration, then the type is the type of that element. If a <code>Parameter</code>, which introduces <code>gc:DatatypeFacet</code>, is used, then the type is treated as an anonymous type derived from the type of the column. A value for which no data type is specified has an empty data type.</li></ol></div></div></div><div class="section"><div class="heading"><a name="section-well-known-columns-and-refs"></a><a name="section_7"></a>7. Well-known columns and references</div><p>This specification defines <a name="d3e5314"></a><a href="#definition_column_identifier"><span class="termRef">column identifiers</span></a> and <a name="d3e5317"></a><a href="#definition_column_name"><span class="termRef">column names</span></a> for several columns that have well-understood semantics. These identifiers and names may be used to define columns in <a name="d3e5320"></a><a href="#definition_code_list_document"><span class="termRef">code list documents</span></a> that implement these semantics. These values may be used different ways in different contexts:</p><ul><li>The <strong>column identifier</strong> is an <a name="d3e5333"></a><a href="#definition_absolute_URI"><span class="termRef">absolute URI</span></a> that a column in a code list document may use to identify a column as being a well-known column. A <a name="d3e5336"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> will use this URI as a <code>CanonicalUri</code> value to indicate that a column is a well-known column.</li><li>The <strong>column name</strong> is a string that may be used by a column in a code list document to identify the column as a well-known column. A <a name="d3e5351"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a> will use this name as a <a name="d3e5354"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> to indicate that a column is a well-known column.</li></ul><p>In addition to well-known columns, this specification defines well-known column references. A well-known column reference is used in <a name="d3e5362"></a><a href="#definition_code_list_binding"><span class="termRef">code list bindings</span></a>. The well-known column references defined by this specification are:</p><ul><li><q><strong>#code</strong></q>: A binding will use the column name <q>#code</q> to refer to a default code value in a code list. Each class of <a name="d3e5378"></a><a href="#definition_code_list_document"><span class="termRef">code list document</span></a> defines how a reference to <q>#code</q> is resolved (q.v. <a href="#rule_5-4">Rule 5-4, <em>CSV file as a code list document</em> (CSV-CLD), above,</a> and <a href="#rule_6-5">Rule 6-5, <em>Genericode file as a code list document</em> (GC-CLD), above</a>). A binding that doesn't specify a column name will default to column name <q>#code</q>.</li><li><q><strong>#range</strong></q>: A binding will use the column name <q>#range</q> to match into a range of values, as described by <a href="#section_7.5">Section 7.5, <em>Columns supporting ranges of values</em>, below</a>. </li></ul><div class="section"><div class="heading"><a name="section-column-code"></a><a name="section_7.1"></a>7.1. Column: <q>code</q></div><p><a name="d3e5418"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: code</p><p><a name="d3e5423"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/code</code></p><p>Description: A <q>code</q> column carries a value that stands for some other value or meaning, or acts as an enumeration. A code value may be a single-column key within its code list, to uniquely identify some distinct entry.</p></div><div class="section"><div class="heading"><a name="section_7.2"></a>7.2. Column: <q>definition</q></div><p><a name="d3e5444"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: definition</p><p><a name="d3e5449"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/definition</code></p><p>Description: A <q>definition</q> column carries a human-readable meaning of a <a name="d3e5460"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entry</span></a>. This is analogous to the data definition of an enumerated code in a simple type in a NIEM schema.</p></div><div class="section"><div class="heading"><a name="section_7.3"></a>7.3. Column: <q>subclass-of</q></div><p><a name="d3e5473"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: subclass-of</p><p><a name="d3e5478"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/subclass-of</code></p><p>Description: A <q>subclass-of</q> column indicates that a given distinct entry is a subclass of some other distinct entry. It is a key reference within its code list, referring to a distinct entry having the indicated value for its default code column.</p></div><div class="section"><div class="heading"><a name="section_7.4"></a>7.4. Column: <q>uri</q></div><p><a name="d3e5499"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: uri</p><p><a name="d3e5504"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/uri</code></p><p>Description: A <q>uri</q> column provides a uniform resource identifier for a distinct entry.</p></div><div class="section"><div class="heading"><a name="section-columns-ranges"></a><a name="section_7.5"></a>7.5. Columns supporting ranges of values</div><p>This specification establishes a set of columns that support code tables that describe ranges of values. This enables code lists to be used that map between sets of values. One use for this is to enable translation between continuous numeric values and discrete enumerated values. Another use is to support fixed-point integer values used to represent more meaningful numeric values. For example, fixed-length bit field values can be mapped to elevation in meters.</p><p>In <a href="#table_7-1">Table 7-1, <em>Example code list: directions</em>, below</a>, a direction value in degrees is mapped to enumerated values for the cardinal and ordinal directions. This code list establishes the ranges using the columns <q>minimum-inclusive</q> and <q>maximum-exclusive</q>. Each distinct entry contains a <q>direction</q> column, identifying to what direction the range is mapped. A <a name="d3e5538"></a><a href="#definition_Genericode_code_list_document"><span class="termRef">Genericode code list document</span></a> expressing this code list would define columns with <code>CanonicalUri</code> matching the <a name="d3e5545"></a><a href="#definition_column_identifier"><span class="termRef">column identifiers</span></a> for <q>minimum-inclusive</q> and <q>maximum-exclusive</q>. A <a name="d3e5554"></a><a href="#definition_CSV_code_list_document"><span class="termRef">CSV code list document</span></a> would define columns named <q>minimum-inclusive</q> and <q>maximum-exclusive</q>.</p><div class="table"><div class="caption"><a name="table_7-1"></a>Table 7-1: Example code list: directions</div><table><thead><tr><th>minimum-inclusive</th><th>maximum-exclusive</th><th>direction</th></tr></thead><tbody><tr><td>0</td><td>22.5</td><td>north</td></tr><tr><td>22.5</td><td>67.5</td><td>northeast</td></tr><tr><td>67.5</td><td>112.5</td><td>east</td></tr><tr><td>112.5</td><td>157.5</td><td>southeast</td></tr><tr><td>157.5</td><td>202.5</td><td>south</td></tr><tr><td>202.5</td><td>247.5</td><td>southwest</td></tr><tr><td>247.5</td><td>292.5</td><td>west</td></tr><tr><td>292.5</td><td>337.5</td><td>northwest</td></tr><tr><td>337.5</td><td>360</td><td>north</td></tr></tbody></table></div><p>A code list binding that refers to range columns uses the <a name="d3e5694"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> <q>#range</q>. For example, <a href="#figure_7-1">Figure 7-1, <em>Instance referencing range columns</em>, below,</a> uses a run-time binding. It identifies the code list with attribute <code>cli:codeListURI</code>. It refers to range columns with attribute <code>cli:codeListColumnName</code> set to <q>#range</q>.</p><div class="figure"><div class="caption"><a name="figure_7-1"></a>Figure 7-1: Instance referencing range columns</div><div class="box"><pre><m:Position
xmlns:cli="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/"
xmlns:ext="http://example.org/code-lists/example/directions/extension"
xmlns:m="http://release.niem.gov/niem/domains/maritime/4.0/"
xmlns:nc="http://release.niem.gov/niem/niem-core/4.0/">
<m:PositionHeadingMeasure>
<ext:DegreeAngleValue
cli:codeListURI="http://example.org/code-lists/example/directions/code-list/1"
cli:codeListColumnName="#range">122.31</ext:DegreeAngleValue>
<ext:AngleUnitText>deg</ext:AngleUnitText>
</m:PositionHeadingMeasure>
</m:Position>
</pre></div></div><p>Matching into <a href="#table_7-1">Table 7-1, <em>Example code list: directions</em>, above,</a> would yield the <a name="d3e5727"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entry</span></a> for <q>southeast</q>, since it is the sole entry with a minimum-inclusive value (112.5) that is less than or equal to 122.31, and a maximum-exclusive value (157.5) that is greater than 122.31.</p><div class="section"><div class="heading"><a name="section_7.5.1"></a>7.5.1. Column: <q>minimum-inclusive</q></div><p><a name="d3e5742"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: minimum-inclusive</p><p><a name="d3e5747"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/minimum-inclusive</code></p><p>Description: A value that is an <a name="d3e5755"></a><a href="#definition_inclusive_lower_bound"><span class="termRef">inclusive lower bound</span></a> of a range.</p></div><div class="section"><div class="heading"><a name="section_7.5.2"></a>7.5.2. Column: <q>minimum-exclusive</q></div><p><a name="d3e5768"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: minimum-exclusive</p><p><a name="d3e5773"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/minimum-exclusive</code></p><p>Description: A value that is an <a name="d3e5781"></a><a href="#definition_exclusive_lower_bound"><span class="termRef">exclusive lower bound</span></a> of a range.</p></div><div class="section"><div class="heading"><a name="section_7.5.3"></a>7.5.3. Column: <q>maximum-inclusive</q></div><p><a name="d3e5794"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: maximum-inclusive</p><p><a name="d3e5799"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/maximum-inclusive</code></p><p>Description: A value that is an <a name="d3e5807"></a><a href="#definition_inclusive_upper_bound"><span class="termRef">inclusive upper bound</span></a> of a range.</p></div><div class="section"><div class="heading"><a name="section_7.5.4"></a>7.5.4. Column: <q>maximum-exclusive</q></div><p><a name="d3e5820"></a><a href="#definition_column_name"><span class="termRef">Column name</span></a>: maximum-exclusive</p><p><a name="d3e5825"></a><a href="#definition_column_identifier"><span class="termRef">Column identifier</span></a>: <code>http://reference.niem.gov/niem/specification/code-lists/4.0/column/maximum-exclusive</code></p><p>Description: A value that is an <a name="d3e5833"></a><a href="#definition_exclusive_upper_bound"><span class="termRef">exclusive upper bound</span></a> of a range.</p></div></div><div class="section"><div class="heading"><a name="section_7.6"></a>7.6. Code list example using well-known columns</div><p>The following examples show well-known columns being reused in a code list. A single code list is presented as an abstract table, corresponding CSV, and portions of corresponding Genericode. First, <a href="#table_7-2">Table 7-2, <em>Use of columns in a code list</em>, below,</a> is a tabular representation.</p><div class="table"><div class="caption"><a name="table_7-2"></a>Table 7-2: Use of columns in a code list</div><table><thead><tr><th>code</th><th>definition</th><th>uri</th></tr></thead><tbody><tr><td>application/json</td><td>json</td><td>https://www.iana.org/assignments/media-types/application/json</td></tr><tr><td>application/msword</td><td>doc</td><td>https://www.iana.org/assignments/media-types/application/msword</td></tr><tr><td>application/pdf</td><td>pdf</td><td>https://www.iana.org/assignments/media-types/application/pdf</td></tr></tbody></table></div><p>In this table, we see the well-known columns <q>code</q>, <q>definition</q>, and <q>uri</q> being used. The next three rows represent the <a name="d3e5914"></a><a href="#definition_distinct_entry"><span class="termRef">distinct entries</span></a> of the code list, with a <a name="d3e5917"></a><a href="#definition_code_value"><span class="termRef">code value</span></a> for each <a name="d3e5921"></a><a href="#definition_column"><span class="termRef">column</span></a>.</p><p><a href="#figure_7-2">Figure 7-2, <em>Definition of columns in Genericode</em>, below,</a> shows a CSV file corresponding to the abstract table. In this version, the columns are identifiable as well-known columns because each <a name="d3e5928"></a><a href="#definition_CSV_column_name"><span class="termRef">CSV column name</span></a> is a <a name="d3e5931"></a><a href="#definition_column_name"><span class="termRef">column name</span></a> of a well-known column defined above.</p><div class="figure"><div class="caption"><a name="figure_7-2"></a>Figure 7-2: Definition of columns in Genericode</div><div class="box"><pre>code,definition,uri
application/json,json,https://www.iana.org/assignments/media-types/application/json
application/msword,doc,https://www.iana.org/assignments/media-types/application/msword
application/pdf,pdf,https://www.iana.org/assignments/media-types/application/pdf</pre></div></div><p>For the above code list, Genericode in <a href="#figure_7-3">Figure 7-3, <em>Definition of columns in Genericode</em>, below,</a> defines columns that reuse the well-known columns. Each column is identifiable as a well-known column because its <code>CanonicalUri</code> value is a <a name="d3e5952"></a><a href="#definition_column_identifier"><span class="termRef">column identifier</span></a> of a well-known column.</p><div class="figure"><div class="caption"><a name="figure_7-3"></a>Figure 7-3: Definition of columns in Genericode</div><div class="box"><pre><Column Id="code" Use="required">
<ShortName>code</ShortName>
<CanonicalUri>http://reference.niem.gov/niem/specification/code-lists/4.0/column/code</CanonicalUri>
<Data Type="normalizedString" Lang="en"/>
</Column>
<Column Id="definition" Use="optional">
<ShortName>definition</ShortName>
<CanonicalUri>http://reference.niem.gov/niem/specification/code-lists/4.0/column/definition</CanonicalUri>
<Data Type="normalizedString" Lang="en"/>
</Column>
<Column Id="uri" Use="optional">
<ShortName>uri</ShortName>
<CanonicalUri>http://reference.niem.gov/niem/specification/code-lists/4.0/column/uri</CanonicalUri>
<Data Type="anyURI" Lang="en"/>
</Column></pre></div></div><p><a href="#figure_7-4">Figure 7-4, <em>Distinct entries in Genericode</em>, below,</a> contains distinct entries for the code lists, in the form of Genericode rows. These rows contain the same data as the other code list representations above.</p><div class="figure"><div class="caption"><a name="figure_7-4"></a>Figure 7-4: Distinct entries in Genericode</div><div class="box"><pre><Row>
<Value ColumnRef="code">
<SimpleValue>application/json</SimpleValue>
</Value>
<Value ColumnRef="definition">
<SimpleValue>json</SimpleValue>
</Value>
<Value ColumnRef="uri">
<SimpleValue>https://www.iana.org/assignments/media-types/application/json</SimpleValue>
</Value>
</Row>
<Row>
<Value ColumnRef="code">
<SimpleValue>application/msword</SimpleValue>
</Value>
<Value ColumnRef="definition">
<SimpleValue>doc</SimpleValue>
</Value>
<Value ColumnRef="uri">
<SimpleValue>https://www.iana.org/assignments/media-types/application/msword</SimpleValue>
</Value>
</Row>
<Row>
<Value ColumnRef="code">
<SimpleValue>application/pdf</SimpleValue>
</Value>
<Value ColumnRef="definition">
<SimpleValue>pdf</SimpleValue>
</Value>
<Value ColumnRef="uri">
<SimpleValue>https://www.iana.org/assignments/media-types/application/pdf</SimpleValue>
</Value>
</Row></pre></div></div></div></div><div class="section"><div class="heading"><a name="appendix_A"></a>Appendix A. References</div><p class="hang"><a name="CTAS"></a><span class="ref">[CTAS]</span>: Roberts, Webb. <q>NIEM Conformance Targets Attribute Specification, Version 3.0.</q> NIEM Technical Architecture Committee, July 31, 2014. <a class="url" target="_blank" href="http://reference.niem.gov/niem/specification/conformance-targets-attribute/3.0/NIEM-CTAS-3.0-2014-07-31.html">http://reference.niem.gov/niem/specification/conformance-targets-attribute/3.0/NIEM-CTAS-3.0-2014-07-31.html</a>.</p><div class="sub"></div><p class="hang"><a name="Genericode"></a><span class="ref">[Genericode]</span>: Anthony B. Coates, ed. <q>Code List Representation (Genericode) Version 1.0, Committee Specification 02.</q> OASIS, April 6, 2022. <a class="url" target="_blank" href="https://docs.oasis-open.org/codelist/genericode/v1.0/genericode-v1.0.html">https://docs.oasis-open.org/codelist/genericode/v1.0/genericode-v1.0.html</a>.</p><div class="sub"></div><p class="hang"><a name="NDR"></a><span class="ref">[NIEM NDR]</span>: Roberts, Webb. <q>National Information Exchange Model Naming and Design Rules, Version 5.0.</q> NIEM Technical Architecture Committee, December 18, 2020. <a class="url" target="_blank" href="http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/niem-ndr-5.0.html">http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/niem-ndr-5.0.html</a>.</p><div class="sub"></div><p class="hang"><a name="RFC2119"></a><span class="ref">[RFC2119]</span>: Bradner, S. (1997, March). <em>Key words for use in RFCs to Indicate Requirement Levels</em>. Internet Engineering Task Force. Retrieved from <a class="url" target="_blank" href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a></p><div class="sub"></div><p class="hang"><a name="RFC3986"></a><span class="ref">[RFC3986]</span>: Berners-Lee, T., Fielding, R., and L. Masinter, <q>Uniform Resource Identifier (URI): Generic Syntax</q>, STD 66, RFC 3986, DOI 10.17487/RFC3986, January 2005, <a class="url" target="_blank" href="http://www.rfc-editor.org/info/rfc3986">http://www.rfc-editor.org/info/rfc3986</a>.</p><div class="sub"></div><p class="hang"><a name="RFC4180"></a><span class="ref">[RFC4180]</span>: Shafranovich, Y. <q>Common Format and MIME Type for Comma-Separated Values (CSV) Files, RFC 4180.</q> IETF Network Working Group, October 2005. <a class="url" target="_blank" href="http://www.ietf.org/rfc/rfc4180.txt">http://www.ietf.org/rfc/rfc4180.txt</a>. </p><div class="sub"></div><p class="hang"><a name="XPathFunctions"></a><span class="ref">[XPathFunctions]</span>: Malhotra, Ashok, Jim Melton, Norman Walsh, and Michael Kay. <q>XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition).</q> W3C, December 14, 2010. <a class="url" target="_blank" href="https://www.w3.org/TR/xpath-functions/">https://www.w3.org/TR/xpath-functions/</a>.</p><div class="sub"></div><p class="hang"><a name="XML"></a><span class="ref">[XML]</span>: Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E., & Yergeau, F. (2008, November 26). <em>Extensible Markup Language (XML) 1.0 (Fifth Edition)</em>. The World Wide Web Consortium (W3C). Retrieved from <a class="url" target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/">http://www.w3.org/TR/2008/REC-xml-20081126/</a></p><div class="sub"></div><p class="hang"><a name="XMLCatalogs"></a><span class="ref">[XML Catalogs]</span>: Walsh, Norman. <q>XML Catalogs—OASIS Standard V1.1, 7 October 2005.</q> OASIS Open, Inc., October 7, 2005. <a class="url" target="_blank" href="https://www.oasis-open.org/committees/download.php/14809/std-entity-xml-catalogs-1.1.html">https://www.oasis-open.org/committees/download.php/14809/std-entity-xml-catalogs-1.1.html</a>.</p><div class="sub"></div><p class="hang"><a name="XMLInfoset"></a><span class="ref">[XML Infoset]</span>: Cowan, John, and Richard Tobin. <q>XML Information Set (Second Edition)</q>, 4 February 2004. <a class="url" target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/">http://www.w3.org/TR/2004/REC-xml-infoset-20040204/</a>.</p><div class="sub"></div><p class="hang"><a name="XMLNamespaces"></a><span class="ref">[XMLNamespaces]</span>: Bray, T., Hollander, D., Layman, A., Tobin, R., & Thompson, H. S. (2009, December 8). <em>Namespaces in XML 1.0 (Third Edition)</em>. W3C. Retrieved from <a class="url" target="_blank" href="http://www.w3.org/TR/2009/REC-xml-names-20091208/">http://www.w3.org/TR/2009/REC-xml-names-20091208/</a></p><div class="sub"></div><p class="hang"><a name="XMLSchema1"></a><span class="ref">[XMLSchema1]</span>: Thompson, H. S., Beech, D., Maloney, M., & Mendelsohn, N. (2004, October 28). <em>XML Schema Part 1: Structures Second Edition</em>. Retrieved from <a class="url" target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/</a>.</p><div class="sub"></div><p class="hang"><a name="XMLSchema2"></a><span class="ref">[XMLSchema2]</span>: Biron, Paul V., and Ashok Malhotra. <q>XML Schema Part 2: Datatypes Second Edition,</q> October 28, 2004. <a class="url" target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</a>.</p><div class="sub"></div></div><div class="section"><div class="heading"><a name="section-cli-xsd"></a><a name="appendix_B"></a>Appendix B. XML Schema document for the code lists instance namespace</div><p>The following XML Schema document defines the <a name="d3e6151"></a><a href="#definition_code_lists_instance_namespace"><span class="termRef">code lists instance namespace</span></a>, a namespace for binding the content of XML documents to code lists at run time. This vocabulary may be incorporated into exchange specifications, and is used in exchanged XML documents to express code list bindings at run time. This schema document conforms to NIEM 3 and NIEM 4, and may be integrated into either NIEM 3 or NIEM 4-conformant schema sets.</p><pre><?xml version="1.0" encoding="US-ASCII"?>
<xs:schema
ct:conformanceTargets="http://reference.niem.gov/niem/specification/naming-and-design-rules/4.0/#ReferenceSchemaDocument http://reference.niem.gov/niem/specification/naming-and-design-rules/3.0/#ReferenceSchemaDocument"
targetNamespace="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/"
version="4.0"
xmlns:ct="http://release.niem.gov/niem/conformanceTargets/3.0/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>Definitions for the use of the NIEM Code Lists Specification, version 4.0, in XML message instances.</xs:documentation>
</xs:annotation>
<xs:attribute name="codeListURI" type="xs:anyURI">
<xs:annotation>
<xs:documentation>A universal identifier for a code list.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="codeListColumnName" type="xs:string">
<xs:annotation>
<xs:documentation>A local name for a code list column within a code list.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="codeListConstrainingIndicator" type="xs:boolean">
<xs:annotation>
<xs:documentation>True when a code list binding constrains the validity of a code list value, false otherwise.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:schema>
</pre></div><div class="section"><div class="heading"><a name="section-schema-appinfo-xsd"></a><a name="appendix_C"></a>Appendix C. XML Schema document for the code list schema appinfo namespace</div><p>The following XML Schema document defines the <a name="d3e6166"></a><a href="#definition_code_lists_schema_appinfo_namespace"><span class="termRef">code lists schema appinfo namespace</span></a>, a namespace for annotating XML Schema component definitions. These annotations connect XML components to code lists at schema development time.</p><pre><?xml version="1.0" encoding="US-ASCII"?>
<xs:schema
targetNamespace="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-schema-appinfo/"
version="4.0"
xmlns:clsa="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-schema-appinfo/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>This schema provides annotations for connecting content defined within an XML Schema document to the content of code lists.</xs:documentation>
</xs:annotation>
<xs:element name="SimpleCodeListBinding">
<xs:annotation>
<xs:documentation>An element for connecting simple content defined by an XML Schema component to a a column of a code list.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="codeListURI" type="xs:anyURI" use="required">
<xs:annotation>
<xs:documentation>A universal identifier for a code list.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="columnName" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>A local name for a code list column within a code list.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="constrainingIndicator" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>True when a code list binding constrains the validity of a code list value, false otherwise.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="ComplexCodeListBinding">
<xs:annotation>
<xs:documentation>An element for connecting complex content defined by an XML Schema component to a set of columns of a code list.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ElementCodeListBinding" form="qualified" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="elementName" type="xs:QName" use="required">
<xs:annotation>
<xs:documentation>A qualified name of an XML element.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="columnName" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>A local name for a code list column within a code list.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="codeListURI" type="xs:anyURI" use="required">
<xs:annotation>
<xs:documentation>A universal identifier for a code list.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="constrainingIndicator" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>True when a code list binding constrains the validity of a code list value, false otherwise.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
</pre></div><div class="section"><div class="heading"><a name="section-make-model"></a><a name="appendix_D"></a>Appendix D. Example documents: Make–Model example</div><p>This section contains a single code list, with instances and supporting schemas for both run-time binding and schema-time binding:</p><p>A code list provides makes and models of vehicles.</p><ul><li><a href="#appendix_D.1">Appendix D.1, <em>Vehicle make and model code list</em>, below,</a> shows the code list as a table.</li><li><a href="#appendix_D.2">Appendix D.2, <em>Make–Model code list CSV file</em>, below,</a> shows the code list as comma-separated values (CSV).</li><li><a href="#appendix_D.3">Appendix D.3, <em>Make–Model code list Genericode file</em>, below,</a> shows the code list rendered into Genericode.</li></ul><p>The code list is used in XML exchanges. There are two methods provided by this specification for binding XML document content (messages) to code lists: schema-time binding through XML Schema appinfo annotations, and run-time binding through the <code>cli:codeListURI</code> attribute. The first example shows the code list bound to the message at schema time:</p><ul><li><a href="#appendix_D.4">Appendix D.4, <em>XML instance with schema-time code list binding</em>, below,</a> shows the XML instance that relies on schema-time binding.</li><li><a href="#appendix_D.5">Appendix D.5, <em>Extension schema with schema-time code list binding</em>, below,</a> shows an extension schema that defines new components, and which binds the XML message to the code list via schema annotations.</li><li><a href="#appendix_D.6">Appendix D.6, <em>XML catalog for schema-time code list binding</em>, below,</a> shows an XML catalog that directs assembly of the XML Schema, and which resolves the <a name="d3e6234"></a><a href="#definition_code_list_identifier"><span class="termRef">code list identifier</span></a> to the Genericode file for the code list.</li></ul><p>The second example shows the code list bound to the XML data through run-time binding, using the <code>cli:codeListURI</code> attribute.</p><ul><li><a href="#appendix_D.7">Appendix D.7, <em>XML instance with run-time code list binding</em>, below,</a> shows the XML instance with run-time binding.</li><li><a href="#appendix_D.8">Appendix D.8, <em>Extension schema with run-time code list binding</em>, below,</a> shows an extension schema that defines new components that provide for run-time reference to the code list.</li><li><a href="#appendix_D.9">Appendix D.9, <em>XML catalog for run-time code list binding</em>, below,</a> shows an XML catalog that directs assembly of the XML Schema and resolves the location of the Genericode file for the code list.</li></ul><div class="section"><div class="heading"><a name="section-example-make-model-table"></a><a name="appendix_D.1"></a>Appendix D.1. Vehicle make and model code list</div><div class="table"><div class="caption"><a name="table_D-1"></a>Table D-1: Vehicle make and model code list</div><table><thead><tr><th>Make code</th><th>Make description</th><th>Model code</th><th>Model description</th><th>Class</th></tr></thead><tbody><tr><td>FORD</td><td>Ford</td><td>FUS</td><td>Fusion</td><td>Auto</td></tr><tr><td>HOND</td><td>Honda</td><td>CIV</td><td>Civic</td><td>Auto</td></tr><tr><td>HOND</td><td>Honda</td><td>CRV</td><td>CRV</td><td>SUV</td></tr><tr><td>DODG</td><td>Dodge</td><td>R15</td><td>Ram 1500</td><td>Pickup</td></tr><tr><td>NISS</td><td>Nissan</td><td>ALT</td><td>Altima</td><td>Auto</td></tr><tr><td>FORD</td><td>Ford</td><td>F15</td><td>F-150</td><td>Pickup</td></tr><tr><td>TOYT</td><td>Toyota</td><td>COA</td><td>Corolla</td><td>Auto</td></tr><tr><td>FORD</td><td>Ford</td><td>500</td><td>Five Hundred</td><td>Auto</td></tr><tr><td>HOND</td><td>Honda</td><td>ACC</td><td>Accord</td><td>Auto</td></tr><tr><td>TOYT</td><td>Toyota</td><td>CAM</td><td>Camry</td><td>Auto</td></tr><tr><td>CHEV</td><td>Chevrolet</td><td>SLV</td><td>Silverado</td><td>Pickup</td></tr><tr><td>MERZ</td><td>Mercedes-Benz</td><td>500</td><td>500 Series</td><td>Auto</td></tr></tbody></table></div></div><div class="section"><div class="heading"><a name="section-example-make-model-csv"></a><a name="appendix_D.2"></a>Appendix D.2. Make–Model code list CSV file</div><pre>Make code,Make description,Model code,Model description,Class
FORD,Ford,FUS,Fusion,Auto
HOND,Honda,CIV,Civic,Auto
HOND,Honda,CRV,CRV,SUV
DODG,Dodge,R15,Ram 1500,Pickup
NISS,Nissan,ALT,Altima,Auto
FORD,Ford,F15,F-150,Pickup
TOYT,Toyota,COA,Corolla,Auto
FORD,Ford,500,Five Hundred,Auto
HOND,Honda,ACC,Accord,Auto
TOYT,Toyota,CAM,Camry,Auto
CHEV,Chevrolet,SLV,Silverado,Pickup
MERZ,Mercedes-Benz,500,500 Series,Auto</pre></div><div class="section"><div class="heading"><a name="section-example-make-model-gc"></a><a name="appendix_D.3"></a>Appendix D.3. Make–Model code list Genericode file</div><pre><?xml version="1.0" encoding="US-ASCII"?>
<gc:CodeList xmlns:ct="http://release.niem.gov/niem/conformanceTargets/3.0/"
xmlns:gc="http://docs.oasis-open.org/codelist/ns/genericode/1.0/"
xmlns:gca="http://example.org/namespace/genericode-appinfo">
<Annotation>
<AppInfo>
<gca:ConformanceTargets ct:conformanceTargets="http://reference.niem.gov/niem/specification/code-lists/4.0/#GenericodeCodeListDocument"/>
</AppInfo>
</Annotation>
<Identification>
<ShortName>VMA</ShortName>
<Version>1</Version>
<CanonicalUri>http://example.org/code-list/vehicle-make-model</CanonicalUri>
<CanonicalVersionUri>http://example.org/code-list/vehicle-make-model/2013-03-05</CanonicalVersionUri>
</Identification>
<ColumnSet>
<Column Id="make" Use="required">
<ShortName>Make-code</ShortName>
<Data Type="token"/>
</Column>
<Column Id="make-descr" Use="required">
<ShortName>Make-description</ShortName>
<Data Type="string"/>
</Column>
<Column Id="model" Use="required">
<ShortName>Model-code</ShortName>
<Data Type="token"/>
</Column>
<Column Id="model-descr" Use="required">
<ShortName>Model-description</ShortName>
<Data Type="string"/>
</Column>
<Column Id="class" Use="required">
<ShortName>Class</ShortName>
<Data Type="token"/>
</Column>
<Key Id="key-make-model">
<ShortName>Key</ShortName>
<ColumnRef Ref="make"/>
<ColumnRef Ref="model"/>
</Key>
</ColumnSet>
<SimpleCodeList>
<Row>
<Value>
<SimpleValue>FORD</SimpleValue>
</Value>
<Value>
<SimpleValue>Ford</SimpleValue>
</Value>
<Value>
<SimpleValue>FUS</SimpleValue>
</Value>
<Value>
<SimpleValue>Fusion</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>HOND</SimpleValue>
</Value>
<Value>
<SimpleValue>Honda</SimpleValue>
</Value>
<Value>
<SimpleValue>CIV</SimpleValue>
</Value>
<Value>
<SimpleValue>Civic</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>HOND</SimpleValue>
</Value>
<Value>
<SimpleValue>Honda</SimpleValue>
</Value>
<Value>
<SimpleValue>CRV</SimpleValue>
</Value>
<Value>
<SimpleValue>CRV</SimpleValue>
</Value>
<Value>
<SimpleValue>SUV</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>DODG</SimpleValue>
</Value>
<Value>
<SimpleValue>Dodge</SimpleValue>
</Value>
<Value>
<SimpleValue>R15</SimpleValue>
</Value>
<Value>
<SimpleValue>Ram 1500</SimpleValue>
</Value>
<Value>
<SimpleValue>Pickup</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>NISS</SimpleValue>
</Value>
<Value>
<SimpleValue>Nissan</SimpleValue>
</Value>
<Value>
<SimpleValue>ALT</SimpleValue>
</Value>
<Value>
<SimpleValue>Altima</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>FORD</SimpleValue>
</Value>
<Value>
<SimpleValue>Ford</SimpleValue>
</Value>
<Value>
<SimpleValue>F15</SimpleValue>
</Value>
<Value>
<SimpleValue>F-150</SimpleValue>
</Value>
<Value>
<SimpleValue>Pickup</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>TOYT</SimpleValue>
</Value>
<Value>
<SimpleValue>Toyota</SimpleValue>
</Value>
<Value>
<SimpleValue>COA</SimpleValue>
</Value>
<Value>
<SimpleValue>Corolla</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>FORD</SimpleValue>
</Value>
<Value>
<SimpleValue>Ford</SimpleValue>
</Value>
<Value>
<SimpleValue>500</SimpleValue>
</Value>
<Value>
<SimpleValue>Five Hundred</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>HOND</SimpleValue>
</Value>
<Value>
<SimpleValue>Honda</SimpleValue>
</Value>
<Value>
<SimpleValue>ACC</SimpleValue>
</Value>
<Value>
<SimpleValue>Accord</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>TOYT</SimpleValue>
</Value>
<Value>
<SimpleValue>Toyota</SimpleValue>
</Value>
<Value>
<SimpleValue>CAM</SimpleValue>
</Value>
<Value>
<SimpleValue>Camry</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>CHEV</SimpleValue>
</Value>
<Value>
<SimpleValue>Chevrolet</SimpleValue>
</Value>
<Value>
<SimpleValue>SLV</SimpleValue>
</Value>
<Value>
<SimpleValue>Silverado</SimpleValue>
</Value>
<Value>
<SimpleValue>Pickup</SimpleValue>
</Value>
</Row>
<Row>
<Value>
<SimpleValue>MERZ</SimpleValue>
</Value>
<Value>
<SimpleValue>Mercedes-Benz</SimpleValue>
</Value>
<Value>
<SimpleValue>500</SimpleValue>
</Value>
<Value>
<SimpleValue>500 Series</SimpleValue>
</Value>
<Value>
<SimpleValue>Auto</SimpleValue>
</Value>
</Row>
</SimpleCodeList>
</gc:CodeList>
</pre></div><div class="section"><div class="heading"><a name="section-example-make-model-schema-time-instance"></a><a name="appendix_D.4"></a>Appendix D.4. XML instance with schema-time code list binding</div><pre><?xml version="1.0" encoding="US-ASCII"?>
<ext:Vehicle xmlns:ext="http://example.org/namespace/extension-schema-time">
<ext:VehicleMakeCode>DODG</ext:VehicleMakeCode>
<ext:VehicleModelCode>R15</ext:VehicleModelCode>
</ext:Vehicle>
</pre></div><div class="section"><div class="heading"><a name="section-example-make-model-schema-time-extension-xsd"></a><a name="appendix_D.5"></a>Appendix D.5. Extension schema with schema-time code list binding</div><pre><?xml version="1.0" encoding="us-ascii"?>
<xs:schema
ct:conformanceTargets="
http://reference.niem.gov/niem/specification/naming-and-design-rules/4.0/#ReferenceSchemaDocument
http://reference.niem.gov/niem/specification/code-lists/4.0/#SchemaDocument"
targetNamespace="http://example.org/namespace/extension-schema-time"
version="1"
xmlns:clsa="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-schema-appinfo/"
xmlns:ct="http://release.niem.gov/niem/conformanceTargets/3.0/"
xmlns:ext="http://example.org/namespace/extension-schema-time"
xmlns:nc="http://release.niem.gov/niem/niem-core/4.0/"
xmlns:niem-xs="http://release.niem.gov/niem/proxy/xsd/4.0/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>An extension schema for vehicle make and model values, showing schema-time binding of XML content to a code list.</xs:documentation>
</xs:annotation>
<xs:import namespace="http://release.niem.gov/niem/niem-core/4.0/"/>
<xs:import namespace="http://release.niem.gov/niem/proxy/xsd/4.0/"/>
<xs:element name="Vehicle" type="nc:VehicleType"
substitutionGroup="nc:Vehicle">
<xs:annotation>
<xs:appinfo>
<clsa:ComplexCodeListBinding
codeListURI="http://example.org/code-list/vehicle-make-model">
<clsa:ElementCodeListBinding elementName="ext:VehicleMakeCode"
columnName="make"/>
<clsa:ElementCodeListBinding elementName="ext:VehicleModelCode"
columnName="model"/>
</clsa:ComplexCodeListBinding>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="VehicleMakeCode" type="niem-xs:token"
substitutionGroup="nc:VehicleMakeAbstract">
<xs:annotation>
<xs:documentation>A code for a manufacturer of a vehicle.</xs:documentation>
<xs:appinfo>
<clsa:SimpleCodeListBinding
codeListURI="http://example.org/code-list/vehicle-make-model"
columnName="make"/>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="VehicleModelCode" type="niem-xs:token"
substitutionGroup="nc:VehicleModelAbstract">
<xs:annotation>
<xs:documentation>A code for a model of a vehicle.</xs:documentation>
<xs:appinfo>
<clsa:SimpleCodeListBinding
codeListURI="http://example.org/code-list/vehicle-make-model"
columnName="model"/>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:schema>
</pre></div><div class="section"><div class="heading"><a name="section-example-make-model-schema-time-xml-catalog"></a><a name="appendix_D.6"></a>Appendix D.6. XML catalog for schema-time code list binding</div><pre><?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog prefer="public" xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<uri name="http://example.org/namespace/extension-schema-time"
uri="extension.xsd"/>
<uri name="http://example.org/code-list/vehicle-make-model"
uri="../make-model.gc"/>
<nextCatalog catalog="../../niem/xml-catalog.xml"/>
</catalog>
</pre></div><div class="section"><div class="heading"><a name="section-example-make-model-run-time-instance"></a><a name="appendix_D.7"></a>Appendix D.7. XML instance with run-time code list binding</div><pre><?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
<nc:Vehicle
xmlns:cli="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/"
xmlns:ext="http://example.org/namespace/extension-run-time"
xmlns:nc="http://release.niem.gov/niem/niem-core/4.0/">
<ext:VehicleMakeCode
cli:codeListURI="http://example.org/code-list/vehicle-make-model"
cli:codeListColumnName="make"
>DODG</ext:VehicleMakeCode>
<ext:VehicleModelCode
cli:codeListURI="http://example.org/code-list/vehicle-make-model"
cli:codeListColumnName="model"
>R15</ext:VehicleModelCode>
</nc:Vehicle>
</pre></div><div class="section"><div class="heading"><a name="section-example-make-model-run-time-extension-xsd"></a><a name="appendix_D.8"></a>Appendix D.8. Extension schema with run-time code list binding</div><pre><?xml version="1.0" encoding="us-ascii"?>
<xs:schema
ct:conformanceTargets="http://reference.niem.gov/niem/specification/naming-and-design-rules/4.0/#ExtensionSchemaDocument"
targetNamespace="http://example.org/namespace/extension-run-time"
version="1"
xmlns:cli="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/"
xmlns:ct="http://release.niem.gov/niem/conformanceTargets/3.0/"
xmlns:ext="http://example.org/namespace/extension-run-time"
xmlns:nc="http://release.niem.gov/niem/niem-core/4.0/"
xmlns:structures="http://release.niem.gov/niem/structures/4.0/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>An extension schema for vehicle make and model values, providing for run-time binding of XML content to a code list.</xs:documentation>
</xs:annotation>
<xs:import namespace="http://release.niem.gov/niem/niem-core/4.0/"/>
<xs:import namespace="http://release.niem.gov/niem/structures/4.0/"/>
<xs:import namespace="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/"/>
<xs:complexType name="CodeType">
<xs:annotation>
<xs:documentation>A data type for a code with codes sourced from an external code list.</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:token">
<xs:attributeGroup ref="structures:SimpleObjectAttributeGroup"/>
<xs:attribute ref="cli:codeListColumnName" use="optional"/>
<xs:attribute ref="cli:codeListConstrainingIndicator" use="optional"/>
<xs:attribute ref="cli:codeListURI" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="VehicleMakeCode" type="nc:CodeType"
substitutionGroup="nc:VehicleMakeAbstract">
<xs:annotation>
<xs:documentation>A code for a manufacturer of a vehicle.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="VehicleModelCode" type="nc:CodeType"
substitutionGroup="nc:VehicleModelAbstract">
<xs:annotation>
<xs:documentation>A code for a model of a vehicle.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>
</pre></div><div class="section"><div class="heading"><a name="section-example-make-model-run-time-xml-catalog"></a><a name="appendix_D.9"></a>Appendix D.9. XML catalog for run-time code list binding</div><pre><?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog prefer="public" xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<uri name="http://example.org/namespace/extension-run-time"
uri="extension.xsd"/>
<uri name="http://reference.niem.gov/niem/specification/code-lists/4.0/code-lists-instance/"
uri="../../../code-lists-instance.xsd"/>
<uri name="http://example.org/code-list/vehicle-make-model"
uri="../make-model.gc"/>
<nextCatalog catalog="../../niem/xml-catalog.xml"/>
</catalog>
</pre></div></div><div class="section"><div class="heading"><a name="index"></a><a name="appendix_E"></a>Appendix E. Index</div><ul><li>code list: <a href="#d3e418">Section 1.1</a>, <a href="#d3e449">Section 1.1</a>, <a href="#d3e588">Section 1.1</a>, <a href="#definition_code_list">Section 2.9 (definition)</a>, <a href="#d3e2037">Section 2.9</a>, <a href="#d3e2058">Section 2.9</a>, <a href="#d3e2091">Section 2.9</a>, <a href="#d3e2112">Section 2.9</a>, <a href="#d3e2139">Section 2.9</a>, <a href="#d3e2169">Section 2.9</a>, <a href="#d3e2197">Section 2.9</a>, <a href="#d3e2555">Section 3.1</a>, <a href="#d3e4873">Section 5</a></li><li>code list binding: <a href="#d3e2870">Section 4</a>, <a href="#definition_code_list_binding">Section 4.3 (definition)</a>, <a href="#d3e3505">Section 4.5.2</a>, <a href="#d3e3639">Section 4.5.2</a>, <a href="#d3e3776">Section 4.5.2</a>, <a href="#d3e3876">Section 4.5.2</a>, <a href="#d3e4016">Section 4.5.3</a>, <a href="#d3e4179">Section 4.5.3</a>, <a href="#d3e4297">Section 4.6</a>, <a href="#d3e4319">Section 4.6</a>, <a href="#d3e4337">Section 4.6</a>, <a href="#d3e5362">Section 7</a></li><li>code list document: <a href="#d3e673">Section 1.4</a>, <a href="#d3e2219">Section 2.9</a>, <a href="#d3e2241">Section 2.9</a>, <a href="#d3e2479">Section 3</a>, <a href="#definition_code_list_document">Section 3.1 (definition)</a>, <a href="#d3e2699">Section 3.3</a>, <a href="#d3e2856">Section 3.6</a>, <a href="#d3e4399">Section 4.6</a>, <a href="#d3e4424">Section 4.6</a>, <a href="#d3e4446">Section 4.6</a>, <a href="#d3e4614">Section 4.6</a>, <a href="#d3e4752">Section 4.6</a>, <a href="#d3e4761">Section 4.6</a>, <a href="#d3e4786">Section 5</a>, <a href="#d3e5320">Section 7</a></li><li>code list identifier: <a href="#d3e670">Section 1.4</a>, <a href="#d3e721">Section 1.5</a>, <a href="#definition_code_list_identifier">Section 2.9 (definition)</a>, <a href="#d3e2585">Section 3.1</a>, <a href="#d3e2981">Section 4.3</a>, <a href="#d3e3020">Section 4.3</a>, <a href="#d3e3187">Section 4.4.2</a>, <a href="#d3e3515">Section 4.5.2</a>, <a href="#d3e3649">Section 4.5.2</a>, <a href="#d3e3786">Section 4.5.2</a>, <a href="#d3e3886">Section 4.5.2</a>, <a href="#d3e4026">Section 4.5.3</a>, <a href="#d3e4189">Section 4.5.3</a>, <a href="#d3e4353">Section 4.6</a>, <a href="#d3e4755">Section 4.6</a>, <a href="#d3e4758">Section 4.6</a>, <a href="#d3e4870">Section 5</a>, <a href="#d3e4876">Section 5</a>, <a href="#d3e5181">Section 6</a>, <a href="#d3e5241">Section 6</a>, <a href="#d3e6234">Section Appendix D</a></li><li>code list validation set: <a href="#d3e2535">Section 3</a>, <a href="#definition_code_list_validation_set">Section 3.6 (definition)</a>, <a href="#d3e3495">Section 4.5.2</a>, <a href="#d3e3626">Section 4.5.2</a>, <a href="#d3e3763">Section 4.5.2</a>, <a href="#d3e3863">Section 4.5.2</a>, <a href="#d3e4003">Section 4.5.3</a>, <a href="#d3e4166">Section 4.5.3</a>, <a href="#d3e4306">Section 4.6</a>, <a href="#d3e4343">Section 4.6</a></li><li>code list-enabled instance document: <a href="#d3e2524">Section 3</a>, <a href="#definition_code_list-enabled_instance_document">Section 3.5 (definition)</a>, <a href="#d3e2804">Section 3.5</a>, <a href="#d3e2834">Section 3.6</a></li><li>code list-enabled schema document: <a href="#d3e2513">Section 3</a>, <a href="#definition_code_list-enabled_schema_document">Section 3.4 (definition)</a>, <a href="#d3e2746">Section 3.4</a>, <a href="#d3e2776">Section 3.4</a></li><li>code value: <a href="#d3e473">Section 1.1</a>, <a href="#d3e2025">Section 2.9</a>, <a href="#d3e2040">Section 2.9</a>, <a href="#definition_code_value">Section 2.9 (definition)</a>, <a href="#d3e2077">Section 2.9</a>, <a href="#d3e2094">Section 2.9</a>, <a href="#d3e2606">Section 3.1</a>, <a href="#d3e4502">Section 4.6</a>, <a href="#d3e4508">Section 4.6</a>, <a href="#d3e4520">Section 4.6</a>, <a href="#d3e4526">Section 4.6</a>, <a href="#d3e4538">Section 4.6</a>, <a href="#d3e4544">Section 4.6</a>, <a href="#d3e4556">Section 4.6</a>, <a href="#d3e4562">Section 4.6</a>, <a href="#d3e4898">Section 5</a>, <a href="#d3e4912">Section 5</a>, <a href="#d3e4986">Section 5</a>, <a href="#d3e5206">Section 6</a>, <a href="#d3e5290">Section 6</a>, <a href="#d3e5917">Section 7.6</a></li><li>column: <a href="#d3e427">Section 1.1</a>, <a href="#d3e494">Section 1.1</a>, <a href="#d3e2022">Section 2.9</a>, <a href="#d3e2043">Section 2.9</a>, <a href="#d3e2061">Section 2.9</a>, <a href="#definition_column">Section 2.9 (definition)</a>, <a href="#d3e2136">Section 2.9</a>, <a href="#d3e2166">Section 2.9</a>, <a href="#d3e2206">Section 2.9</a>, <a href="#d3e4932">Section 5</a>, <a href="#d3e4951">Section 5</a>, <a href="#d3e4973">Section 5</a>, <a href="#d3e5251">Section 6</a>, <a href="#d3e5921">Section 7.6</a></li><li>column identifier: <a href="#definition_column_identifier">Section 2.9 (definition)</a>, <a href="#d3e2146">Section 2.9</a>, <a href="#d3e5314">Section 7</a>, <a href="#d3e5423">Section 7.1</a>, <a href="#d3e5449">Section 7.2</a>, <a href="#d3e5478">Section 7.3</a>, <a href="#d3e5504">Section 7.4</a>, <a href="#d3e5747">Section 7.5.1</a>, <a href="#d3e5773">Section 7.5.2</a>, <a href="#d3e5799">Section 7.5.3</a>, <a href="#d3e5825">Section 7.5.4</a>, <a href="#d3e5952">Section 7.6</a></li><li>column name: <a href="#d3e434">Section 1.1</a>, <a href="#d3e2122">Section 2.9</a>, <a href="#definition_column_name">Section 2.9 (definition)</a>, <a href="#d3e2176">Section 2.9</a>, <a href="#d3e2213">Section 2.9</a>, <a href="#d3e2615">Section 3.1</a>, <a href="#d3e2984">Section 4.3</a>, <a href="#d3e3008">Section 4.3</a>, <a href="#d3e3032">Section 4.3</a>, <a href="#d3e4909">Section 5</a>, <a href="#d3e5217">Section 6</a>, <a href="#d3e5220">Section 6</a>, <a href="#d3e5270">Section 6</a>, <a href="#d3e5317">Section 7</a>, <a href="#d3e5354">Section 7</a>, <a href="#d3e5418">Section 7.1</a>, <a href="#d3e5444">Section 7.2</a>, <a href="#d3e5473">Section 7.3</a>, <a href="#d3e5499">Section 7.4</a>, <a href="#d3e5694">Section 7.5</a>, <a href="#d3e5742">Section 7.5.1</a>, <a href="#d3e5768">Section 7.5.2</a>, <a href="#d3e5794">Section 7.5.3</a>, <a href="#d3e5820">Section 7.5.4</a>, <a href="#d3e5931">Section 7.6</a></li><li>CSV code list document: <a href="#d3e2222">Section 2.9</a>, <a href="#d3e2238">Section 2.9</a>, <a href="#d3e2501">Section 3</a>, <a href="#definition_CSV_code_list_document">Section 3.3 (definition)</a>, <a href="#d3e4803">Section 5</a>, <a href="#d3e4821">Section 5</a>, <a href="#d3e4842">Section 5</a>, <a href="#d3e4861">Section 5</a>, <a href="#d3e5554">Section 7.5</a></li><li>distinct entry: <a href="#d3e458">Section 1.1</a>, <a href="#d3e2019">Section 2.9</a>, <a href="#definition_distinct_entry">Section 2.9 (definition)</a>, <a href="#d3e2055">Section 2.9</a>, <a href="#d3e2080">Section 2.9</a>, <a href="#d3e2097">Section 2.9</a>, <a href="#d3e2597">Section 3.1</a>, <a href="#d3e4300">Section 4.6</a>, <a href="#d3e4325">Section 4.6</a>, <a href="#d3e4884">Section 5</a>, <a href="#d3e5198">Section 6</a>, <a href="#d3e5460">Section 7.2</a>, <a href="#d3e5914">Section 7.6</a></li><li>Genericode code list document: <a href="#d3e2225">Section 2.9</a>, <a href="#d3e2246">Section 2.9</a>, <a href="#d3e2490">Section 3</a>, <a href="#definition_Genericode_code_list_document">Section 3.2 (definition)</a>, <a href="#d3e5017">Section 6</a>, <a href="#d3e5059">Section 6</a>, <a href="#d3e5074">Section 6</a>, <a href="#d3e5169">Section 6</a>, <a href="#d3e5232">Section 6</a>, <a href="#d3e5336">Section 7</a>, <a href="#d3e5538">Section 7.5</a></li><li>locally-resolved resource: <a href="#definition_locally-resolved_resource">Section 2.11 (definition)</a>, <a href="#d3e4602">Section 4.6</a></li></ul></div><div class="section"><div class="heading"><a name="index-of-defns"></a><a name="appendix_F"></a>Appendix F. Index of definitions</div><ul><li><a href="#definition_absolute_URI">absolute URI</a>: <a href="#section_2.2">Section 2.2, <em>RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</em></a></li><li><a href="#definition_application_information">application information</a>: <a href="#section_2.8">Section 2.8, <em>NIEM Naming and Design Rules</em></a></li><li><a href="#definition_attribute">attribute</a>: <a href="#section_2.5">Section 2.5, <em>XML Information Set</em></a></li><li><a href="#definition_attribute_declaration">attribute declaration</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_catalog_entry_file">catalog entry file</a>: <a href="#section_2.11">Section 2.11, <em>XML Catalogs</em></a></li><li><a href="#definition_code_list">code list</a>: <a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#definition_code_list_binding">code list binding</a>: <a href="#section_4.3">Section 4.3, <em>Definition of code list binding</em></a></li><li><a href="#definition_code_list_document">code list document</a>: <a href="#section_3.1">Section 3.1, <em>Code list document</em></a></li><li><a href="#definition_code_list_identifier">code list identifier</a>: <a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#definition_code_list_validation_set">code list validation set</a>: <a href="#section_3.6">Section 3.6, <em>Code list validation set</em></a></li><li><a href="#definition_code_list-enabled_instance_document">code list-enabled instance document</a>: <a href="#section_3.5">Section 3.5, <em>Code list-enabled instance document</em></a></li><li><a href="#definition_code_list-enabled_schema_document">code list-enabled schema document</a>: <a href="#section_3.4">Section 3.4, <em>Code list-enabled schema document</em></a></li><li><a href="#definition_code_lists_instance_namespace">code lists instance namespace</a>: <a href="#section_2.4">Section 2.4, <em>XML Namespaces</em></a></li><li><a href="#definition_code_lists_schema_appinfo_namespace">code lists schema appinfo namespace</a>: <a href="#section_2.4">Section 2.4, <em>XML Namespaces</em></a></li><li><a href="#definition_code_value">code value</a>: <a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#definition_column">column</a>: <a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#definition_column_identifier">column identifier</a>: <a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#definition_column_name">column name</a>: <a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#definition_complex_type_definition">complex type definition</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_conformance_target">conformance target</a>: <a href="#section_2.7">Section 2.7, <em>Conformance Targets Attribute Specification</em></a></li><li><a href="#definition_conformance_target_identifier">conformance target identifier</a>: <a href="#section_2.7">Section 2.7, <em>Conformance Targets Attribute Specification</em></a></li><li><a href="#definition_CSV_code_list_document">CSV code list document</a>: <a href="#section_3.3">Section 3.3, <em>CSV code list document</em></a></li><li><a href="#definition_CSV_column_name">CSV column name</a>: <a href="#section_2.10">Section 2.10, <em>RFC 4180: Comma-separated values (CSV) files</em></a></li><li><a href="#definition_CSV_field">CSV field</a>: <a href="#section_2.10">Section 2.10, <em>RFC 4180: Comma-separated values (CSV) files</em></a></li><li><a href="#definition_CSV_file">CSV file</a>: <a href="#section_2.10">Section 2.10, <em>RFC 4180: Comma-separated values (CSV) files</em></a></li><li><a href="#definition_CSV_header">CSV header</a>: <a href="#section_2.10">Section 2.10, <em>RFC 4180: Comma-separated values (CSV) files</em></a></li><li><a href="#definition_CSV_record">CSV record</a>: <a href="#section_2.10">Section 2.10, <em>RFC 4180: Comma-separated values (CSV) files</em></a></li><li><a href="#definition_derived">derived</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_distinct_entry">distinct entry</a>: <a href="#section_2.9">Section 2.9, <em>Code Lists</em></a></li><li><a href="#definition_effective_conformance_target_identifier">effective conformance target identifier</a>: <a href="#section_2.7">Section 2.7, <em>Conformance Targets Attribute Specification</em></a></li><li><a href="#definition_element">element</a>: <a href="#section_2.5">Section 2.5, <em>XML Information Set</em></a></li><li><a href="#definition_element_declaration">element declaration</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_entity_catalog">entity catalog</a>: <a href="#section_2.11">Section 2.11, <em>XML Catalogs</em></a></li><li><a href="#definition_exclusive_lower_bound">exclusive lower bound</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_exclusive_upper_bound">exclusive upper bound</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_Genericode_code_list_document">Genericode code list document</a>: <a href="#section_3.2">Section 3.2, <em>Genericode code list document</em></a></li><li><a href="#definition_inclusive_lower_bound">inclusive lower bound</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_inclusive_upper_bound">inclusive upper bound</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_local_context">local context</a>: <a href="#section_2.11">Section 2.11, <em>XML Catalogs</em></a></li><li><a href="#definition_locally-resolved_resource">locally-resolved resource</a>: <a href="#section_2.11">Section 2.11, <em>XML Catalogs</em></a></li><li><a href="#definition_normalized_value">normalized value</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_resolve">resolve</a>: <a href="#section_2.11">Section 2.11, <em>XML Catalogs</em></a></li><li><a href="#definition_resource">resource</a>: <a href="#section_2.2">Section 2.2, <em>RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</em></a></li><li><a href="#definition_schema_component">schema component</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_schema_document">schema document</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_schema-valid">schema-valid</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_simple_type_definition">simple type definition</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_substitution_group">substitution group</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_text">text</a>: <a href="#section_2.5">Section 2.5, <em>XML Information Set</em></a></li><li><a href="#definition_type_definition">type definition</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_uniform_resource_identifier">uniform resource identifier</a>: <a href="#section_2.2">Section 2.2, <em>RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</em></a></li><li><a href="#definition_URI">URI</a>: <a href="#section_2.2">Section 2.2, <em>RFC 3986: Uniform Resource Identifier (URI): Generic Syntax</em></a></li><li><a href="#definition_XML_document">XML document</a>: <a href="#section_2.3">Section 2.3, <em>XML</em></a></li><li><a href="#definition_XML_Schema">XML Schema</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_XML_Schema_definition_language">XML Schema definition language</a>: <a href="#section_2.6">Section 2.6, <em>XML Schema</em></a></li><li><a href="#definition_XML_Schema_document_set">XML Schema document set</a>: <a href="#section_2.8">Section 2.8, <em>NIEM Naming and Design Rules</em></a></li></ul></div><div class="section"><div class="heading"><a name="index-of-rules"></a><a name="appendix_G"></a>Appendix G. Index of rules</div><ul><li><a href="#rule_3-1">Rule 3-1, <em>Code list-enabled schema document has conformance target</em> (XSD)</a>: <a href="#section_3.4">Section 3.4, <em>Code list-enabled schema document</em></a></li><li><a href="#rule_3-2">Rule 3-2, <em>Document with conformance target is a code list-enabled schema document</em> (VSET)</a>: <a href="#section_3.4">Section 3.4, <em>Code list-enabled schema document</em></a></li><li><a href="#rule_4-1">Rule 4-1, <em>Content in the <q>cli</q> namespace conforms to schema</em> (INS)</a>: <a href="#section_4.4.1">Section 4.4.1, <em>Syntax for run-time code list binding</em></a></li><li><a href="#rule_4-2">Rule 4-2, <em>Code list URI is an absolute URI</em> (INS)</a>: <a href="#section_4.4.1">Section 4.4.1, <em>Syntax for run-time code list binding</em></a></li><li><a href="#rule_4-3">Rule 4-3, <em>Column identifier accompanied by code list identifier</em> (INS)</a>: <a href="#section_4.4.1">Section 4.4.1, <em>Syntax for run-time code list binding</em></a></li><li><a href="#rule_4-4">Rule 4-4, <em>Constraining indicator accompanied by code list identifier</em> (INS)</a>: <a href="#section_4.4.1">Section 4.4.1, <em>Syntax for run-time code list binding</em></a></li><li><a href="#rule_4-5">Rule 4-5, <em>Effective run-time binding.</em> (INS)</a>: <a href="#section_4.4.2">Section 4.4.2, <em>Run-time effective code list binding</em></a></li><li><a href="#rule_4-6">Rule 4-6, <em>Content in the <q>clsa</q> namespace conforms to schema</em> (XSD)</a>: <a href="#section_4.5.1">Section 4.5.1, <em>Syntax for schema-time code list binding</em></a></li><li><a href="#rule_4-7">Rule 4-7, <em>Elements are <code>xs:appinfo</code> annotations</em> (XSD)</a>: <a href="#section_4.5.1">Section 4.5.1, <em>Syntax for schema-time code list binding</em></a></li><li><a href="#rule_4-8">Rule 4-8, <em>Code list URI is absolute URI</em> (XSD)</a>: <a href="#section_4.5.1">Section 4.5.1, <em>Syntax for schema-time code list binding</em></a></li><li><a href="#rule_4-9">Rule 4-9, <em>Simple code list binding to schema components</em> (XSD)</a>: <a href="#section_4.5.1">Section 4.5.1, <em>Syntax for schema-time code list binding</em></a></li><li><a href="#rule_4-10">Rule 4-10, <em>Complex code list binding to schema components</em> (XSD)</a>: <a href="#section_4.5.1">Section 4.5.1, <em>Syntax for schema-time code list binding</em></a></li><li><a href="#rule_4-11">Rule 4-11, <em>Attribute declaration effective simple binding</em> (VSET)</a>: <a href="#section_4.5.2">Section 4.5.2, <em>Simple binding of schema components</em></a></li><li><a href="#rule_4-12">Rule 4-12, <em>Element declaration effective simple binding</em> (VSET)</a>: <a href="#section_4.5.2">Section 4.5.2, <em>Simple binding of schema components</em></a></li><li><a href="#rule_4-13">Rule 4-13, <em>Type definition effective simple binding</em> (VSET)</a>: <a href="#section_4.5.2">Section 4.5.2, <em>Simple binding of schema components</em></a></li><li><a href="#rule_4-14">Rule 4-14, <em>Element declaration effective complex binding</em> (VSET)</a>: <a href="#section_4.5.3">Section 4.5.3, <em>Complex binding of schema components</em></a></li><li><a href="#rule_4-15">Rule 4-15, <em>Complex type definition effective complex binding</em> (VSET)</a>: <a href="#section_4.5.3">Section 4.5.3, <em>Complex binding of schema components</em></a></li><li><a href="#rule_4-16">Rule 4-16, <em>Matches and validity for a code list binding</em> (VSET)</a>: <a href="#section_4.6">Section 4.6, <em>Matches for code list bindings</em></a></li><li><a href="#rule_4-17">Rule 4-17, <em>Value comparisons based on types</em> (VSET)</a>: <a href="#section_4.6">Section 4.6, <em>Matches for code list bindings</em></a></li><li><a href="#rule_4-18">Rule 4-18, <em>Code list identified by candidate code list identifiers</em> (VSET)</a>: <a href="#section_4.6">Section 4.6, <em>Matches for code list bindings</em></a></li><li><a href="#rule_5-1">Rule 5-1, <em>CSV code list document is a CSV file</em> (CSV-CLD)</a>: <a href="#section_5">Section 5, <em>Comma-separated values (CSV) code lists</em></a></li><li><a href="#rule_5-2">Rule 5-2, <em>CSV code list document has header</em> (CSV-CLD)</a>: <a href="#section_5">Section 5, <em>Comma-separated values (CSV) code lists</em></a></li><li><a href="#rule_5-3">Rule 5-3, <em>CSV column name is not empty</em> (CSV-CLD)</a>: <a href="#section_5">Section 5, <em>Comma-separated values (CSV) code lists</em></a></li><li><a href="#rule_5-4">Rule 5-4, <em>CSV file as a code list document</em> (CSV-CLD)</a>: <a href="#section_5">Section 5, <em>Comma-separated values (CSV) code lists</em></a></li><li><a href="#rule_6-1">Rule 6-1, <em>Genericode code list document defined by Genericode</em> (GC-CLD)</a>: <a href="#section_6">Section 6, <em>Genericode code lists</em></a></li><li><a href="#rule_6-2">Rule 6-2, <em>Document with conformance target is Genericode code list document</em> (VSET)</a>: <a href="#section_6">Section 6, <em>Genericode code lists</em></a></li><li><a href="#rule_6-3">Rule 6-3, <em>Genericode code list document is schema-valid</em> (GC-CLD)</a>: <a href="#section_6">Section 6, <em>Genericode code lists</em></a></li><li><a href="#rule_6-4">Rule 6-4, <em>XML Schema alternate datatypes are treated the same as built in datatypes</em> (GC-CLD)</a>: <a href="#section_6">Section 6, <em>Genericode code lists</em></a></li><li><a href="#rule_6-5">Rule 6-5, <em>Genericode file as a code list document</em> (GC-CLD)</a>: <a href="#section_6">Section 6, <em>Genericode code lists</em></a></li></ul></div></body></html>