index.html
181 KB
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
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><title>W3C XML Schema Definition Language (XSD): Component Designators</title><style type="text/css">
code { font-family: monospace; }
div.constraint,
div.issue,
div.note,
div.notice { margin-left: 2em; }
li p { margin-top: 0.3em;
margin-bottom: 0.3em; }
div.issue {font-weight: bold; color: red}
.out {text-decoration: line-through; background-color: #DB9;}
div.exampleInner pre { margin-left: 1em;
margin-top: 0em; margin-bottom: 0em}
div.exampleOuter {border: 4px double gray;
margin: 0em; padding: 0em}
div.exampleInner { background-color: #d5dee3;
border-top-width: 4px;
border-top-style: double;
border-top-color: #d3d3d3;
border-bottom-width: 4px;
border-bottom-style: double;
border-bottom-color: #d3d3d3;
padding: 4px; margin: 0em }
div.exampleWrapper { margin: 4px }
div.exampleHeader { font-weight: bold;
margin: 4px}
</style><link type="text/css" rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/W3C-CR.css" /></head><body><div class="head"><p><a href="http://www.w3.org/"><img width="72" height="48" alt="W3C" src="http://www.w3.org/Icons/w3c_home" /></a></p>
<h1><a id="title" name="title" />W3C XML Schema Definition Language (XSD): Component Designators</h1>
<h2><a id="w3c-doctype" name="w3c-doctype" />W3C Candidate Recommendation 19 January 2010</h2><dl><dt>This version:</dt><dd>
<a href="http://www.w3.org/TR/2010/CR-xmlschema-ref-20100119/">http://www.w3.org/TR/2010/CR-xmlschema-ref-20100119/</a>
</dd><dt>Latest version:</dt><dd>
<a href="http://www.w3.org/TR/xmlschema-ref/">http://www.w3.org/TR/xmlschema-ref/</a>
</dd><dt>Previous versions:</dt><dd>
<a href="http://www.w3.org/TR/2008/WD-xmlschema-ref-20081117/">http://www.w3.org/TR/2008/WD-xmlschema-ref-20081117/</a>
<a href="http://www.w3.org/TR/2008/WD-xmlschema-ref-20080910/">http://www.w3.org/TR/2008/WD-xmlschema-ref-20080910/</a>
<a href="http://www.w3.org/TR/2005/WD-xmlschema-ref-20050329/">http://www.w3.org/TR/2005/WD-xmlschema-ref-20050329/</a>
<a href="http://www.w3.org/TR/2004/WD-xmlschema-ref-20040716/">http://www.w3.org/TR/2004/WD-xmlschema-ref-20040716/</a>
<a href="http://www.w3.org/TR/2004/WD-xmlschema-ref-20040309/">http://www.w3.org/TR/2004/WD-xmlschema-ref-20040309/</a>
<a href="http://www.w3.org/TR/2003/WD-xmlschema-ref-20030109/">http://www.w3.org/TR/2003/WD-xmlschema-ref-20030109/</a>
</dd><dt>Editors:</dt><dd>Mary Holstege, Mark Logic Corporation</dd><dd>Asir S. Vedamuthu, webMethods (until May 2005)</dd></dl><p>This document is also available in these non-normative formats: <a href="scds.xml">XML</a>.</p><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 2010 <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p></div><hr /><div>
<h2><a id="abstract" name="abstract" />Abstract</h2><p>XML Schema: Component Designators defines a scheme for identifying XML
Schema components as specified by
<a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">XML Schema Part 1: Structures</a> and
<a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">XML Schema Part 2: Datatypes</a>.
</p></div><div>
<h2><a id="status" name="status" />Status of this Document</h2><p><em>This section describes the status of this document at the
time of its publication. Other documents may supersede this document.
A list of current W3C publications and the latest revision of this
technical report can be found in the
<a href="http://www.w3.org/TR/">W3C technical reports index</a> at
http://www.w3.org/TR/.</em></p><p>
<span>
This W3C Candidate Recommendation specified W3C XML Schema Definition Language
(XSD) Component Designators. It is here made available for review by W3C
members and the public. </span>
It has been
produced by the <a href="http://www.w3.org/XML/Schema">W3C XML Schema Working
Group</a> (WG) as part of the <a href="http://www.w3.org/XML/Activity">XML Activity</a>.
It incorporates all Working Group decisions through
2008-10-31.
It has been reviewed by the Working Group and the Working Group has agreed to
publication as a Last Call Working Draft.
</p><p>
The <span>Candidate Recommendation</span> review period for this document extends until <span>1 March 2010</span>.
Comments on this document should be made in
W3C's public installation of Bugzilla, specifying "XML Schema" as the
product. Instructions can be found at <a href="http://www.w3.org/XML/2006/01/public-bugzilla">http://www.w3.org/XML/2006/01/public-bugzilla</a>. If access to
Bugzilla is not feasible, please send your comments to the W3C XML
Schema comments mailing list, <a href="mailto:www-xml-schema-comments@w3.org">www-xml-schema-comments@w3.org</a>
(<a href="http://lists.w3.org/Archives/Public/www-xml-schema-comments/">archive</a>).
Each Bugzilla entry and email message should contain only one
comment.</p><p>
Any feature mentioned as a "feature at risk" may be retained as is or dropped,
depending on the feedback received from readers, schema authors, schema users,
and implementors. The only feature at risk is support for axes and components
that are dependent on the XML Schema 1.1 component model rather than the
XML Schema 1.0 component model.
</p><p>Publication as a <span>Candidate Recommendation</span> does not imply endorsement by the W3C
Membership. This is a draft document and may be updated, replaced or obsoleted
by other documents at any time. It is inappropriate to cite this document as
other than work in progress.</p><p>
The W3C XML Schema Working Group intends to request advancement of this
specification and publication as a Proposed Recommendation (possibly with
editorial changes, and possibly removing features identified as being at risk)
as soon after 1 March 2010 as the exit criteria for the current
phase have been met.
</p><p>
This specification does not define any criteria for conformance and relies on
other specifications to specify criteria for conformance of implementations.
Nevertheless a <a href="http://dev.w3.org/2009/xmlschema-ref-test-suite/">test suite</a> is under development that
identifies the set of canonical schema component paths that should be generated
for particular test schemas, and that relates certain non-canonical component
paths to the corresponding canonical schema component paths.
</p><p>
The W3C XML Schema Working Group has agreed on the following specific CR exit criteria:
</p><ul><li><p>A test suite is available which provides cases for each
axis and component
type, both for the XML Schema 1.0 component model and the XML Schema 1.1
component model.</p></li><li><p>Generation or interpretation of canonical schema component
paths have been
implemented successfully by at least two independent implementations.</p></li><li><p>Generation or interpretation of each axis and component for
non-canonical
schema component paths has been implemented successfully by at least two
independent implementations.</p></li><li><p>The Working Group has responded formally to all issues
raised against this
document during the Candidate Recommendation period. </p></li></ul><p>At the time this Candidate Recommendation was published, no
interoperability or implementation report had yet been prepared.
</p><p>This document has been produced by the W3C XML Schema Working Group as part of
the W3C XML Activity. The authors of this document are the members
of the XML Schema Working Group.
</p><p>The following changes were made since the last public Working Draft:</p><ul><li><p>As resolution for issue <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=6450">6450</a>: make EBNF for Predicate more precise.</p></li><li><p>As resolution for issue <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=6451">6451</a>: clarify that predicate
counting starts at 1.</p></li><li><p>As resolution for issue <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=6452">6452</a>: Make the rules such that
unprefixed axis names are in no null namespace and are reserved,
that the component kinds are part of a the namespace
"http://www.w3.org/2009/xmlschema-ref", and redefine
component-kind() to be returning expanded names.</p></li></ul><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February
2004 W3C Patent Policy</a>. W3C maintains a <a href="http://www.w3.org/2004/01/pp-impl/19482/status">public list of
any patent disclosures</a> made in connection with the deliverables
of the group; that page also includes instructions for disclosing a
patent. An individual who has actual knowledge of a patent which the
individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance
with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.
</p></div><div class="toc">
<h2><a id="contents" name="contents" />Table of Contents</h2><p class="toc">1 <a href="#section-introduction">Introduction (Non-Normative)</a><br />
2 <a href="#section-goals">Goals and Use Cases (Non-Normative)</a><br />
2.1 <a href="#section-requirements">Requirements</a><br />
2.2 <a href="#section-usecases">Use Cases</a><br />
3 <a href="#section-scds">Schema Component Designators</a><br />
3.1 <a href="#section-scd-syntax">Schema Component Designator Syntax</a><br />
3.2 <a href="#section-canonical">Canonical Schema Component Designators</a><br />
3.3 <a href="#section-equality">Equality of Schema Component Designators</a><br />
4 <a href="#section-path">Schema Component Paths</a><br />
4.1 <a href="#section-path-traversal">Schema Component Graph Traversal</a><br />
4.2 <a href="#section-path-syntax">Schema Component Path Syntax</a><br />
4.3 <a href="#section-path-interpret">Interpretation of Schema Component Paths</a><br />
4.4 <a href="#section-axis">Schema Component Path Axes</a><br />
4.5 <a href="#section-accessors">Accessors</a><br />
4.6 <a href="#section-canonical-path">Canonical Schema Component Paths</a><br />
4.7 <a href="#section-equality-path">Equality of Schema Component Paths</a><br />
5 <a href="#section-conformance">Conformance</a><br />
5.1 <a href="#scp-conformance">Schema Component Path Conformance</a><br />
5.2 <a href="#scds-conformance">Schema Component Designator Conformance</a><br />
5.3 <a href="#N1136D">Extensibility</a><br />
6 <a href="#section-example">Examples (Non-Normative)</a><br />
6.1 <a href="#section-primer-example">Extended Primer Example</a><br />
6.2 <a href="#section-example-more">Additional Examples</a><br />
6.3 <a href="#section-examples-abbreviations">Examples with component and elided-component Axes (Non-Normative)</a><br />
</p>
<h3><a id="appendices" name="appendices" />Appendices</h3><p class="toc">A <a href="#properties">Schema Component Properties (Non-Normative)</a><br />
B <a href="#axis-summary">Summary of Component Axes (Non-Normative)</a><br />
C <a href="#normative-glossary">Glossary (Non-Normative)</a><br />
D <a href="#references">References</a><br />
D.1 <a href="#N11ED1">Normative References</a><br />
D.2 <a href="#N11FE7">Non-normative Informational References</a><br />
</p></div><hr /><div class="body"><div class="div1">
<h2><a id="section-introduction" name="section-introduction" />1 Introduction (Non-Normative)</h2><p>This document defines a system for designating XML Schema components. Part 1
of the W3C XML Schema Definition Language (XSD) recommendation
<a href="#xsd1">[XSD1]</a> defines these
schema components.
<a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#concepts-data-model">Section 2.2</a>
lays out the inventory of schema components into
three classes:
</p><ul><li><p>Primary components: simple and complex type definitions, attribute
declarations, and element declarations</p></li><li><p>Secondary components: attribute and model group definitions,
identity-constraint definitions, and notation declarations</p></li><li><p>"Helper" components: annotations, model groups, particles, wildcards, and
attribute uses</p></li></ul><p>In addition there is a master schema component, the schema component
representing the schema as a whole. This component will be
referred to as the schema description component in this specification.
</p><p>Finally, there are schema components for the facets defined in Part 2 of the
W3C XML Schema Definition Language (XSD)
recommendation <a href="#xsd2">[XSD2]</a>:</p><ul><li><p><a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#rf-fund-facets">Fundamental Facets</a>: ordered, bounded, cardinality, numeric</p></li><li><p><a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#rf-facets">Constraining Facets</a>: whiteSpace, minInclusive, maxInclusive, minExclusive,
maxExclusive, totalDigits, fractionDigits, length, minLength, maxLength,
pattern, enumeration
</p></li></ul><p>Version 1.1 of the W3C XML Schema Definition Language (XSD)
recommendation
<a href="#xsd11_1">[XSD11_1]</a><a href="#xsd11_2">[XSD11_2]</a> adds additional components and
makes modifications to existing components, as well as introducing the notion
of "property records" to capture more complex structured values.
</p><p>At first blush, a QName (prefix:localname) may seem sufficient to the
task of designating any schema component.
This is not the case for various
reasons:
</p><ol class="enumar"><li><p>A QName is only meaningful in the context of particular namespace
bindings so that the QName can be resolved to a particular
<a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a>, i.e. a {namespace name, local name}
pair.
</p></li><li><p>The same <a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a> can be used in a particular schema to refer
to an
element declaration, an attribute declaration, a complex type or
simple type definition, a model group definition, an attribute group
definition, an identity constraint definition, and a notation declaration.
</p></li><li><p>Locally scoped element and attribute declarations cannot
necessarily be uniquely
named by an <a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a>.
</p></li><li><p>Anonymous type definitions have no
<a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a>, or they have an
<a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a> that
may vary with the
particular schema processor interpreting the schema.
</p></li><li><p>Certain schema components (annotation,
particle, wildcard) are invariably subordinate to
some other schema component, and
have no name of their own.</p></li><li><p>Certain schema components (attribute use and model group)
are subordinate to some other schema component, and any name they might be
construed to have is a reference to some other schema component (attribute
declaration and model group definition, respectively).
</p></li><li><p>The schema
description schema component has no name at all.</p></li></ol><p>A key technical challenge to obtaining a useful
system of naming XML Schema components is to address these issues or decide
that certain cases need not be addressed. In particular:
</p><ol class="enumar"><li><p>Designators must either include full <a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a>, or define
namespace bindings.</p></li><li><p>Designators must distinguish named components in
different symbol spaces from one another.</p></li><li><p>Designators must provide a means of distinguishing locally scoped
element and attribute declarations with the same name.</p></li><li><p>Designators must provide for any designatable unnamed components, such
as anonymous type definitions, wildcards, and the
schema
description
component.</p></li><li><p>Designators must function in the face of redefinitions.</p></li></ol><p>The schema description schema component may represent the amalgamation of
several distinct schema documents, or none at all. It may be associated with
any number of target namespaces, including none at all. It may have been
obtained for a particular schema assessment episode by de-referencing URIs given
in schemaLocation attributes, or by an association with the target namespace or
by some other application-specific means. In short, there are substantial
technical challenges to defining a reliable designator for the
schema description, particularly if that designator is expected to serve as a
starting point for the other components encompassed by that schema.
</p><p>This specification divides the problem of constructing schema component
designators into two parts: defining a designator for an assembled schema, and
defining a designator for a particular schema component or schema components,
understood relative to a designated schema. The first task
is discussed in <a href="#section-scds"><b>3 Schema Component Designators</b></a>, although this specification does
not define a specific rule for how to construct a single URI for an assembled
schema. The second task is addressed in detail
in <a href="#section-path"><b>4 Schema Component Paths</b></a>.
</p></div><div class="div1">
<h2><a id="section-goals" name="section-goals" />2 Goals and Use Cases (Non-Normative)</h2><div class="div2">
<h3><a id="section-requirements" name="section-requirements" />2.1 Requirements</h3><dl><dt class="label">Basic Functionality</dt><dd><ol class="enumar"><li><p>
Each component should have at least one unambiguous designator
that designates that component and no other. However, certain
abbreviation and wildcarding constructs may designate collections
of components.
</p></li><li><p>It should be possible to designate any schema component within a
schema. However, some exceptions will be made for certain of the helper
components.
</p></li><li><p>Designators should provide (or assure) a URI for the unique identification of a schema.
</p></li><li><p>If there is more than one designator for a construct, there should be
exactly one canonical form of the designator.</p></li><li><p>Designators should be usable for either the XML Schema
1.0 or the XML Schema 1.1 component model
</p></li></ol></dd><dt class="label">Properties of the Designator</dt><dd><ol class="enumar"><li><p>Designators should be human-readable.</p></li><li><p>Given a designator, it should be possible to get the <a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a> for the
designated component, if one exists for that component.
</p></li><li><p>It should be possible to
generate
the canonical designator for each component
algorithmically and consistently,
either against an assembled
schema or as the schema is assembled.</p></li><li><p>Designators should be parsable with compositional semantics (or, in
other words, they should have <em>expressive notation</em>).</p></li><li><p>There should be a formal specification of what constitutes a legal designator.</p></li></ol></dd><dt class="label">Compatibility</dt><dd><ol class="enumar"><li><p>Designators should be URI references.</p></li><li><p>Designators should work well in a RDDL environment.</p></li></ol></dd><dt class="label">Non-goals</dt><dd><ol class="enumar"><li><p>It is not a requirement to designate particle components as distinct
from terms.</p></li><li><p>It is not a requirement that it be possible to
construct designators to refer to arbitrary schema components without any
knowledge of schema internals.</p></li><li><p>It is not a requirement to be able to tell, from a schema component
designator for an element declaration, whether instances of that element
declaration must appear in document instances with qualified or unqualified
names.</p></li><li><p>It is not a requirement that it be
possible to uniquely assign schema
component designators
(element, attribute, and type designators) to information
items in a document instance given only a set of schema component
designators.
</p></li></ol></dd></dl></div><div class="div2">
<h3><a id="section-usecases" name="section-usecases" />2.2 Use Cases</h3><dl><dt class="label">Type references</dt><dd><p>In general Schema Component Designators can be used to provide references to
arbitrary types, whether they are named global types or local or anonymous
types. These use cases all benefit from being able to refer to any type
declaration.</p><ul><li><p>Describing the type of an expression, where the type might be an
anonymous or local type and a QName is therefore inadequate.
There are a number of examples
where this could be valuable in type-aware languages that operate on
schema-validated XML:
</p><ul><li><p>Naming the type of something that has been selected.
</p></li><li><p>For use wherever types are named, for example to specify a type in
a query expression.</p></li><li><p>Enabling interfaces like those described
in <a href="#dom3">[DOM3]</a>
to expose anonymous types.</p></li></ul></li><li><p>Identifying types for casting, specifically wrt anonymous
and local types.</p></li><li><p>Identifying types for function signatures.
</p></li></ul></dd><dt class="label">Element declaration references</dt><dd><p>These use cases benefit from being able to refer to any element declaration.
</p><ul><li><p>Referring to a local element declaration, with or without
knowledge of the names of the scoping types and elements.
</p></li></ul></dd><dt class="label">Stand-off schema annotation</dt><dd><p>Schema component designators can be used to refer to specific parts of a
schema to provide an out-of-band annotation capability, for commentary, error
reporting, or the association of layered semantics with schema components.
</p><ul><li><p>Writing error messages. There are two classes of error messages in
view: errors in an instance and errors in the schema. For example, if an
instance has a quantity which violates the constraints of a particular type,
such as a range constraint, it is valuable for the error message to be able to
name and refer to the specific type whose constraints were violated, even if
that is the anonymous type of a local element
declaration. An example of a schema
error would be that one type is not a valid restriction of another type.
This use case benefits from being able to name and refer to type, element, and
attribute declarations, as well as element and attribute uses, groups, and
possibly facets and particles. It is unclear whether being able to
refer separately
to particles versus groups is important. Being able to
refer separately
to attribute and element uses versus attribute and element declarations may be
important.
</p></li><li><p>Schema documentation. The transfer syntax for W3C XML Schema allows
for documentation to be attached to components in-line. In many cases it may
be preferable to keep the documentation separate from the active definitions,
to save bandwidth, to provide for alternative documentation for different
communities, and so on. Being able to refer to any schema component that can
support an annotation (all but annotation itself) supports this use case.
</p></li><li><p>Commentary on schemas, such as best practices documents, reviews and
comparisons of particular schemas, and so on.
</p></li><li><p>Associating an additional layer of semantics with schema
components, for example, providing information to programming language or
application environments to identify code to execute. For example, certain
XML data binding frameworks today reference complex types and elements using
their own path syntax for the purpose.
</p></li></ul></dd><dt class="label">Miscellaneous text-based uses within schema-based tools</dt><dd><p>Having a simple textual way to refer to the abstract components of a schema
enables certain kinds of text-based schema-related processing.</p><ul><li><p>A tool that creates interlinked HTML pages describing a schema.</p></li><li><p>String-based tests of type equivalence. Such tests can be used for
comparing serialized PSVIs to provide for interoperable tests of type
equivalence and processor comparisons.
</p></li><li><p>String-based comparisons of processors generally, making it
possible, for example, to ask and
answer the question "Did two validations of the same document on
different machines use the same type for a given element?"
</p></li><li><p>input/output</p></li><li><p>user reports</p></li><li><p>glue/interfaces</p></li></ul></dd><dt class="label">Other</dt><dd><ul><li><p>Simple selection queries, such as "the type that is the base
type of X" without knowledge of its name.</p></li><li><p>Creation or initial drafting of a new schema or schema document by
selecting components from existing schema.
</p></li><li><p>Using XSD simple types as the
datatype of RDF literals.</p></li><li><p>Describing XSD Components
within RDF, including
the use of XSD simple types as RDF
classes.</p></li><li><p>
Formal description requires unique identifier for each declaration and
definition component used within the context of the validation episode.
</p></li><li><p>Enumerating dependencies among schema components. For example, where
one complex type restricts another, the local elements in one depend on the
local elements of the other.</p></li></ul></dd></dl></div></div><div class="div1">
<h2><a id="section-scds" name="section-scds" />3 Schema Component Designators</h2><p>Schema component designators rely on a layered model of schema
component reference. Schema component paths designate components in the context
of a particular schema assembly and depend on a namespace
binding context.
Full blown schema designators consist of two parts: a URI
without a fragment identifier part, which identifies the schema, and a
fragment identifier which encapsulates a schema component path to designate a
set of components in the context of that schema.
Schema component paths may be used in contexts other than
schema component designators, given appropriate specification of the namespace
binding context and the target schema.
</p><p>This section describes schema component designators as a whole. The details
of schema component paths are described in <a href="#section-path"><b>4 Schema Component Paths</b></a>.</p><p>[<a title="schema designator" id="key-sd" name="key-sd">Definition</a>: A <b>schema
designator</b> is a single URI for a resource representing an
assembled schema.]
</p><p>Many possible conventions for obtaining a single URI to refer to a schema
are possible.
In the simplest case, where there is one root schema document, the URI of
that document suffices. In other cases a schema may have been assembled from
multiple schema documents, or from components obtained via other
representations, and some
representation of that collection or of the assembled results will be required.
</p><p>We expect that it will be
highly desirable for the community to evolve one convention for referring
to an assembled schema to
ensure consistency of global schema component designators. This specification
declines to specify what that one way should be.
</p><div class="note"><p class="prefix"><b>Note:</b></p><p>
Like any resource, the schema denoted by a URI may be
represented in a variety of forms, with different media types. When a URI is
dereferenced, the form and resolution of any fragment identifier depend (as
specified by <a href="#rfc3986">[RFC 3986]</a>) on the media type of the representation
obtained.
The representation of a resource obtained by dereferencing a schema URI
must therefore allow for the fragment identifier
syntax defined here in order for schema component
designators to successfully resolve to components.
Whatever representation of a schema is used,
the media type should allow for the fragment identifier syntax defined here.
This will be true for any XML representation of the schema, since the XPointer
framework <a href="#xptrframework">[XPTR]</a> is defined for all XML media
types. Other media types must explicitly specify a compatible fragment
identifier syntax.
</p></div><p>The schema component reference core defines reference to a schema component
in the context of an assembled XML Schema. <a href="#section-path"><b>4 Schema Component Paths</b></a>
defines this
relationship between an assemblage of schema components and component paths.
Schema assembly is described in
<a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#composition">Section
4 of XML Schema Part 1: Structures</a>.
</p><p>For the purposes of component paths, a
missing component
(see <a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#conformance-missing">
Section 5.3 of XML Schema Part 1: Structures</a>)
cannot be used to
construct a valid path; nor can a schema component be successfully referenced
through a path that references a missing component.
</p><p>[<a title="absolute schema component designator" id="key-scd" name="key-scd">Definition</a>: An
<b>absolute schema component designator</b> identifies
a particular schema component; it
consists of two parts: a designator
for the assembled schema (a <a title="schema designator" href="#key-sd">schema designator</a>), and a designator for a
particular schema component or schema components relative (a <a title="relative schema component designator" href="#key-relative-scd">relative
schema component designator</a>) to that assembled schema.]
</p><p>Syntactically, the first part is a URI without a fragment
identifier, and the second part
is an XPointer fragment identifier. An absolute schema component designator
therefore is a URI reference.
For example:
http://example.org/schemas/po.xsd#xscd(/type::purchaseOrderType)
</p><p>
Note that a schema component designator may contain Unicode characters
that are not allowed in URIs. Any such characters must be encoded and escaped
to obtain a URI suitable for retrieval, if retrieval is required.
</p><p>[<a title="relative schema component designator" id="key-relative-scd" name="key-relative-scd">Definition</a>: A
<b>relative schema component designator</b>
identifies a particular schema component relative to
some current assembled schema; it
is expressed as an <a href="http://www.w3.org/TR/xptr-framework/#scheme">XPointer scheme</a>
<code> xscd()</code> that uses a <a title="schema component path" href="#key-scp">schema component path</a>
as the <a href="http://www.w3.org/TR/xptr-framework/#NT-SchemeData">scheme data</a>.] This
XPointer scheme may be used in combination with the
<a href="http://www.w3.org/TR/xptr-xmlns/#NT-XmlnsSchemeData"><span>XPointer
<code>xmlns()</code> scheme</span></a>
<a href="#xptrxmlns">[XPTR XMLNS]</a>.
It is not
designed to be used in
combination with other XPointer schemes.
The construction and syntax of schema component paths are described in
<a href="#section-path"><b>4 Schema Component Paths</b></a>.
</p><div class="div2">
<h3><a id="section-scd-syntax" name="section-scd-syntax" />3.1 Schema Component Designator Syntax</h3>
<h5><a id="N1034B" name="N1034B" />EBNF</h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-SchemaComponentDesignator" name="NT-SchemaComponentDesignator" />[1] </td><td><code>SchemaComponentDesignator</code></td><td> ::= </td><td><code><a href="#NT-AbsoluteSchemaComponentDesignator">AbsoluteSchemaComponentDesignator</a> |
<a href="#NT-RelativeSchemaComponentDesignator">
RelativeSchemaComponentDesignator</a></code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-AbsoluteSchemaComponentDesignator" name="NT-AbsoluteSchemaComponentDesignator" />[2] </td><td><code>AbsoluteSchemaComponentDesignator</code></td><td> ::= </td><td><code><a href="#NT-SchemaDesignator">SchemaDesignator</a> '#'
<a href="#NT-RelativeSchemaComponentDesignator">
RelativeSchemaComponentDesignator</a></code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-SchemaDesignator" name="NT-SchemaDesignator" />[3] </td><td><code>SchemaDesignator</code></td><td> ::= </td><td><code><a href="#NT-AnyURI">AnyURI</a></code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-AnyURI" name="NT-AnyURI" />[4] </td><td><code>AnyURI</code></td><td> ::= </td><td><code><a href="http://www.w3.org/TR/xml/#NT-Char">Char</a>*</code></td><td><i>/* IRI reference: no fragment identifier */</i></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-RelativeSchemaComponentDesignator" name="NT-RelativeSchemaComponentDesignator" />[5] </td><td><code>RelativeSchemaComponentDesignator</code></td><td> ::= </td><td><code><a href="#NT-XmlnsPointerPart">XmlnsPointerPart</a>*
<a href="#NT-XscdPointerPart">XscdPointerPart</a>
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-XmlnsPointerPart" name="NT-XmlnsPointerPart" />[6] </td><td><code>XmlnsPointerPart</code></td><td> ::= </td><td><code>
'xmlns' '(' <a href="http://www.w3.org/TR/xptr-xmlns/#NT-XmlnsSchemeData">XmlnsSchemeData</a> ')'
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-XscdPointerPart" name="NT-XscdPointerPart" />[7] </td><td><code>XscdPointerPart</code></td><td> ::= </td><td><code>'xscd' '(' <a href="#NT-SchemaComponentPath">SchemaComponentPath</a> ')'
</code></td></tr></tbody></table></div><div class="div2">
<h3><a id="section-canonical" name="section-canonical" />3.2 Canonical Schema Component Designators</h3><p>[<a title="canonical schema component designator" id="key-canonical-scd" name="key-canonical-scd">Definition</a>:
A <b>canonical schema component designator</b>
is an absolute schema component designator that is a URI
that has been mapped from a LEIRI to an IRI in accordance
with the rules given in <a href="#leiri">[LEIRI]</a>, mapped from an IRI to a URI in
accordance with
the rules given in RFC 3987<a href="#rfc3987">[RFC 3987]</a>, and
normalized according to the rules of
syntax-based normalization given there;
and where the relative schema component designator consists of an
<code>xmlns</code> XPointer pointer part (if required) followed
by a <a title="canonicalized xscd XPointer pointer part" href="#key-canonicalized-xscd"><span>canonicalized <code>xscd</code> XPointer pointer part</span></a>.
]</p><p>
[<a title="canonicalized xscd XPointer pointer part" id="key-canonicalized-xscd" name="key-canonicalized-xscd">Definition</a>:
A <b><span>canonicalized <code>xscd</code> XPointer pointer part</span></b> is
an <code>xscd</code> XPointer pointer part whose
pointer data is a canonical schema
component path.
]
</p></div><div class="div2">
<h3><a id="section-equality" name="section-equality" />3.3 Equality of Schema Component Designators</h3><p>Many use cases for schema component designators call for them to be compared
for equality. A simple string comparison
may fail to correctly recognize equivalent
designators
with this scheme
because namespace prefixes may vary. However, comparison is still
straightforward.
</p><p>[<a title="schema component designators are equal" id="key-equal-scd" name="key-equal-scd">Definition</a>: Two
<b>schema component designators are equal</b> if they are absolute
and their URIs are equal or if they are relative to the
same schema, and their <a title="schema component paths are equal" href="#key-equal-path">schema component paths are
equal</a>.]
</p></div></div><div class="div1">
<h2><a id="section-path" name="section-path" />4 Schema Component Paths</h2><p>An assembled schema forms a rooted graph of
schema components and property records, where
certain schema component and property record
properties contain other schema components and property
records as their
values (or part of their values). The graph arcs are
directed and
labelled. The graph may have cycles in it.
Schema component paths can be regarded as being
constructed step-by-step by traversing the schema component properties,
starting at the schema description schema component. Within this graph there may
be more than one path to a particular schema component.
This section describes
how paths are interpreted, and then
defines which paths are the canonical
ones.
</p><p>For the purposes of schema component paths, presume the
existence of an {identity constraint definitions} property of
the schema description component whose value is the union of all identity
constraint components in the assembled schema.
The XML Schema 1.1 specification defines
this property.
</p><div class="div2">
<h3><a id="section-path-traversal" name="section-path-traversal" />4.1 Schema Component Graph Traversal</h3><p>An assembled schema consists of a graph of schema components.
Schema property records and helper components are included
in the graph, but a schema component path never refers to them. Traversal
in the graph passes <em>through</em> property records.
A schema component property that has other schema
components as its value
or as part of its value creates links in the graph which may be traversed
through one of the defined axes to construct a schema component path.
</p><p>[<a title="arc" id="key-arc" name="key-arc">Definition</a>: A traversal from one component to another
takes place across some particular component property. This property is
the <b>arc</b> of traversal.
]</p><p>[<a title="default arc" id="key-default-arc" name="key-default-arc">Definition</a>: A <b>default
arc</b> is a privileged
arc of traversal.
]
The default arcs are:
</p><blockquote><p>{type definition}<br />{content type}<br />{particle}<br />{simple type definition}<br />{attribute declaration}<br />{attribute uses}<br />{model group}<br />{particles}<br />{term}<br />{element declarations}<br />{facets}</p></blockquote><p><a href="#properties"><b>A Schema Component Properties (Non-Normative)</b></a> includes a summary of which
arcs act
as defaults and when.</p></div><div class="div2">
<h3><a id="section-path-syntax" name="section-path-syntax" />4.2 Schema Component Path Syntax</h3><div class="div3">
<h4><a id="section-scd-namespaces" name="section-scd-namespaces" />4.2.1 Namespaces</h4><p>The schema component axes defined in this document are considered to be
names in no namespace. They are always unprefixed and their names are
considered reserved. That is: no extension axis is permitted to have the
same expanded name as any of the component axes specifically enumerated in
<a href="#NT-Axis">Axis</a> production.</p><p>The schema component kinds defined in this document are contained in the
namespace with the URI <code>http://www.w3.org/2009/xmlschema-ref</code>,
which for the purposes of this specification is taken to be bound to the
prefix <code>xscd</code>.
</p></div><div class="div3">
<h4><a id="section-path-ebnf" name="section-path-ebnf" />4.2.2 EBNF for Schema Component Path Syntax</h4>
<h5><a id="N10443" name="N10443" />Path EBNF</h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-SchemaComponentPath" name="NT-SchemaComponentPath" />[8] </td><td><code>SchemaComponentPath</code></td><td> ::= </td><td><code>( <a href="#NT-SchemaStep">SchemaStep</a> |
<a href="#NT-StepSeparator">StepSepator</a>
<a href="#NT-RelativeSchemaComponentPath">RelativeSchemaComponentPath</a> ) ('/' <a href="#NT-ExtensionAccessor">ExtensionAccessor</a>)?
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-SchemaStep" name="NT-SchemaStep" />[9] </td><td><code>SchemaStep</code></td><td> ::= </td><td><code>'/'</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-RelativeSchemaComponentPath" name="NT-RelativeSchemaComponentPath" />[10] </td><td><code>RelativeSchemaComponentPath</code></td><td> ::= </td><td><code><a href="#NT-Step">Step</a> |
<a href="#NT-Step">Step</a>
<a href="#NT-StepSeparator">StepSeparator</a>
<a href="#NT-RelativeSchemaComponentPath">RelativeSchemaComponentPath</a>
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-StepSeparator" name="NT-StepSeparator" />[11] </td><td><code>StepSeparator</code></td><td> ::= </td><td><code>'/' |
<a href="#NT-ComponentAxisSeparator">ComponentAxisSeparator</a>
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-ComponentAxisSeparator" name="NT-ComponentAxisSeparator" />[12] </td><td><code>ComponentAxisSeparator</code></td><td> ::= </td><td><code>'//'</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-Step" name="NT-Step" />[13] </td><td><code>Step</code></td><td> ::= </td><td><code><a href="#NT-Axis">Axis</a>
<a href="#NT-NameTest">NameTest</a>
<a href="#NT-Predicate">Predicate</a>? |
<a href="#NT-AbbrevStep">AbbrevStep</a>
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-AbbrevStep" name="NT-AbbrevStep" />[14] </td><td><code>AbbrevStep</code></td><td> ::= </td><td><code><a href="#NT-AbbrevAttributeStep">AbbrevAttributeStep</a> |
<a href="#NT-AbbrevElementStep">AbbrevElementStep</a> |
<a href="#NT-AbbrevTypeStep">AbbrevTypeStep</a> |
<a href="#NT-AbbrevCurrentComponentStep">AbbrevCurrentComponentStep</a> |
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-AbbrevAttributeStep" name="NT-AbbrevAttributeStep" />[15] </td><td><code>AbbrevAttributeStep</code></td><td> ::= </td><td><code>'@' <a href="#NT-NameTest">NameTest</a>
<a href="#NT-Predicate">Predicate</a>?
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-AbbrevElementStep" name="NT-AbbrevElementStep" />[16] </td><td><code>AbbrevElementStep</code></td><td> ::= </td><td><code><a href="#NT-NameTest">NameTest</a>
<a href="#NT-Predicate">Predicate</a>?
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-AbbrevTypeStep" name="NT-AbbrevTypeStep" />[17] </td><td><code>AbbrevTypeStep</code></td><td> ::= </td><td><code>'~' <a href="#NT-NameTest">NameTest</a>
<a href="#NT-Predicate">Predicate</a>?
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-AbbrevCurrentComponentStep" name="NT-AbbrevCurrentComponentStep" />[18] </td><td><code>AbbrevCurrentComponentStep</code></td><td> ::= </td><td><code>'.' <a href="#NT-Predicate">Predicate</a>?</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-Axis" name="NT-Axis" />[19] </td><td><code>Axis</code></td><td> ::= </td><td><code>
'schemaAttribute' '::' | 'schemaElement' '::' |
'type' '::' |
'attributeGroup' '::' | 'group' '::' |
'identityConstraint' '::' |
'assertion' '::' | 'alternative' '::' |
'notation' '::' |
'model' '::' |
'anyAttribute' '::' | 'any' '::' |
'facet' '::' |
'scope' '::' | 'context' '::' |
'substitutionGroup' '::' |
'baseType' '::' | 'itemType' '::' | 'memberType' '::' | 'primitiveType' '::' |
'key' '::' |
'annotation' '::' |
'component' '::' | 'currentComponent' '::' |
'attributeUse' '::' | 'particle' '::' |
<a href="#NT-ExtensionAxis">ExtensionAxis</a>
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-NameTest" name="NT-NameTest" />[20] </td><td><code>NameTest</code></td><td> ::= </td><td><code><a href="http://www.w3.org/TR/REC-xml-names/#NT-QName">QName</a> |
<a href="#NT-WildcardNameTest">WildcardNameTest</a> | '0'
</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-WildcardNameTest" name="NT-WildcardNameTest" />[21] </td><td><code>WildcardNameTest</code></td><td> ::= </td><td><code>'*'</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-ExtensionAccessor" name="NT-ExtensionAccessor" />[22] </td><td><code>ExtensionAccessor</code></td><td> ::= </td><td><code><a href="http://www.w3.org/TR/REC-xml-names/#NT-QName">QName</a> '(' ')'</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-ExtensionAxis" name="NT-ExtensionAxis" />[23] </td><td><code>ExtensionAxis</code></td><td> ::= </td><td><code><a href="http://www.w3.org/TR/REC-xml-names/#NT-QName">QName</a> '::'</code></td></tr></tbody><tbody><tr valign="baseline"><td><a id="NT-Predicate" name="NT-Predicate" />[24] </td><td><code>Predicate</code></td><td> ::= </td><td><code>'[' [0]*[1-9][0-9]* ']'</code></td></tr></tbody></table><div class="note"><p class="prefix"><b>Note:</b></p><p>The EBNF above defines a syntax for invoking an accessor after the
last step of the path and for using extension axes. This syntax is included for
extensibility. A specification that wishes to make use of these extensions must
define the detailed syntax and semantics
(see <a href="#section-conformance"><b>5 Conformance</b></a>).
</p></div></div><div class="div3">
<h4><a id="section-path-examples" name="section-path-examples" />4.2.3 Examples of Schema Component Paths (Non-Normative)</h4><p>The following examples assume the namespace prefixes have been properly
bound.</p><p>A schema component path referring to the type (either simple or complex)
whose local name is <code>title</code> and which is in the namespace denoted by
the prefix <code>my</code>:</p><div class="exampleInner"><pre>/type::my:title</pre></div><p>A schema component path referring to the globally declared element whose
local name is <code>title</code> and which is in the namespace denoted by the
prefix <code>my</code>:</p><div class="exampleInner"><pre>/schemaElement::my:title</pre></div><p>A schema component path referring to the globally declared attribute whose
local name is <code>title</code> and which is in the namespace denoted by the
prefix <code>my</code>:</p><div class="exampleInner"><pre>/schemaAttribute::my:title</pre></div><p>A schema component path referring to the globally declared attribute group
whose local name is <code>title</code> and which is in the namespace denoted by
the prefix <code>my</code>:</p><div class="exampleInner"><pre>/attributeGroup::my:title</pre></div><p>A schema component path referring to the pattern facet of the globally
declared simple type whose local name is <code>title</code> which is in the
namespace denoted by <code>my</code>:
</p><div class="exampleInner"><pre>/type::my:title/facet::pattern</pre></div><p>Given this schema fragment for a schema whose target namespace is denoted by
the prefix <code>my</code>:</p><div class="exampleInner"><pre>
<xs:complexType name="articleType">
<xs:sequence>
<xs:element ref="my:section"/>
<xs:element name="appendix" type="my:sectionType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="chapter">
<xs:complexType>
<xs:sequence>
<xs:element ref="my:title" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:anyAttribute namespace="##other" use="optional"/>
</xs:complexType>
</xs:element>
</pre></div><p>The following schema component path refers to the first element of the named
complex type:</p><div class="exampleInner"><pre>/type::my:articleType/model::sequence/schemaElement::my:section</pre></div><p>And the following schema component path refers to the second:</p><div class="exampleInner"><pre>/type::my:articleType/model::sequence/schemaElement::my:appendix</pre></div><p>A schema component path referring to the (anonymous) complex type of the
globally defined element:</p><div class="exampleInner"><pre>/schemaElement::my:chapter/type::0</pre></div><p>A schema component path that refers to the wildcard in the globally defined
element:</p><div class="exampleInner"><pre>/schemaElement::my:chapter/type::0/model::sequence/any::*</pre></div><p>A schema component path that refers to the attribute of the globally defined
element:</p><div class="exampleInner"><pre>/schemaElement::my:chapter/type::0/schemaAttribute::name</pre></div></div></div><div class="div2">
<h3><a id="section-path-interpret" name="section-path-interpret" />4.3 Interpretation of Schema Component Paths</h3><p>[<a title="schema component path" id="key-scp" name="key-scp">Definition</a>: A
<b>schema component path</b> selects a sequence of
schema components in the context of an assembled schema; it is a series
of <a title="step" href="#key-scp-step">steps</a> separated by
'<code>/</code>' or '<code>//</code>'. Complete schema component paths always
start with either '<code>/</code>' or '<code>//</code>'.
]
</p><p>
[<a title="step" id="key-scp-step" name="key-scp-step">Definition</a>: A <b>step</b>
consists of a <a title="axis" href="#key-scp-axis">schema component
axis</a> and a <a title="schema component name test" href="#key-scp-nametest">schema component name
test</a> and
an optional <a title="schema component positional predicate" href="#key-scp-pospred">positional predicate</a>.
It selects a sequence of schema components that are linked to a
source component through an arc that matches the axis, pass the name test,
and are selected by the positional predicate, if any.
]
Schema component axes are described in <a href="#section-axis"><b>4.4 Schema Component Path Axes</b></a>.
</p><p>In general the syntax of a step of the schema component path has the
following form:
</p><p>The predicate is optional and there are abbreviated forms for some steps.</p><p>[<a title="schema component name test" id="key-scp-nametest" name="key-scp-nametest">Definition</a>: A
<b>schema component name
test</b> is a condition on name of the components selected by the schema
component path step.] A schema component name test
either gives a localname, possibly with a namespace prefix, or consists of a
just the wildcard character ('<code>*</code>'), or just the character zero
('<code>0</code>').
</p><p>A schema component name test of this form is true if the QName formed from
the namespace name and local name specified in the the schema component name
test is equal to the value of the component-name() accessor of the schema
component. For more information on namespace binding for QName interpretation
see <a href="#section-namespaces"><b>4.3.2 Namespaces</b></a>.</p><p>A schema component name test of this form is true
for anonymous type definitions. An anonymous type definition's
component-name() accessor returns "0".
This name cannot have any conflict with any possible named component, as 0 is
not a valid name start character.
</p><p>A schema component name test of this form is true for all linked components
matching the given axis.</p><p>[<a title="schema component positional predicate" id="key-scp-pospred" name="key-scp-pospred">Definition</a>:
A <b>schema component positional predicate</b> is a condition on the
relative position of the component in the sequence of matching components from
the schema component path step.] A schema component position predicate
is true if the position of the target component in the sequence of
components selected by the axis and name test is equal
to the positive integer given in the predicate. <span>Counting
starts at 1.</span>
</p><p>
A path consisting of just '<code>/</code>' selects the schema description
component.
</p><p>
A path of the form <code>/<var>S1</var></code> selects
components linked to the schema description component in accordance with the
step <code><var>S1</var></code>.
</p><p>
A path of the form <code><var>S1</var>/<var>S2</var></code> is interpreted
by gathering the sequence of source components and then selecting any
schema component that is linked to one of the source components in accordance
with the step <code><var>S2</var></code>. The sequence of source components
consists of the sequence of components selected by <code><var>S1</var></code>
followed by the components selected by the elided-component
axis on those components.
</p><p>
A path of the form <code><var>S1</var>//<var>S2</var></code> is also
interpreted by gathering the sequence of source components and then selecting
any schema component that is linked to one of the source components in
accordance with the step <code><var>S2</var></code>. In this case the
sequence of source components consists of the sequence of components selected
by <code><var>S1</var></code> followed by the application of
the component axis on members of that sequence.
</p><p>A path of the form <code><var>S1</var></code> selects all schema components
linked to the initial source component in accordance with the step
<code><var>S1</var></code>.
</p><p>Implementations will have to exercise care to
properly handle circularities in the component graph in determining the set of
components matched by a path.
</p><div class="div3">
<h4><a id="section-incomplete-paths" name="section-incomplete-paths" />4.3.1 Incomplete Schema Component Paths</h4><p>Incomplete schema component paths may be constructed starting at
some specific source component following the construction rules given here.
Such paths will not start with a leading slash. Correct interpretation of
such incomplete (relative) paths depends on the initial source component.
External specifications sanctioning relative schema component paths must
therefore define the initial source component to use to interpret the schema
component path. In this specification, "schema component path"
always refers to a complete schema component path starting at the root
schema description component, unless explicitly stated otherwise.
</p><p>To emphasize the incompleteness of such paths, the current component step
syntax may be used (<code>.</code>) for the head step. For example, if
the initial source component is a complex type, the following paths are
equivalent and
designate the element declaration with the QName <code>my:section</code>
within the sequence model group of that type:
</p><div class="exampleInner"><pre>model::sequence/schemaElement::my:section</pre></div><div class="exampleInner"><pre>./model::sequence/schemaElement::my:section</pre></div></div><div class="div3">
<h4><a id="section-namespaces" name="section-namespaces" />4.3.2 Namespaces</h4><p>Schema component paths use QNames to refer to schema components.
Interpretation of these QNames therefore depends on namespace bindings.
When schema component paths are used in the context of schema component
designators (<a href="#section-scds"><b>3 Schema Component Designators</b></a>), the <code>xmlns()</code> XPointer
scheme defines those namespace bindings. In the context of an XML document the
namespace prefixes will be bound in the conventional way (using the [in-scope namespaces] property of the element information item). Other host languages and
some XML applications will define their own namespace binding rules.
While the <code>xmlns()</code> scheme does not provide for defining a
default namespace, other mechanisms may do so. In such contexts, schema
component paths allow and apply the default namespace.
</p><p>Note also that the <code>form</code> (and <code>elementFormDefault</code>
and <code>attributeFormDefault</code>) values apply as well. Since, for example,
a local attribute declaration component with the form <code>unqualified</code>
will have an empty <code>{target namespace}</code>, the QName for that
declaration will have no prefix.
</p><p>For example, consider the path:</p><div class="exampleInner"><pre>//quantity</pre></div><p>This path
designates global or local element declarations whose local
name is <code>quantity</code> and which are either in no
namespace, are local elements whose form is <code>unqualified</code>,
or are in the default namespace (assuming there is a such a namespace
binding).</p><p>For types, form is not relevant.</p><div class="exampleInner"><pre>/~Items//quantity</pre></div><p>This path designates global or local element declarations whose local name
is <code>quantity</code>, where these declarations
are in the subgraph represented by the global complex type component whose
local name is <code>Items</code>. As in the previous
example, the element declaration may either be in schema with no target
namespace, in the default namespace, or a local element declaration with the
form <code>unqualified</code>. The complex type <code>Items</code> must be in
the default namespace or in a schema with no target namespace.
</p><p>This path designates global or local attribute
declarations whose local name is <code>partNum</code> where these declarations
are in the subgraph represented by the global complex type component whose
local name is <code>Items</code>. Again, the complex type is either in the
default namespace or in a schema with no target namespace, and the attribute
declaration must be global attributes in a schema with no target namespace, in
the default namespace, or be local declarations with the form
<code>unqualified</code>.
</p><div class="exampleInner"><pre>/~Items//@partNum</pre></div></div></div><div class="div2">
<h3><a id="section-axis" name="section-axis" />4.4 Schema Component Path Axes</h3><p>
[<a title="axis" id="key-scp-axis" name="key-scp-axis">Definition</a>: A schema component path <b>axis</b>
contains specific components linked to the
current context component through certain kinds of arcs.
Unless otherwise indicated, an axis applied to
a component that has no arc of the required kind designates no components.
]
</p><div class="div3">
<h4><a id="section-axis-currentComponent" name="section-axis-currentComponent" />4.4.1 The currentComponent Axis</h4><p>[<a title="currentComponent axis" id="axis-currentComponent" name="axis-currentComponent">Definition</a>: The
<b><span><code>currentComponent</code></span></b> axis contains the current component.
]
</p>
<h5><a id="N106EB" name="N106EB" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-CurrentComponentAxis" name="NT-CurrentComponentAxis" />[25] </td><td><code>CurrentComponentAxis</code></td><td> ::= </td><td><code>'currentComponent' '::</code></td></tr></tbody><tbody><tr valign="baseline"><td>[18] </td><td><a href="#NT-AbbrevCurrentComponentStep"><code>AbbrevCurrentComponentStep</code></a></td><td> ::= </td><td><code>'.' <a href="#NT-Predicate">Predicate</a>?</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-annotation" name="section-axis-annotation" />4.4.2 The annotation Axis</h4><p>[<a title="annotation axis" id="axis-annotation" name="axis-annotation">Definition</a>: The
<b><span><code>annotation</code></span></b> axis contains annotation
components linked to the current component through {annotation} or
{annotations} arcs, which are the components returned
by the annotations() accessor.
]
</p>
<h5><a id="N10706" name="N10706" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-AnnotationAxis" name="NT-AnnotationAxis" />[26] </td><td><code>AnnotationAxis</code></td><td> ::= </td><td><code>'annotation' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-schemaAttribute" name="section-axis-schemaAttribute" />4.4.3 The schemaAttribute Axis</h4><p>[<a title="schemaAttribute axis" id="axis-schemaAttribute" name="axis-schemaAttribute">Definition</a>: The
<b><span><code>schemaAttribute</code></span></b> axis contains attribute
declaration components linked to the current component through
{attribute declaration} or {attribute declarations} arcs,
which are those components returned by the component-linked() accessor whose
component-kind() is equal to <code><span>xscd:</span>attribute-declaration</code>.
]
</p>
<h5><a id="N10725" name="N10725" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-SchemaAttributeAxis" name="NT-SchemaAttributeAxis" />[27] </td><td><code>SchemaAttributeAxis</code></td><td> ::= </td><td><code>'schemaAttribute' '::'</code></td></tr></tbody><tbody><tr valign="baseline"><td>[15] </td><td><a href="#NT-AbbrevAttributeStep"><code>AbbrevAttributeStep</code></a></td><td> ::= </td><td><code>'@' <a href="#NT-NameTest">NameTest</a>
<a href="#NT-Predicate">Predicate</a>?
</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-schemaElement" name="section-axis-schemaElement" />4.4.4 The schemaElement Axis</h4><p>[<a title="schemaElement axis" id="axis-schemaElement" name="axis-schemaElement">Definition</a>: The
<b><span><code>schemaElement</code></span></b> axis contains element
declaration components linked to the current component through
{element declarations}, {term}, {particle},
{particles}, or {content type}, which are the components returned by the
term() accessor whose component-kind() is equal to
<code><span>xscd:</span>element-declaration</code>, together with {element declarations}.
]
</p>
<h5><a id="N10746" name="N10746" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-SchemaElementAxis" name="NT-SchemaElementAxis" />[28] </td><td><code>SchemaElementAxis</code></td><td> ::= </td><td><code>'schemaElement' '::'</code></td></tr></tbody><tbody><tr valign="baseline"><td>[16] </td><td><a href="#NT-AbbrevElementStep"><code>AbbrevElementStep</code></a></td><td> ::= </td><td><code><a href="#NT-NameTest">NameTest</a>
<a href="#NT-Predicate">Predicate</a>?
</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-type" name="section-axis-type" />4.4.5 The type Axis</h4><p>[<a title="type axis" id="axis-type" name="axis-type">Definition</a>: The <b><span><code>type</code></span></b>
axis contains simple type definition
and complex type definition components linked to the current component through
{type definition}, {type definitions}, {content type},
or {simple type definition} arcs, which are the components
returned by the component-children() accessor whose
component-kind() is equal to either
<code><span>xscd:</span>complex-type-definition</code> or
<code><span>xscd:</span>simple-type-definition</code>.]
</p>
<h5><a id="N1076D" name="N1076D" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-TypeAxis" name="NT-TypeAxis" />[29] </td><td><code>TypeAxis</code></td><td> ::= </td><td><code>'type' '::'</code></td></tr></tbody><tbody><tr valign="baseline"><td>[17] </td><td><a href="#NT-AbbrevTypeStep"><code>AbbrevTypeStep</code></a></td><td> ::= </td><td><code>'~' <a href="#NT-NameTest">NameTest</a>
<a href="#NT-Predicate">Predicate</a>?
</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-agroup" name="section-axis-agroup" />4.4.6 The attributeGroup Axis</h4><p>[<a title="attributeGroup axis" id="axis-attributeGroup" name="axis-attributeGroup">Definition</a>: The
<b><span><code>attributeGroup</code></span></b> axis contains
attribute group definition components linked to the current component through
{attribute group definitions} arcs, which are those components
returned by the component-linked() accessor whose component-kind() is equal to
<code><span>xscd:</span>attribute-group-definition</code>.]
</p>
<h5><a id="N1078E" name="N1078E" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-AttributeGroupAxis" name="NT-AttributeGroupAxis" />[30] </td><td><code>AttributeGroupAxis</code></td><td> ::= </td><td><code>'attributeGroup' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-groupdef" name="section-axis-groupdef" />4.4.7 The group Axis</h4><p>[<a title="group axis" id="axis-group" name="axis-group">Definition</a>: The
<b><span><code>group</code></span></b> axis contains
model group definition components linked to the current component through
{model group definitions} arcs, which are those components returned
by the component-linked() accessor whose component-kind() is equal to
<code><span>xscd:</span>model-group-definition</code>.
]
</p>
<h5><a id="N107AD" name="N107AD" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-GroupAxis" name="NT-GroupAxis" />[31] </td><td><code>GroupAxis</code></td><td> ::= </td><td><code>'group' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-idc" name="section-axis-idc" />4.4.8 The identityConstraint Axis</h4><p>[<a title="identityConstraint axis" id="axis-identityConstraint" name="axis-identityConstraint">Definition</a>: The
<b><span><code>identityConstraint</code></span></b> axis contains
identity constraint definition components linked to the current component
through {identity constraint definitions} arcs, which are those
components returned by the component-linked() accessor whose component-kind()
is equal to <code><span>xscd:</span>identity-constraint-definition</code>.
]
</p>
<h5><a id="N107CC" name="N107CC" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-IdentityConstraintAxis" name="NT-IdentityConstraintAxis" />[32] </td><td><code>IdentityConstraintAxis</code></td><td> ::= </td><td><code>'identityConstraint' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-assertion" name="section-axis-assertion" />4.4.9 The assertion Axis</h4><p>[<a title="assertion axis" id="axis-assertion" name="axis-assertion">Definition</a>: The
<b><span><code>assertion</code></span></b> axis contains
assertion components linked to the current component
through {assertions}, {value}, or {facets} arcs, which are those components
returned by the assertions() accessor.]
</p>
<h5><a id="N107E5" name="N107E5" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-AssertionAxis" name="NT-AssertionAxis" />[33] </td><td><code>AssertionAxis</code></td><td> ::= </td><td><code>'assertion' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-alternative" name="section-axis-alternative" />4.4.10 The alternative Axis</h4><p>[<a title="alternative-axis" id="axis-alternatives" name="axis-alternatives">Definition</a>: The
<b><span><code>alternative</code></span></b> axis
contains
type alternative components linked to the current component
through {alternatives}, {default type definition}, or {type table} arcs,
which are those components
returned by the component-linked() accessor whose component-kind() is
equal to <code><span>xscd:</span>type-alternative</code>.
]
</p><div class="note"><p class="prefix"><b>Note:</b></p><p>The {default type definition} of the type alternatives table of an
element declaration is actually a type alternative component and will be
selected by the alternative axis. </p></div>
<h5><a id="N10807" name="N10807" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-AlternativeAxis" name="NT-AlternativeAxis" />[34] </td><td><code>AlternativeAxis</code></td><td> ::= </td><td><code>'alternative' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-notation" name="section-axis-notation" />4.4.11 The notation Axis</h4><p>[<a title="notation axis" id="axis-notation" name="axis-notation">Definition</a>: The
<b><span><code>notation</code></span></b> axis contains
notation declaration components linked to the current component
through {notation declarations}
arcs, which are the components returned by the component-linked() accessor
whose component-kind() is equal to <code><span>xscd:</span>notation-declaration</code>.]
</p>
<h5><a id="N10826" name="N10826" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-NotationAxis" name="NT-NotationAxis" />[35] </td><td><code>NotationAxis</code></td><td> ::= </td><td><code>'notation' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-model" name="section-axis-model" />4.4.12 The model Axis</h4><p>[<a title="model axis" id="axis-model" name="axis-model">Definition</a>: The
<b><span><code>model</code></span></b> axis contains
model group components linked to the current component
through {model group}, {term}, {particle}, {particles}, or {content type}
arcs, which are the components returned by the term() accessor
whose component-kind() is equal to <code><span>xscd:</span>model-group</code>.
]
</p>
<h5><a id="N10845" name="N10845" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-ModelAxis" name="NT-ModelAxis" />[36] </td><td><code>ModelAxis</code></td><td> ::= </td><td><code>'model' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-anyAttribute" name="section-axis-anyAttribute" />4.4.13 The anyAttribute Axis</h4><p>[<a title="anyAttribute axis" id="axis-anyAttribute" name="axis-anyAttribute">Definition</a>: The
<b><span><code>anyAttribute</code></span></b> axis contains
wildcard components linked to the current component
through {attribute wildcard} arcs.]
</p>
<h5><a id="N1085E" name="N1085E" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-AnyAttributeAxis" name="NT-AnyAttributeAxis" />[37] </td><td><code>AnyAttributeAxis</code></td><td> ::= </td><td><code>'anyAttribute' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-any" name="section-axis-any" />4.4.14 The any Axis</h4><p>[<a title="any axis" id="axis-any" name="axis-any">Definition</a>: The <b><span><code>any</code></span></b>
axis contains
wildcard components linked to the current component
through {wildcard}, {term}, {particle}, {particles}, {content type}, or
{open content} arcs, which is the components returned by the
term() accessor whose component-kind() is equal to
<code><span>xscd:</span>wildcard</code>. ]
</p>
<h5><a id="N1087D" name="N1087D" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-AnyAxis" name="NT-AnyAxis" />[38] </td><td><code>AnyAxis</code></td><td> ::= </td><td><code>'any' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-facet" name="section-axis-facet" />4.4.15 The facet Axis</h4><p>[<a title="facet axis" id="axis-facet" name="axis-facet">Definition</a>: The
<b><span><code>facet</code></span></b> axis contains
facet components linked to the current component
through {facets} or {fundamental facets} arcs, which is the components returned
by component-linked() whose component-kind() is equal
to <code><span>xscd:</span>facet</code>.
]</p>
<h5><a id="N1089B" name="N1089B" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-FacetAxis" name="NT-FacetAxis" />[39] </td><td><code>FacetAxis</code></td><td> ::= </td><td><code>'facet' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-scope" name="section-axis-scope" />4.4.16 The scope Axis</h4><p>[<a title="scope axis" id="axis-scope" name="axis-scope">Definition</a>: The
<b><span><code>scope</code></span></b> axis contains
complex type definition, attribute group definition, or
model group definition components linked to the current component
through {scope} and {parent} arcs, which are the components returned from
the component-scope() accessor.
]
</p>
<h5><a id="N108B4" name="N108B4" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-ScopeAxis" name="NT-ScopeAxis" />[40] </td><td><code>ScopeAxis</code></td><td> ::= </td><td><code>'scope' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-context" name="section-axis-context" />4.4.17 The context Axis</h4><p>[<a title="context axis" id="axis-context" name="axis-context">Definition</a>: The
<b><span><code>context</code></span></b> axis contains
complex type definition, attribute declaration, or
element declaration components linked to the current component
through {context} arcs.
]
</p>
<h5><a id="N108CD" name="N108CD" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-ContextAxis" name="NT-ContextAxis" />[41] </td><td><code>ContextAxis</code></td><td> ::= </td><td><code>'context' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-substitutionGroup" name="section-axis-substitutionGroup" />4.4.18 The substitutionGroup Axis</h4><p>[<a title="substitutionGroup axis" id="axis-substitutionGroup" name="axis-substitutionGroup">Definition</a>: The
<b><span><code>substitutionGroup</code></span></b> axis contains
element declaration components linked to the current component
through {substitution group affiliation} and {substitution group affiliations}
arcs.
]
</p>
<h5><a id="N108E6" name="N108E6" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-SubstitutionGroupAxis" name="NT-SubstitutionGroupAxis" />[42] </td><td><code>SubstitutionGroupAxis</code></td><td> ::= </td><td><code>'substitutionGroup' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-baseType" name="section-axis-baseType" />4.4.19 The baseType Axis</h4><p>[<a title="baseType axis" id="axis-baseType" name="axis-baseType">Definition</a>: The
<b><span><code>baseType</code></span></b> axis contains
simple type definition and complex type definition components linked to the
current component through {base type definition} arcs.
]
</p>
<h5><a id="N108FF" name="N108FF" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-BaseTypeAxis" name="NT-BaseTypeAxis" />[43] </td><td><code>BaseTypeAxis</code></td><td> ::= </td><td><code>'baseType' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-itemType" name="section-axis-itemType" />4.4.20 The itemType Axis</h4><p>[<a title="itemType axis" id="axis-itemType" name="axis-itemType">Definition</a>: The
<b><span><code>itemType</code></span></b> axis contains
simple type definition components linked to the
current component through {item type definition} arcs.
]
</p>
<h5><a id="N10918" name="N10918" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-ItemTypeAxis" name="NT-ItemTypeAxis" />[44] </td><td><code>ItemTypeAxis</code></td><td> ::= </td><td><code>'itemType' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-memberType" name="section-axis-memberType" />4.4.21 The memberType Axis</h4><p>[<a title="memberType axis" id="axis-memberType" name="axis-memberType">Definition</a>: The
<b><span><code>memberType</code></span></b> axis contains
simple type definition components linked to the
current component through {member type definitions}
arcs. ]
</p>
<h5><a id="N10931" name="N10931" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-MemberTypeAxis" name="NT-MemberTypeAxis" />[45] </td><td><code>MemberTypeAxis</code></td><td> ::= </td><td><code>'memberType' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-primitiveType" name="section-axis-primitiveType" />4.4.22 The primitiveType Axis</h4><p>[<a title="primitiveType axis" id="axis-primitiveType" name="axis-primitiveType">Definition</a>: The
<b><span><code>primitiveType</code></span></b> axis contains
simple type definition components linked to the
current component through {primitive type definition}
arcs.]</p>
<h5><a id="N10949" name="N10949" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-PrimitiveTypeAxis" name="NT-PrimitiveTypeAxis" />[46] </td><td><code>PrimitiveTypeAxis</code></td><td> ::= </td><td><code>'primitiveType' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-referencedKey" name="section-axis-referencedKey" />4.4.23 The key Axis</h4><p>[<a title="key axis" id="axis-key" name="axis-key">Definition</a>: The <b><span><code>key</code></span></b>
axis contains
identity constraint definition components linked to the
current component through {referenced key}
arcs.]
</p>
<h5><a id="N10962" name="N10962" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-KeyAxis" name="NT-KeyAxis" />[47] </td><td><code>KeyAxis</code></td><td> ::= </td><td><code>'key' '::'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-attributeUse" name="section-axis-attributeUse" />4.4.24 The attributeUse Axis</h4><p>[<a title="attributeUse axis" id="axis-attributeUse" name="axis-attributeUse">Definition</a>: The
<b><span><code>attributeUse</code></span></b> axis contains attribute use components
linked to the current component through {attribute uses}.
]
</p>
<h5><a id="N1097B" name="N1097B" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-AttributeUseAxis" name="NT-AttributeUseAxis" />[48] </td><td><code>AttributeUseAxis</code></td><td> ::= </td><td><code>'attributeUse' '::</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-particle" name="section-axis-particle" />4.4.25 The particle Axis</h4><p>[<a title="particle axis" id="axis-particle" name="axis-particle">Definition</a>: The
<b><span><code>particle</code></span></b> axis contains particle components
linked to the current component through {particles}.
]
</p>
<h5><a id="N10994" name="N10994" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-ParticleAxis" name="NT-ParticleAxis" />[49] </td><td><code>ParticleAxis</code></td><td> ::= </td><td><code>'particle' '::</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-component" name="section-axis-component" />4.4.26 The component Axis</h4><p>[<a title="component axis" id="axis-component" name="axis-component">Definition</a>: The
<b><span><code>component</code></span></b> axis contains the transitive closure of
schema
components that are either linked to the schema description component or that
are linked to current component through default arcs. That is, it contains
the transitive
closure of the component-children() accessor, as well as
component-linked()
accessor if the schema description is the current component.
]</p>
<h5><a id="N109AC" name="N109AC" /></h5><table summary="Scrap" class="scrap"><tbody><tr valign="baseline"><td><a id="NT-ComponentAxis" name="NT-ComponentAxis" />[50] </td><td><code>ComponentAxis</code></td><td> ::= </td><td><code>'component' '::'</code></td></tr></tbody><tbody><tr valign="baseline"><td>[12] </td><td><a href="#NT-ComponentAxisSeparator"><code>ComponentAxisSeparator</code></a></td><td> ::= </td><td><code>'//'</code></td></tr></tbody></table></div><div class="div3">
<h4><a id="section-axis-elided-component" name="section-axis-elided-component" />4.4.27 The elided-component Axis</h4><p>[<a title="elided-component axis" id="axis-elided-component" name="axis-elided-component">Definition</a>: The
<b><span><code>elided-component</code></span></b> axis contains complex type
definitions
linked to the current component through the {type definition} arc and the
transitive closure of all model group components linked to the current
component. That is, it contains the transitive closure of components returned
from the term() accessor whose component-kind() is equal to
<code><span>xscd:</span>model-group</code>, as well as components linked to the current component
through the {type definition} arc.
]
</p><p>There is no syntax for this axis: it is used to define the semantics of
certain paths.</p></div></div><div class="div2">
<h3><a id="section-accessors" name="section-accessors" />4.5 Accessors</h3><p>A set of accessors is defined on schema components. For consistency, each
accessor is defined for every kind of schema component,
although several accessors return a constant empty value on some kinds of
schema components.</p><p>Where accessors return sequences, the order of components
accessed on one arc is as defined by the schema component model. Components
accessed through default arcs precede components accessed through non-default
arcs. Components are otherwise ordered as if arcs were accessed in the
following order:
</p><ul><li><p>{type definitions}</p></li><li><p>{type definition}</p></li><li><p>{base type definition}</p></li><li><p>{item type definition}</p></li><li><p>{member type definitions}</p></li><li><p>{primitive type definition}</p></li><li><p>{type table}</p></li><li><p>{alternatives}</p></li><li><p>{default type definition}</p></li><li><p>{simple type definition}</p></li><li><p>{element declarations}</p></li><li><p>{substitution group affiliations}</p></li><li><p>{substitution group affiliation}</p></li><li><p>{attribute declarations}</p></li><li><p>{attribute declaration}</p></li><li><p>{model group definitions}</p></li><li><p>{attribute group definitions}</p></li><li><p>{scope}</p></li><li><p>{parent}</p></li><li><p>{context}</p></li><li><p>{content type}</p></li><li><p>{particles}</p></li><li><p>{particle}</p></li><li><p>{term}</p></li><li><p>{model group}</p></li><li><p>{attribute uses}</p></li><li><p>{open content}</p></li><li><p>{wildcard}</p></li><li><p>{attribute wildcard}</p></li><li><p>{identity constraint definitions}</p></li><li><p>{referenced key}</p></li><li><p>{assertions}</p></li><li><p>{notation declarations}</p></li><li><p>{facets}</p></li><li><p>{fundamental facets}</p></li><li><p>{annotation}</p></li><li><p>{annotations}</p></li></ul><div class="div3">
<h4><a id="accessor-component-kind" name="accessor-component-kind" />4.5.1 component-kind Accessor</h4><p>The component-kind accessor returns <span>an <a href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-expname">expanded name</a></span>
identifying the kind of the schema component. </p><table border="0" cellspacing="5" summary="component-kind accessor details"><thead><tr><th align="left">Component</th><th align="left">Result of component-kind()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top"><span>xscd:</span>attribute-declaration</td></tr><tr><td valign="top">Element Declaration</td><td valign="top"><span>xscd:</span>element-declaration</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top"><span>xscd:</span>complex-type-definition</td></tr><tr><td valign="top">Attribute Use</td><td valign="top"><span>xscd:</span>attribute-use</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top"><span>xscd:</span>attribute-group-definition</td></tr><tr><td valign="top">Model Group Definition</td><td valign="top"><span>xscd:</span>model-group-definition</td></tr><tr><td valign="top">Model Group</td><td valign="top"><span>xscd:</span>model-group</td></tr><tr><td valign="top">Particle</td><td valign="top"><span>xscd:</span>particle</td></tr><tr><td valign="top">Wildcard</td><td valign="top"><span>xscd:</span>wildcard</td></tr><tr><td valign="top">Identity‑Constraint Definition</td><td valign="top"><span>xscd:</span>identity-constraint-definition</td></tr><tr><td valign="top">Type Alternative</td><td valign="top"><span>xscd:</span>type-alternative</td></tr><tr><td valign="top">Assertion</td><td valign="top"><span>xscd:</span>assertion</td></tr><tr><td valign="top">Notation Declaration</td><td valign="top"><span>xscd:</span>notation-declaration</td></tr><tr><td valign="top">Annotation</td><td valign="top"><span>xscd:</span>annotation</td></tr><tr><td valign="top">Schema</td><td valign="top"><span>xscd:</span>schema</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top"><span>xscd:</span>simple-type-definition</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top"><span>xscd:</span>facet</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top"><span>xscd:</span>facet</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-component-name" name="accessor-component-name" />4.5.2 component-name Accessor</h4><p>The component-name accessor returns zero or one xs:QName values giving the
name of the component.</p><table border="0" cellspacing="5" summary="component-name accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of component-name()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">the xs:QName formed
from the {name} and {target namespace} properties</td></tr><tr><td valign="top">Element Declaration</td><td valign="top">the xs:QName formed
from the {name} and {target namespace} properties</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">the xs:QName
formed from the {name} and {target namespace} properties; "0", if
{name} is absent</td></tr><tr><td valign="top">Attribute Use</td><td valign="top">empty</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">the xs:QName
formed from the {name} and {target namespace} properties</td></tr><tr><td valign="top">Model Group Definition</td><td valign="top">the xs:QName formed
from the {name} and {target namespace} properties</td></tr><tr><td valign="top">Model Group</td><td valign="top">the xs:QName formed from
an empty namespace name and the value of the component-variety() accessor as
the local name</td></tr><tr><td valign="top">Particle</td><td valign="top">empty</td></tr><tr><td valign="top">Wildcard</td><td valign="top">empty</td></tr><tr><td valign="top">Identity‑Constraint Definition</td><td valign="top">the xs:QName
formed from the {name} and {target namespace} properties</td></tr><tr><td valign="top">Assertion</td><td valign="top">empty</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">empty</td></tr><tr><td valign="top">Notation Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Annotation</td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">empty</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">the xs:QName formed
from the {name} and {target namespace} properties; "0", if {name} is
absent
</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">the xs:QName
formed with an empty namespace name and the value of the component-variety()
accessor as the local name</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">the xs:QName formed
with an empty namespace name and the value of the component-variety() accessor
as the local name</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-component-variety" name="accessor-component-variety" />4.5.3 component-variety Accessor</h4><p>The component-variety accessor returns zero or one strings identifying the
specific variety of that component kind.
</p><table border="0" cellspacing="5" summary="component-variety accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of component-variety()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">
"global"
if {scope} is "global" or if the value of the
{variety} property of {scope} is "global" (1.1);
"local" otherwise</td></tr><tr><td valign="top">Element Declaration </td><td valign="top">"global"
if {scope} is "global" or if the value of the {variety} property of {scope} is
"global" (1.1);
"local" otherwise</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">the value of
the {variety} property of the {content type} (1.1). Under the XML Schema 1.0
component model, there is no such property; instead returns "empty"
if the {content type} property has the value "empty",
"simple" if the {content type} property has a simple type declaration
as its value, "element-only" or "mixed" if the {content type} has a pair as a
value and that string is a member of the pair</td></tr><tr><td valign="top">Attribute Use </td><td valign="top">empty</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Model Group Definition </td><td valign="top">empty</td></tr><tr><td valign="top">Model Group </td><td valign="top">the value of the
{compositor} property, one of "sequence", "choice", and "all"</td></tr><tr><td valign="top">Particle</td><td valign="top">empty</td></tr><tr><td valign="top">Wildcard</td><td valign="top">the value of the
{process contents} property, one of "strict", "lax", and "skip"
</td></tr><tr><td valign="top">Identity‑Constraint Definition </td><td valign="top">the value
of the {identity-constraint category} property, one of "key",
"keyref", and "unique"</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">empty</td></tr><tr><td valign="top">Assertion</td><td valign="top">empty</td></tr><tr><td valign="top">Notation Declaration </td><td valign="top">empty</td></tr><tr><td valign="top">Annotation </td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">empty</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">the value of the
{variety} property, one of "atomic", "union", and "list"</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">the facet variety,
e.g. "minLength" for the minLength facet, and so on</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">the facet variety,
e.g. "numeric" for the numeric facet, and so on</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-component-children" name="accessor-component-children" />4.5.4 component-children Accessor</h4><p>The component-children accessor returns a sequence of schema components
consisting of all the components immediately accessible through default axes,
skipping minor components that produce no steps in the schema component path.
</p><table border="0" cellspacing="5" summary="component-children accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of component-children()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">the value of {type definition}</td></tr><tr><td valign="top">Element Declaration </td><td valign="top">the value of {type definition}</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">
the value of {attribute uses} and;
if the value of the component-variety() accessor is "empty" then empty,
if the value of the component-variety() accessor is "simple" then the value of
{simple type definition} (1.1) or the value of {content type} (1.0);
otherwise the value of the term() accessor
</td></tr><tr><td valign="top">Attribute Use </td><td valign="top">the value of {attribute declaration}</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">the
value {attribute declaration} for each Attribute Use in {attribute uses}
</td></tr><tr><td valign="top">Model Group Definition </td><td valign="top">the value of
{model group}</td></tr><tr><td valign="top">Model Group </td><td valign="top">the value of
the {term} of each Particle in {particles}</td></tr><tr><td valign="top">Particle</td><td valign="top">the value of {term}</td></tr><tr><td valign="top">Wildcard</td><td valign="top">empty</td></tr><tr><td valign="top">Identity‑Constraint Definition </td><td valign="top">empty</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">the value of {type definition}</td></tr><tr><td valign="top">Assertion</td><td valign="top">empty</td></tr><tr><td valign="top">Notation Declaration </td><td valign="top">empty</td></tr><tr><td valign="top">Annotation </td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">the value of {element declarations}</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">the value of {facets}</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">empty</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">empty</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-component-linked" name="accessor-component-linked" />4.5.5 component-linked Accessor</h4><p>The component-linked accessor returns a sequence of schema components
immediately accessible using any axis, skipping minor components that produce
no steps in the schema component path.
</p><table border="0" cellspacing="5" summary="component-linked accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of component-linked()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">
the value of the component-children() and annotations() accessors,
together with the {scope} (1.0) or the {parent} of {scope} (1.1)
</td></tr><tr><td valign="top">Element Declaration</td><td valign="top">
the value of the component-children() and annotations() accessors,
together with the value of {scope} and {substitution group affiliation}
(1.0) or the value of {substitution group affiliations}, the value of the
{parent} of {scope},
the value of the {alternatives} and {default type definition} of {type table}
(1.1), along with the value of {identity constraint definitions}
</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">
the value of component-children() and annotations() accessors,
together with the value of {base type definition}, {context},
{attribute wildcard}, and {assertions} and the value of {wildcard} of
{open content} of {content type}
</td></tr><tr><td valign="top">Attribute Use</td><td valign="top">
the value of the component-children() and annotations() accessors
</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">the
value of the component-children() and annotations() accessors,
as well as the value of {attribute wildcard}
</td></tr><tr><td valign="top">Model Group Definition </td><td valign="top">
the value of the component-children() and annotations() accessors
</td></tr><tr><td valign="top">Model Group</td><td valign="top">the value of
the component-children() and annotations() accessors</td></tr><tr><td valign="top">Particle</td><td valign="top">the value of the
component-children() accessor</td></tr><tr><td valign="top">Wildcard</td><td valign="top">the value of the
annotations() accessor</td></tr><tr><td valign="top">Identity‑Constraint Definition </td><td valign="top">the value of the annotations() accessor, together with the value
of {referenced key}</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">the value of
the component-childrenl() and annotations() accessors</td></tr><tr><td valign="top">Assertion</td><td valign="top">the value of the
annotations() accessor</td></tr><tr><td valign="top">Notation Declaration</td><td valign="top">the value of
the annotations() accessor</td></tr><tr><td valign="top">Annotation</td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">
the value of the component-children() and annotations() accessors, as well as
the value of {type definitions}, {attribute declarations}, {attribute group
definitions}, {model group definitions}, {notation declarations}, and
{identity-constraint definitions}</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">the value of
the component-children() and annotations() accessors, together with the value
of {context}, {base type definition}, {fundamental facets}, {primitive type
definition}, {item type definition}, and {member type definitions}</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">the value of the
annotations() accessor, together with the value of {value} in the case that the
facet is the "assertions" facet</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">empty</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-term" name="accessor-term" />4.5.6 term Accessor</h4><p>The term accessor returns term components linked through the
{model group} or {term} arcs, possibly via {particle}, {particles}, or {content
type} arcs.</p><table border="0" cellspacing="5" summary="term accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of term()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Element Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">
the value of {term} of {particle} of {content type} (1.1) or the value of
{term} of {content type} (1.0),
together with the value of {wildcard} of
{open content} of {content type}
</td></tr><tr><td valign="top">Attribute Use</td><td valign="top">empty</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Model Group Definition</td><td valign="top">value of {model group}</td></tr><tr><td valign="top">Model Group</td><td valign="top">empty</td></tr><tr><td valign="top">Particle</td><td valign="top">the value of {term}</td></tr><tr><td valign="top">Wildcard</td><td valign="top">empty</td></tr><tr><td valign="top">Identity‑Constraint Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">empty</td></tr><tr><td valign="top">Assertion</td><td valign="top">empty</td></tr><tr><td valign="top">Notation Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Annotation</td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">empty</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">empty</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">empty</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-component-scope" name="accessor-component-scope" />4.5.7 component-scope Accessor</h4><p>The component-scope accessor returns components linked through the
{scope} possibly via {parent} arcs.</p><table border="0" cellspacing="5" summary="component-scope accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of component-context()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">
if component-variety() is "global" then empty; otherwise
the value of {parent} of {scope} (1.1) or the value of {scope} (1.0)
</td></tr><tr><td valign="top">Element Declaration</td><td valign="top">
if component-variety() is "global" then empty; otherwise
the value of {parent} of {scope} (1.1) or the value of {scope} (1.0)
</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Attribute Use</td><td valign="top">empty</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Model Group Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Model Group</td><td valign="top">empty</td></tr><tr><td valign="top">Particle</td><td valign="top">empty</td></tr><tr><td valign="top">Wildcard</td><td valign="top">empty</td></tr><tr><td valign="top">Identity‑Constraint Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">empty</td></tr><tr><td valign="top">Assertion</td><td valign="top">empty</td></tr><tr><td valign="top">Notation Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Annotation</td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">empty</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">empty</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">empty</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-assertions" name="accessor-assertions" />4.5.8 assertions Accessor</h4><p>The assertions accessor returns assertions components linked through the
{assertions} or {value} arcs. The assertions
accessor is always empty for the 1.0 schema component model.</p><table border="0" cellspacing="5" summary="assertions accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of assertions()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Element Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">the value of {assertions}</td></tr><tr><td valign="top">Attribute Use</td><td valign="top">empty</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Model Group Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Model Group</td><td valign="top">empty</td></tr><tr><td valign="top">Particle</td><td valign="top">empty</td></tr><tr><td valign="top">Wildcard</td><td valign="top">empty</td></tr><tr><td valign="top">Identity‑Constraint Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">empty</td></tr><tr><td valign="top">Assertion</td><td valign="top">empty</td></tr><tr><td valign="top">Notation Declaration</td><td valign="top">empty</td></tr><tr><td valign="top">Annotation</td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">empty</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">empty</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">empty</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">empty unless
the facet name is "assertions"; the value of {value} otherwise</td></tr></tbody></table></div><div class="div3">
<h4><a id="accessor-annotations" name="accessor-annotations" />4.5.9 annotations Accessor</h4><p>The annotations accessor returns annotations components linked through the
{annotation} or {annotations} arc.
</p><table border="0" cellspacing="5" summary="annotations accessor details"><thead><tr><th align="left" valign="top">Component</th><th align="left" valign="top">Result of annotations()</th></tr></thead><tbody><tr><td valign="top">Attribute Declaration</td><td valign="top">the value of
{annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Element Declaration</td><td valign="top">the value of
{annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Complex Type Definition</td><td valign="top">
the value of {annotations}
</td></tr><tr><td valign="top">Attribute Use</td><td valign="top">the value of
{annotations}</td></tr><tr><td valign="top">Attribute Group Definition</td><td valign="top">the value of {annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Model Group Definition</td><td valign="top">the
value of {annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Model Group</td><td valign="top">the value of
{annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Particle</td><td valign="top">the value of {annotations}</td></tr><tr><td valign="top">Wildcard</td><td valign="top">the value of {annotation}
(1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Identity‑Constraint Definition</td><td valign="top">the value of {annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Type Alternative</td><td valign="top">the value of {annotations}</td></tr><tr><td valign="top">Assertion</td><td valign="top">the value of {annotations}</td></tr><tr><td valign="top">Notation Declaration</td><td valign="top">the value
of {annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Annotation</td><td valign="top">empty</td></tr><tr><td valign="top">Schema</td><td valign="top">the value of {annotations}</td></tr><tr><td valign="top">Simple Type Definition</td><td valign="top">the
value of {annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Constraining Facet</td><td valign="top">the value of
{annotation} (1.0) or {annotations} (1.1)</td></tr><tr><td valign="top">Fundamental Facet</td><td valign="top">empty</td></tr></tbody></table></div></div><div class="div2">
<h3><a id="section-canonical-path" name="section-canonical-path" />4.6 Canonical Schema Component Paths</h3><p>[<a title="canonical schema component path" id="key-canonical-schema-component-path" name="key-canonical-schema-component-path">Definition</a>: The <b>canonical schema
component path</b> of a component is a distinguished valid component path
that uniquely identifies that particular component, that has as few steps as
possible, and that can be deterministically constructed starting from the schema description component, and that contains no
extension axes or accessors.
]</p><p>The remainder of this section consists of a constructive definition of
canonical schema component paths: a path produced by this construction will be
the canonical one.</p><p>[<a title="current schema component" id="key-current-component" name="key-current-component">Definition</a>: The
<b>current schema component</b> is a schema component for which
there is a valid canonical path through the schema component graph.]</p><p>[<a title="target schema component" id="key-target-component" name="key-target-component">Definition</a>: The
<b>target schema component</b> is a schema component linked to the
current schema component via one of the schema component properties
defined previously.]</p><p>[<a title="component relationship" id="key-component-relationship" name="key-component-relationship">Definition</a>: The
<b>component relationship</b> is the name of the schema component
property on the current schema component which references the target schema
component.
]</p><p>[<a title="ancestor set" id="key-ancestor-set" name="key-ancestor-set">Definition</a>: The
<b>ancestor set</b> of the target schema component is the set of schema
components on the valid canonical path to the current schema component
together with the current schema component.]</p><p>[<a title="base type set" id="key-base-type-set" name="key-base-type-set">Definition</a>:
The <b>base type set</b> of a schema component is the set
consisting of the {base type definition} of that schema component and
the {base type definition} of every member of the set.
]</p><p>Constructively, this set can be computed by adding the
{base type definition} to the set, and iterating on that type component, until
you see a component whose {target namespace} property is
"http://www.w3.org/2001/XMLSchema" and whose {name} property is
"anyType".
</p><p>[<a title="extended base type set" id="key-extended-base-type-set" name="key-extended-base-type-set">Definition</a>: The <b>extended base type
set</b> of a schema component is
the set consisting of the {base type definition} of that schema component if
its {derivation} method is "extension" and the {base type definition} of
every member of the set whose {derivation} method is "extension".
]
</p><p>[<a title="base facet set" id="key-base-facet-set" name="key-base-facet-set">Definition</a>: The <b>base facet set</b> of a schema
component is the set consisting of all members of the {facets} property of
members of the base type set of that schema component.]
</p><p>[<a title="same (facets)" id="key-same-facet" name="key-same-facet">Definition</a>: Two facets are <b>the same</b> if they
are the same kind of component (e.g. both are length facets) and their {value}
properties have identical values.]</p><p>[<a title="base attribute use set" id="key-base-attribute-use-set" name="key-base-attribute-use-set">Definition</a>: The <b>base attribute use
set</b> of a schema component is the set consisting of all members of the
{attribute uses} property of members of the base type set of that schema
component.]
</p><p>[<a title="same (attribute uses)" id="key-same-attr-uses" name="key-same-attr-uses">Definition</a>: Two attribute uses are <b>the
same</b> if the {name} and {target namespace} of their {attribute
declaration} properties are equal. ]
</p><p>(Note that this is not equality which requires checking the {type definition}
as well. However, the rules for component consistency will ensure that
checking the {name} and {target namespace} suffices for our purposes here.)
</p><p>[<a title="particle set" id="key-particle-set" name="key-particle-set">Definition</a>: The <b>particle set</b> of a schema
component is the set consisting
of the {content type} of that schema component with the members of the
{particles} property of the {term} of any member of the set.]
</p><p>[<a title="base particle set" id="key-base-particle-set" name="key-base-particle-set">Definition</a>: The <b>base particle set</b> of a
schema component is the union of all particle sets of all the members of the
extended base type set of that schema component.]
</p><p>[<a title="same (particles)" id="key-same-particle" name="key-same-particle">Definition</a>: Two particles are <b>the same</b> if
the implementation reports them as the same.] Informally,
implementations will report particles that are "inherited" from base types as
"the same" as the corresponding particle in the base type. Future revisions of
the XML Schema recommendation will specify more precisely the conditions under
which particles should be regarded as "the same".
</p><p>Traversal where the current schema component
is the schema description
component to any target schema component
is always permitted in the construction of a
canonical path. If the current schema component is not the schema description
schema component, then traversal from the current schema component
to the target schema component is forbidden in the construction of a canonical
path if any of the following conditions is met:</p><ol class="enumar"><li><p>the target schema component is an identity constraint definition</p></li><li><p>the target schema component is a simple or complex type
definition whose {name} property is not absent</p></li><li><p>the target schema component is an element or attribute declaration
whose {scope} property is <code>global</code></p></li><li><p>the target schema component has a {scope} property whose value is a
schema component and that schema component is not a member of the
ancestor set of the target schema component</p></li><li><p>the component relationship is {scope},
{substitution group affiliation},
{primitive type definition}, or {referenced key}</p></li><li><p>the component relationship is {base type definition}
and target schema component's {name} property is not absent</p></li><li><p>the target schema component is a facet and there exists some facet in
its base facet set of the target schema component that is the same as the
facet</p></li><li><p>the current schema component is a complex type, the target schema
component is the {attribute declaration} of an attribute use component and there
exists some attribute use in the base attribute use set of the current
schema component that is the same as the attribute use whose {attribute
declaration} is the target schema component</p></li><li><p>the target schema component is the {term} of a particle and there
exists some particle in the base particle set of the current schema component
that is the same as the target schema component</p></li></ol><p>Informally, the first two conditions ensure that the canonical path to
an identity constraint or a named type is the one that flows directly from the
schema description component, the third condition ensures that the canonical
path to element and attribute declarations is likewise the global one (if there
is one), the fourth
condition accounts for element and attribute declarations stemming from named
model groups and attribute groups, the fifth and sixth ensure that the
canonical path doesn't follow "backwards" paths (while accounting for
redefined types), and the final three
conditions ensure the canonical path to "inherited" components goes
through their component of origin.</p><p>Because the 1.0 component model provides no reliable
ordering of annotations, selection of a specific annotation using a numerical
predicate is forbidden in canonical paths against a 1.0 schema. For 1.1
schemas, an individual annotation component is selected using a numerical
predicate.</p><p>In general, it is not possible to obtain the canonical path for a
schema component without access to the schema component graph. In particular,
canonicalizing some non-canonical path, or determining whether a schema
component path is canonical cannot be performed without such access.
</p><p>For example, consider the path
<code>/type::x:foo/schemaElement::x:bar</code>.
</p><p>For this schema fragment, this represents a canonical path to the local
element <code>bar</code>:</p><div class="exampleInner"><pre>
<complexType name="foo">
<sequence>
<element name="bar" type="x:barType"/>
</sequence>
</complexType>
</pre></div><p>But for the following schema fragment,
the same path
represents a non-canonical path. The
canonical path would instead be <code>/group::x:barGroup/schemaElement::x:bar</code>.
</p><div class="exampleInner"><pre>
<group name="barGroup">
<sequence>
<element name="bar" type="x:barType"/>
</sequence>
</group>
<complexType name="foo">
<sequence>
<group ref="x:barGroup"/>
</sequence>
</complexType>
</pre></div><div class="div3">
<h4><a id="section-canonical-syntax" name="section-canonical-syntax" />4.6.1 Canonical Syntax</h4><p>The concrete syntax allows certain abbreviations, such as
eliding the positional predicate where it is
unnecessary to distinguish components,
wildcarded schema component name tests
(<code>*</code>), and abbreviated steps
(e.g. <code>@name</code>)
.
Canonical path syntax forbids all these abbreviations. In addition, the
canonical path syntax fixes the namespace prefix, if any, to
<code>p</code>. Since at most one namespace can be involved in a
canonical schema component path, one prefix suffices.
Finally, use of the current component, component, and
elided-component axes are disallowed in the canonical path
syntax, and the use of the particle and attributeUse axes are
disallowed except in the last step of the path.
</p></div></div><div class="div2">
<h3><a id="section-equality-path" name="section-equality-path" />4.7 Equality of Schema Component Paths</h3><p>[<a title="schema component paths are equal" id="key-equal-path" name="key-equal-path">Definition</a>: Two <b>schema component paths are
equal</b> if they have the same number of
steps, and each step in one path is equal to the corresponding
step in the other. Steps are equal if they have the same
axis, name test (namespace and local name, or wildcard), and predicate.
.]
</p><p>Note: This definition of equality neither relies on the notion of 'the same
component' nor defines component equivalence. A schema component may have
multiple schema component paths. Although these schema component paths address
'the same component', they are not equal. It is true, however, that two
canonical paths to the same component will be equal.</p></div></div><div class="div1">
<h2><a id="section-conformance" name="section-conformance" />5 Conformance</h2><div class="div2">
<h3><a id="scp-conformance" name="scp-conformance" />5.1 Schema Component Path Conformance</h3><p>Schema component paths may be used by other specifications.
For such usage, this specification does not define any criteria
for conformance and relies on other specifications to specify
criteria for conformance of implementations.
</p><p>Such specifications must define:
</p><ul><li><p>How the target schema is identified.</p></li><li><p>How namespace binding applies to schema component paths, in particular
how or whether the default namespace applies.</p></li><li><p>Whether only canonical schema component paths are
permitted.</p></li><li><p>Whether only complete schema component paths are permitted.</p></li><li><p>If incomplete schema component paths are permitted, how the initial
source component is determined.</p></li><li><p>Whether any extension axes are defined, together with their syntax
and semantics.</p></li><li><p>Whether any extension accessors are defined, together with their
syntax and semantics.</p></li></ul></div><div class="div2">
<h3><a id="scds-conformance" name="scds-conformance" />5.2 Schema Component Designator Conformance</h3><p>
This specification normatively depends on the XPointer Framework
<a href="#xptrframework">[XPTR]</a>.
</p><p>Conforming XPointer processors claiming to support the
<code>xscd()</code> scheme must
identify schema components as
defined in this specification and
conform to the XPointer <code>xmlns()</code> scheme
specification.
</p></div><div class="div2">
<h3><a id="N1136D" name="N1136D" />5.3 Extensibility</h3><p>Schema component paths and designators navigate the XML Schema component
model and are wholly dependent on that model to define the set of allowable
axes and referenced components. Therefore, as the schema component model
changes, this specification may add additional axes, mapping rules, and
accessors as required to support those changes.
The EBNF defines syntax for extension accessors after the last step in a path
and for extension axes.
</p></div></div><div class="div1">
<h2><a id="section-example" name="section-example" />6 Examples (Non-Normative)</h2><div class="div2">
<h3><a id="section-primer-example" name="section-primer-example" />6.1 Extended Primer Example</h3><p>This section walks through an example XML Schema Document from the XML
Schema Part 0: Primer<a href="#xsd0">[XSD0]</a> and
enumerates the abbreviated and canonical schema component designators for schema components.</p><p>All schema constructs in this section are considered to be in the following
schema document and its URI is <code>schema-URI</code>:</p><div class="exampleInner"><pre>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- elided... see below ... -->
</xsd:schema>
</pre></div><p>Since this schema has no target namespace, no namespace
binding is required and there is no <code>xmlns()</code> pointer part for any
of the schema component designators for this schema.</p><p>The canonical schema component designator for this schema description
component is <code>schema-URI#xscd(/)</code>.</p><div class="exampleInner"><pre>
<xsd:annotation>
<xsd:documentation xml:lang="en">
Purchase order schema for Example.com.
Copyright 2000 Example.com. All rights reserved.
</xsd:documentation>
</xsd:annotation>
</pre></div><p>The canonical schema component designator for this annotation schema component
is <code>schema-URI#xscd(/annotation::*)</code>.</p><p>The following is a global element declaration:</p><div class="exampleInner"><pre>
<xsd:element name="purchaseOrder" type="PurchaseOrderType"/>
</pre></div><p>The abbreviated schema component designator for this element declaration component
is <code>schema-URI#xscd(/purchaseOrder)</code> and the canonical is
<code>schema-URI#xscd(/schemaElement::purchaseOrder)</code>.</p><p>The following is another global element declaration, </p><div class="exampleInner"><pre>
<xsd:element name="comment" type="xsd:string"/>
</pre></div><p>The abbreviated schema component designator for this element declaration
component is <code>schema-URI#xscd(/comment)</code> and the canonical is
<code>schema-URI#xscd(/schemaElement::comment)</code>.</p><p>This following is a global complex type definition component:</p><div class="exampleInner"><pre>
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="shipTo" type="USAddress"/>
<xsd:element name="billTo" type="USAddress"/>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="items" type="Items"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>
</pre></div><p>The abbreviated schema component designator for this complex type definition
and its element and attribute declaration components are:</p><div class="exampleInner"><pre>
schema-URI#xscd(/~purchaseOrderType)
schema-URI#xscd(/~purchaseOrderType/shipTo)
schema-URI#xscd(/~purchaseOrderType/billTo)
schema-URI#xscd(/comment)
schema-URI#xscd(/~purchaseOrderType/items)
schema-URI#xscd(/~purchaseOrderType/@orderDate)
</pre></div><p>The canonical schema component designator for this complex type definition and
its element and attribute declaration components are:</p><div class="exampleInner"><pre>
schema-URI#xscd(/type::purchaseOrderType)
schema-URI#xscd(/type::purchaseOrderType/model::sequence/schemaElement::shipTo)
schema-URI#xscd(/type::purchaseOrderType/model::sequence/schemaElement::billTo)
schema-URI#xscd(/schemaElement::comment)
schema-URI#xscd(/type::purchaseOrderType/model::sequence/schemaElement::items)
schema-URI#xscd(/type::purchaseOrderType/schemaAttribute::orderDate)
</pre></div><p>The following is another global complex type definition component:</p><div class="exampleInner"><pre>
<xsd:complexType name="USAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="zip" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:NMTOKEN"
fixed="US"/>
</xsd:complexType>
</pre></div><p>The abbreviated schema component designator for this complex type definition
and its element and attribute declaration components are:</p><div class="exampleInner"><pre>
schema-URI#xscd(/~USAddress)
schema-URI#xscd(/~USAddress/name)
schema-URI#xscd(/~USAddress/street)
schema-URI#xscd(/~USAddress/city)
schema-URI#xscd(/~USAddress/state)
schema-URI#xscd(/~USAddress/zip)
schema-URI#xscd(/~USAddress/@country)
</pre></div><p>The canonical schema component designator for this complex type definition and its
element and attribute declaration components are:</p><div class="exampleInner"><pre>
schema-URI#xscd(/type::USAddress)
schema-URI#xscd(/type::USAddress/model::sequence/schemaElement::name)
schema-URI#xscd(/type::USAddress/model::sequence/schemaElement::street)
schema-URI#xscd(/type::USAddress/model::sequence/schemaElement::city)
schema-URI#xscd(/type::USAddress/model::sequence/schemaElement::state)
schema-URI#xscd(/type::USAddress/model::sequence/schemaElement::zip)
schema-URI#xscd(/type::USAddress/schemaAttribute::country)
</pre></div><p>The following is a global complex type definition with anonymous complex type and
simple type definition components:</p><div class="exampleInner"><pre>
<xsd:complexType name="Items">
<xsd:sequence>
<xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="productName" type="xsd:string"/>
<xsd:element name="quantity">
<xsd:simpleType>
<xsd:restriction base="xsd:positiveInteger">
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="USPrice" type="xsd:decimal"/>
<xsd:element ref="comment" minOccurs="0"/>
<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="partNum" type="SKU" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</pre></div><p>The abbreviated schema component designator for this complex type definition
and its element and attribute declaration, simple type definition, and facet
components are:</p><div class="exampleInner"><pre>
schema-URI#xscd(/~Items)
schema-URI#xscd(/~Items/item)
schema-URI#xscd(/~Items/item/~0))
schema-URI#xscd(/~Items/item/productName)
schema-URI#xscd(/~Items/item/quantity)
schema-URI#xscd(/~Items/item/quantity/~0)
schema-URI#xscd(/~Items/item/quantity/~0/facet::maxExclusive)
schema-URI#xscd(/~Items/item/USPrice)
schema-URI#xscd(/comment)
schema-URI#xscd(/~Items/item/shipDate)
schema-URI#xscd(/~Items/item/@partNum)
</pre></div><p>The canonical schema component designator for this complex type definition and its
element and attribute declaration, simple type definition, and facet
components are (paths broken across lines for
readability):</p><div class="exampleInner"><pre>
schema-URI#xscd(/type::Items)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0/
model::sequence/schemaElement::productName)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0/
model::sequence/schemaElement::quantity)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0/
model::sequence/schemaElement::quantity/type::0)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0/
model::sequence/schemaElement::quantity/type::0/
facet::maxExclusive)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0/
model::sequence/schemaElement::USPrice)
schema-URI#xscd(/schemaElement::comment)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0/
model::sequence/schemaElement::shipDate)
schema-URI#xscd(/type::Items/model::sequence/schemaElement::item/type::0/
schemaAttribute::partNum)
</pre></div><p>The following is a global simple type definition component:</p><div class="exampleInner"><pre>
<!-- Stock Keeping Unit, a code for identifying products -->
<xsd:simpleType name="SKU">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{3}-[A-Z]{2}"/>
</xsd:restriction>
</xsd:simpleType>
</pre></div><p>The canonical schema component designator for this simple type definition
and its facet component are:</p><div class="exampleInner"><pre>
schema-URI#xscd(/type::SKU)
schema-URI#xscd(/type::SKU/facet::pattern)
</pre></div></div><div class="div2">
<h3><a id="section-example-more" name="section-example-more" />6.2 Additional Examples</h3><p>The schema for the examples in the previous section had no
target namespace. If we change the schema so that the target namespace is
<code>"http://example.com/schema/po"</code>, then the schema
component designators need to take namespace bindings into account.
</p><p>For example, the abbreviated schema component designator for the
complex type definition <code>USAddress</code> and its element and attribute
declaration components are:</p><div class="exampleInner"><pre>
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/~p:USAddress)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/~p:USAddress/p:name)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/~p:USAddress/p:street)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/~p:USAddress/p:city)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/~p:USAddress/p:state)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/~p:USAddress/p:zip)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/~p:USAddress/@country)
</pre></div><p>Note that since the <code>attributeFormDefault</code> for the
schema is <code>unqualified</code> (the default value), no namespace prefix is
used with the <code>country</code> attribute.</p><p>The canonical schema component designator for this complex type
definition and its element and attribute declaration components are (paths
broken across lines for readability):</p><div class="exampleInner"><pre>
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress/
model::sequence/schemaElement::p:name)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress/
model::sequence/schemaElement::p:street)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress/
model::sequence/schemaElement::p:city)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress/
model::sequence/schemaElement::p:state)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress/
model::sequence/schemaElement::p:zip)
schema-URI#xmlns(p=http://example.com/schema/po)xscd(/type::p:USAddress/
schemaAttribute::country)
</pre></div><p>Schema component paths may also be used in other contexts that
provide namespace binding contexts. For example, an XML representation may
apply normal namespace binding rules to apply to embedded schema component
paths:
</p><div class="exampleInner"><pre>
<xsx:ui xmlns:err="http://example.com/extension/ui"
xmlns:p="http://example.com/schema/po">
<xsx:component>
<xsx:path>/~p:USAddress/p:state</xsx:path>
<xsx:prompt>State</xsx:prompt>
<xsx:display>selector</xsx:display>
<xsx:choices>http://example.com/state-menu.xml</xsx:choices>
<xsx:tab>Address</xsx:tab>
</xsx:component>
</xsx:ui>
</pre></div><p>Another possible means of binding namespaces is to use the namespace URI as
the schema designator with the convention that it is the default namespace.
This could be useful combined with the use of just the schema component paths
in the fragment identifier to obtain terse identifiers for global schema types
in single-namespace schemas:
</p><div class="exampleInner"><pre>
http://www.w3.org/2001/XMLSchema#/~gMonth
</pre></div><div class="note"><p class="prefix"><b>Note:</b></p><p>This specification does not define such a fragment identifier scheme
for namespace documents. Neither does it rule out such a usage.
</p></div></div><div class="div2">
<h3><a id="section-examples-abbreviations" name="section-examples-abbreviations" />6.3 Examples with component and elided-component Axes (Non-Normative)</h3><p>The following examples assume that the namespace prefixes
<code>r</code> and <code>ipo</code> are appropriately bound.</p><p>Here is a path that designates an attribute declaration whose local name is
<code>period</code> in the namespace denoted by
<code>r</code> in an anonymous complex type:
</p><div class="exampleInner"><pre>/r:purchaseReport/type::0/@period</pre></div><p>Using the
elided-component axis to select the attribute
declaration directly from the element declaration, this path reduces to:
</p><div class="exampleInner"><pre>/r:purchaseReport/@period</pre></div><p>Here is a path that designates an
element
declaration whose local name is
<code>name</code> in the namespace denoted by
<code>ipo</code>
in a globally defined type:
</p><div class="exampleInner"><pre>/type::ipo:USAddress/model::sequence/model::sequence[1]/name</pre></div><p>
Using the elided-component axis to select the element
declaration directly from the complex type definition,
this path reduces to:</p><div class="exampleInner"><pre>/type::ipo:USAddress/name</pre></div><p>This path designates an element declaration whose local name is
<code>regions</code>
in the namespace denoted by
<code>r</code>
in an anonymous complex type:
</p><div class="exampleInner"><pre>/r:purchaseReport/type::0/model::sequence/r:regions</pre></div><p>Using the elided-component axis to select
the element declaration r:regions directly from the element declaration
r:purchaseReport, this path reduces to:</p><div class="exampleInner"><pre>/r:purchaseReport/r:regions</pre></div><p>This path
designates global or local element declarations whose local
name is <code>quantity</code> in the namespace denoted by <code>r</code>:</p><div class="exampleInner"><pre>//r:quantity</pre></div><p>This path designates global or local element declarations whose
local name is <code>quantity</code> in the namespace denoted
by <code>r</code>, where these declarations
are in the subgraph represented by the global complex type component whose
local name is <code>Items</code> in the namespace denoted by
<code>r</code>:
</p><div class="exampleInner"><pre>/~r:Items//r:quantity</pre></div><p>This path designates global or local attribute
declarations whose local name is <code>partNum</code> in the
namespace denoted by <code>r</code>
where these declarations are in the subgraph represented by the global complex
type component whose
local name is <code>Items</code>
in the namespace denoted by <code>r</code>:</p><div class="exampleInner"><pre>/~r:Items//@partNum</pre></div><p>This extended example works against the following schema
fragment for a schema with no target namespace:
</p><div class="exampleInner"><pre>
<xs:element name="example" type="aType"/>
<xs:complexType name="aType">
<xs:sequence>
<xs:element name="foo"/>
<xs:group ref="aGroup"/>
</xs:sequence>
</xs:complexType>
<xs:group name="aGroup">
<xs:sequence>
<xs:element name="bar">
<xs:complexType>
<xs:sequence>
<xs:element ref="foo"/>
<xs:element ref="a"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="foo"/>
</pre></div><p>
Which of the following paths can be shortened to <code>//foo</code> using the
component and elided-component axes?
</p><table border="0" cellspacing="5" summary="//foo"><thead><tr><th>Path</th><th>Shortened to <code>//foo</code>?</th></tr></thead><tbody><tr><td><code>/group::aGroup/model::sequence/bar/~0/model::sequence/foo</code></td><td>No</td></tr><tr><td><code>/~aType/model::sequence/foo</code></td><td>Yes</td></tr><tr><td><code>/~aType/model::sequence/model::sequence/bar/~0/foo</code></td><td>No</td></tr><tr><td><code>/root/~aType/model::sequence/foo</code></td><td>Yes</td></tr><tr><td><code>/root/~aType/model::sequence/model::sequence/bar/~0/foo</code></td><td>No</td></tr></tbody></table><p>The "no" answers are all because <code>bar</code> is not selected
by either the component axis or the elided-component axis and must therefore
appear in the path.</p></div></div></div><div class="back"><div class="div1">
<h2><a id="properties" name="properties" />A Schema Component Properties (Non-Normative)</h2><p>Schema component paths rely on the schema component graph implicit in
the assembled collection of schema components and their properties. The
following table details which properties are used for defining schema component
paths, and whether they are used to define links in the graph
(traversed) or just referenced for some other purpose. Traversals marked with a
star (*) are the default axis of traversal.
</p><table border="2" rules="rows" cellspacing="5" cellpadding="5" summary="Use of Schema Component Properties"><thead><tr><th>Component or Property Record</th><th>Property</th><th>Use</th></tr></thead><tbody><tr><th rowspan="8">Attribute Declaration</th></tr><tr><td>{type definition}</td><td>traversed *</td></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr><tr><td>{scope}</td><td>traversed</td></tr><tr><td>{value constraint}</td><td>none</td></tr></tbody><tbody><tr><th rowspan="3">Scope Property Record</th></tr><tr><td>{variety}</td><td>referenced</td></tr><tr><td>{parent}</td><td>traversed</td></tr></tbody><tbody><tr><th rowspan="16">Element Declaration</th></tr><tr><td>{type definition}</td><td>traversed *</td></tr><tr><td>{identity-constraint definitions}</td><td>traversed</td></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr><tr><td>{type table}</td><td>traversed</td></tr><tr><td>{scope}</td><td>traversed</td></tr><tr><td>{value constraint}</td><td>none</td></tr><tr><td>{nillable}</td><td>none</td></tr><tr><td>{substitution group affiliation}</td><td>traversed</td></tr><tr><td>{substitution group affiliations}</td><td>traversed</td></tr><tr><td>{substitution group exclusions}</td><td>none</td></tr><tr><td>{disallowed substitutions}</td><td>none</td></tr><tr><td>{abstract}</td><td>none</td></tr></tbody><tbody><tr><th rowspan="3">Type Table Property Record</th></tr><tr><td>{alternatives}</td><td>traversed</td></tr><tr><td>{default type definition}</td><td>traversed</td></tr></tbody><tbody><tr><th rowspan="14">Complex Type Definition</th></tr><tr><td>{base type definition}</td><td>traversed</td></tr><tr><td>{attribute uses}</td><td>traversed</td></tr><tr><td>{attribute wildcard}</td><td>traversed</td></tr><tr><td>{content type}</td><td>traversed *</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr><tr><td>{context}</td><td>traversed</td></tr><tr><td>{derivation method}</td><td>none</td></tr><tr><td>{final}</td><td>none</td></tr><tr><td>{abstract}</td><td>none</td></tr><tr><td>{prohibited substitutions}</td><td>none</td></tr><tr><td>{assertions}</td><td>traversed</td></tr></tbody><tbody><tr><th rowspan="5">Content Type Property Record</th></tr><tr><td>{variety}</td><td>referenced</td></tr><tr><td>{particle}</td><td>traversed *</td></tr><tr><td>{simple type definition}</td><td>traversed</td></tr><tr><td>{open content}</td><td>traversed</td></tr></tbody><tbody><tr><th rowspan="3">Open Content Property Record</th></tr><tr><td>{mode}</td><td>none</td></tr><tr><td>{wildcard}</td><td>traversed *</td></tr></tbody><tbody><tr><th rowspan="5">Attribute Use</th></tr><tr><td>{attribute declaration}</td><td>traversed *</td></tr><tr><td>{value constraint}</td><td>none</td></tr><tr><td>{required}</td><td>none</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr></tbody><tbody><tr><th rowspan="7">Attribute Group Definition</th></tr><tr><td>{attribute uses}</td><td>traversed *</td></tr><tr><td>{attribute wildcard}</td><td>traversed</td></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr></tbody><tbody><tr><th rowspan="6">Model Group Definition</th></tr><tr><td>{model group}</td><td>traversed *</td></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr></tbody><tbody><tr><th rowspan="5">Model Group</th></tr><tr><td>{particles}</td><td>traversed *</td></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{compositor}</td><td>referenced</td></tr></tbody><tbody><tr><th rowspan="5">Particle</th></tr><tr><td>{term}</td><td>traversed *</td></tr><tr><td>{min occurs}</td><td>none</td></tr><tr><td>{max occurs}</td><td>none</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr></tbody><tbody><tr><th rowspan="5">Wildcard</th></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{namespace constraint}</td><td>none</td></tr><tr><td>{process contents}</td><td>none</td></tr></tbody><tbody><tr><th rowspan="9">Identity-constraint Definition</th></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr><tr><td>{identity-constraint category}</td><td>none</td></tr><tr><td>{selector}</td><td>none</td></tr><tr><td>{fields}</td><td>none</td></tr><tr><td>{referenced key}</td><td>traversed</td></tr></tbody><tbody><tr><th rowspan="4">Type Alternative</th></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{test}</td><td>none</td></tr><tr><td>{type definition}</td><td>traversed *</td></tr></tbody><tbody><tr><th rowspan="3">Assertion</th></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{test}</td><td>none</td></tr></tbody><tbody><tr><th rowspan="7">Notation Declaration</th></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr><tr><td>{public identifier}</td><td>none</td></tr><tr><td>{system identifier}</td><td>none</td></tr></tbody><tbody><tr><th rowspan="4">Annotation</th></tr><tr><td>{application information}</td><td>none</td></tr><tr><td>{user information}</td><td>none</td></tr><tr><td>{attributes}</td><td>none</td></tr></tbody><tbody><tr><th rowspan="9">Schema</th></tr><tr><td>{type definitions}</td><td>traversed</td></tr><tr><td>{attribute declarations}</td><td>traversed</td></tr><tr><td>{element declarations}</td><td>traversed *</td></tr><tr><td>{attribute group definitions}</td><td>traversed</td></tr><tr><td>{model group definitions}</td><td>traversed</td></tr><tr><td>{notation declarations}</td><td>traversed</td></tr><tr><td>{identity constraint definitions}</td><td>traversed</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr></tbody><tbody><tr><th rowspan="14">Simple Type Definition</th></tr><tr><td>{base type definition}</td><td>traversed</td></tr><tr><td>{facets}</td><td>traversed *</td></tr><tr><td>{fundamental facets}</td><td>traversed</td></tr><tr><td>{item type definition}</td><td>traversed</td></tr><tr><td>{member type definitions}</td><td>traversed</td></tr><tr><td>{context}</td><td>traversed</td></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{name}</td><td>referenced</td></tr><tr><td>{target namespace}</td><td>referenced</td></tr><tr><td>{variety}</td><td>referenced</td></tr><tr><td>{final}</td><td>none</td></tr><tr><td>{primitive type definition}</td><td>traversed</td></tr></tbody><tbody><tr><th rowspan="5">Facets</th></tr><tr><td>{annotation}</td><td>traversed (special)</td></tr><tr><td>{annotations}</td><td>traversed (special)</td></tr><tr><td>{value}</td><td>traversed * (assertions only)</td></tr><tr><td>{fixed}</td><td>none</td></tr></tbody></table></div><div class="div1">
<h2><a id="axis-summary" name="axis-summary" />B Summary of Component Axes (Non-Normative)</h2><p>The following table details all the axes, the source and target component
kinds, a brief syntax summary, and indicates whether the axis is a default one.
</p><table border="2" rules="rows" cellspacing="5" cellpadding="5" summary="Summary of Component Axes"><thead><tr><th>Axis</th><th>Source Component</th><th>Target Component</th><th>Syntax</th><th>Default?</th></tr></thead><tbody><tr><th rowspan="2">(root)</th></tr><tr><td>N/A</td><td>Schema</td><td>/</td><td>no</td></tr></tbody><tbody><tr><th rowspan="11">annotations</th></tr><tr><td>Attribute Declaration</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Attribute Group Definition</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Complex Type Definition</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Element Declaration</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Facet</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Model Group Definition</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Notation Declaration</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Schema</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Simple Type Definition</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr><tr><td>Wildcard</td><td>Annotation</td><td><code>annotation::*</code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="3">attribute declarations</th></tr><tr><td>Attribute Use</td><td>Attribute Declaration</td><td><code>schemaAttribute::<var>qname</var></code></td><td>yes</td></tr><tr><td>Schema</td><td>Attribute Declaration</td><td><code>schemaAttribute::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">attribute group definitions</th></tr><tr><td>Schema</td><td>Attribute Group Definition</td><td><code>attributeGroup::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="3">attribute uses</th></tr><tr><td>Complex Type Definition</td><td>Attribute Use</td><td>N/A</td><td>no</td></tr><tr><td>Attribute Group Definition</td><td>Attribute Use</td><td>N/A</td><td>yes</td></tr></tbody><tbody><tr><th rowspan="3">attribute wildcard</th></tr><tr><td>Complex Type Definition</td><td>Attribute Wildcard</td><td><code>anyAttribute::*</code></td><td>no</td></tr><tr><td>Attribute Group Definition</td><td>Attribute Wildcard</td><td><code>anyAttribute::*</code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="4">base type definition</th></tr><tr><td rowspan="2">Complex Type Definition</td><td>Simple Type Definition</td><td><code>baseType::<var>qname</var></code></td><td>no</td></tr><tr><td>Complex Type Definition</td><td><code>baseType::<var>qname</var></code></td><td>no</td></tr><tr><td>Simple Type Definition</td><td>Simple Type Definition</td><td><code>baseType::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">content type</th></tr><tr><td>Complex Type Definition</td><td>Complex Type Definition</td><td><code>type::<var>qname</var></code></td><td>yes</td></tr></tbody><tbody><tr><th rowspan="2">element declarations</th></tr><tr><td>Schema</td><td>Element Declaration</td><td><code>schemaElement::<var>qname</var></code></td><td>yes</td></tr></tbody><tbody><tr><th rowspan="2">facets</th></tr><tr><td>Simple Type Definition</td><td>Facet</td><td><code>facet::<var>name</var></code></td><td>yes</td></tr></tbody><tbody><tr><th rowspan="2">fundamental facets</th></tr><tr><td>Simple Type Definition</td><td>Fundamental Facet</td><td><code>facet::<var>name</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="3">identity constraint definitions</th></tr><tr><td>Element Declaration</td><td>Identity-constraint Definition</td><td><code>identityConstraint::<var>qname</var></code></td><td>no</td></tr><tr><td>Schema</td><td>Identity-constraint Definition</td><td><code>identityConstraint::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">item type definition</th></tr><tr><td>Simple Type Definition</td><td>Simple Type Definition</td><td><code>itemType::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">member type definitions</th></tr><tr><td>Simple Type Definition</td><td>Simple Type Definition</td><td><code>memberType::<var>qname</var></code>[n]</td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">model group</th></tr><tr><td>Model Group Definition</td><td>Model Group</td><td><code>model::<var>compositor</var>[<var>n</var>]</code></td><td>yes</td></tr></tbody><tbody><tr><th rowspan="2">model group definitions</th></tr><tr><td>Schema</td><td>Model Group Definition</td><td><code>group::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">notation declarations</th></tr><tr><td>Schema</td><td>Notation Declaration</td><td><code>notation::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">particles</th></tr><tr><td>Model Group</td><td>Particle</td><td>N/A</td><td>yes</td></tr></tbody><tbody><tr><th rowspan="2">primitive type definition</th></tr><tr><td>Simple Type Definition</td><td>Simple Type Definition</td><td><code>primitivetype::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">referenced key</th></tr><tr><td>Identity-constraint Definition</td><td>Identity-constraint Definition</td><td><code>key::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="7">scope</th></tr><tr><td rowspan="3">Attribute Declaration</td><td>Simple Type Definition</td><td><code>scope::<var>qname</var></code></td><td>no</td></tr><tr><td>Complex Type Definition</td><td><code>scope::<var>qname</var></code></td><td>no</td></tr><tr><td>Attribute Group Definition</td><td><code>scope::<var>qname</var></code></td><td>no</td></tr><tr><td rowspan="3">Element Declaration</td><td>Simple Type Definition</td><td><code>scope::<var>qname</var></code></td><td>no</td></tr><tr><td>Complex Type Definition</td><td><code>scope::<var>qname</var></code></td><td>no</td></tr><tr><td>Model Group Definition</td><td><code>scope::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="7">context</th></tr><tr><td rowspan="2">Complex Type Definition</td><td>Element Declaration</td><td><code>context::<var>qname</var></code></td><td>no</td></tr><tr><td>Complex Type Definition</td><td><code>context::<var>qname</var></code></td><td>no</td></tr><tr><td rowspan="4">Simple Type Definition</td><td>Element Declaration</td><td><code>context::<var>qname</var></code></td><td>no</td></tr><tr><td>Attribute Declaration</td><td><code>context::<var>qname</var></code></td><td>no</td></tr><tr><td>Complex Type Definition</td><td><code>context::<var>qname</var></code></td><td>no</td></tr><tr><td>Simple Type Definition</td><td><code>context::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">substitution group affiliation</th></tr><tr><td>Element Declaration</td><td>Element Declaration</td><td><code>substitutionGroup::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="4">term</th></tr><tr><td rowspan="3">Particle</td><td>Element Declaration</td><td><code>schemaElement::<var>qname</var>[<var>n</var>]</code></td><td>yes</td></tr><tr><td>Model Group</td><td><code>model::compositor[<var>n</var>]</code></td><td>yes</td></tr><tr><td>Wildcard</td><td><code>any::*[<var>n</var>]</code></td><td>yes</td></tr></tbody><tbody><tr><th rowspan="7">type definitions</th></tr><tr><td rowspan="2">Attribute Declaration</td><td>Simple Type Definition</td><td><code>type::<var>qname</var></code></td><td>yes</td></tr><tr><td>Complex Type Definition</td><td><code>type::<var>qname</var></code></td><td>yes</td></tr><tr><td rowspan="2">Element Declaration</td><td>Simple Type Definition</td><td><code>type::<var>qname</var></code></td><td>yes</td></tr><tr><td>Complex Type Definition</td><td><code>type::<var>qname</var></code></td><td>yes</td></tr><tr><td rowspan="2">Schema</td><td>Simple Type Definition</td><td><code>type::<var>qname</var></code></td><td>no</td></tr><tr><td>Complex Type Definition</td><td><code>type::<var>qname</var></code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="3">assertions</th></tr><tr><td>Complex Type Definition</td><td>Assertion</td><td><code>assertion::*[<var>n</var>]</code></td><td>no</td></tr><tr><td>Facet</td><td>Assertion</td><td><code>assertion::*[<var>n</var>]</code></td><td>no</td></tr></tbody><tbody><tr><th rowspan="2">alternatives</th></tr><tr><td>Element Declaration</td><td>Type Alternative</td><td><code>alternative::*[<var>n</var>]</code></td><td>no</td></tr></tbody></table></div><div class="div1">
<h2><a id="normative-glossary" name="normative-glossary" />C Glossary (Non-Normative)</h2><p>The listing below is for the benefit of readers of a printed version of this document:
it collects together all the definitions which appear in the document above.</p><dl><dt><a href="#key-scd">absolute schema component designator</a></dt><dd>An
<b>absolute schema component designator</b> identifies
a particular schema component; it
consists of two parts: a designator
for the assembled schema (a <a title="schema designator" href="#key-sd">schema designator</a>), and a designator for a
particular schema component or schema components relative (a <a title="relative schema component designator" href="#key-relative-scd">relative
schema component designator</a>) to that assembled schema.</dd><dt><a href="#axis-alternatives">alternative-axis</a></dt><dd>The
<b><span><code>alternative</code></span></b> axis
contains
type alternative components linked to the current component
through {alternatives}, {default type definition}, or {type table} arcs,
which are those components
returned by the component-linked() accessor whose component-kind() is
equal to <code><span>xscd:</span>type-alternative</code>.
</dd><dt><a href="#key-ancestor-set">ancestor set</a></dt><dd>The
<b>ancestor set</b> of the target schema component is the set of schema
components on the valid canonical path to the current schema component
together with the current schema component.</dd><dt><a href="#axis-annotation">annotation axis</a></dt><dd>The
<b><span><code>annotation</code></span></b> axis contains annotation
components linked to the current component through {annotation} or
{annotations} arcs, which are the components returned
by the annotations() accessor.
</dd><dt><a href="#axis-anyAttribute">anyAttribute axis</a></dt><dd>The
<b><span><code>anyAttribute</code></span></b> axis contains
wildcard components linked to the current component
through {attribute wildcard} arcs.</dd><dt><a href="#axis-any">any axis</a></dt><dd>The <b><span><code>any</code></span></b>
axis contains
wildcard components linked to the current component
through {wildcard}, {term}, {particle}, {particles}, {content type}, or
{open content} arcs, which is the components returned by the
term() accessor whose component-kind() is equal to
<code><span>xscd:</span>wildcard</code>. </dd><dt><a href="#key-arc">arc</a></dt><dd>A traversal from one component to another
takes place across some particular component property. This property is
the <b>arc</b> of traversal.
</dd><dt><a href="#axis-assertion">assertion axis</a></dt><dd>The
<b><span><code>assertion</code></span></b> axis contains
assertion components linked to the current component
through {assertions}, {value}, or {facets} arcs, which are those components
returned by the assertions() accessor.</dd><dt><a href="#axis-attributeGroup">attributeGroup axis</a></dt><dd>The
<b><span><code>attributeGroup</code></span></b> axis contains
attribute group definition components linked to the current component through
{attribute group definitions} arcs, which are those components
returned by the component-linked() accessor whose component-kind() is equal to
<code><span>xscd:</span>attribute-group-definition</code>.</dd><dt><a href="#axis-attributeUse">attributeUse axis</a></dt><dd>The
<b><span><code>attributeUse</code></span></b> axis contains attribute use components
linked to the current component through {attribute uses}.
</dd><dt><a href="#key-scp-axis">axis</a></dt><dd>A schema component path <b>axis</b>
contains specific components linked to the
current context component through certain kinds of arcs.
Unless otherwise indicated, an axis applied to
a component that has no arc of the required kind designates no components.
</dd><dt><a href="#key-base-attribute-use-set">base attribute use set</a></dt><dd>The <b>base attribute use
set</b> of a schema component is the set consisting of all members of the
{attribute uses} property of members of the base type set of that schema
component.</dd><dt><a href="#key-base-facet-set">base facet set</a></dt><dd>The <b>base facet set</b> of a schema
component is the set consisting of all members of the {facets} property of
members of the base type set of that schema component.</dd><dt><a href="#key-base-particle-set">base particle set</a></dt><dd>The <b>base particle set</b> of a
schema component is the union of all particle sets of all the members of the
extended base type set of that schema component.</dd><dt><a href="#axis-baseType">baseType axis</a></dt><dd>The
<b><span><code>baseType</code></span></b> axis contains
simple type definition and complex type definition components linked to the
current component through {base type definition} arcs.
</dd><dt><a href="#key-base-type-set">base type set</a></dt><dd>
The <b>base type set</b> of a schema component is the set
consisting of the {base type definition} of that schema component and
the {base type definition} of every member of the set.
</dd><dt><a href="#key-canonicalized-xscd">canonicalized xscd XPointer pointer part</a></dt><dd>
A <b><span>canonicalized <code>xscd</code> XPointer pointer part</span></b> is
an <code>xscd</code> XPointer pointer part whose
pointer data is a canonical schema
component path.
</dd><dt><a href="#key-canonical-scd">canonical schema component designator</a></dt><dd>
A <b>canonical schema component designator</b>
is an absolute schema component designator that is a URI
that has been mapped from a LEIRI to an IRI in accordance
with the rules given in <a href="#leiri">[LEIRI]</a>, mapped from an IRI to a URI in
accordance with
the rules given in RFC 3987<a href="#rfc3987">[RFC 3987]</a>, and
normalized according to the rules of
syntax-based normalization given there;
and where the relative schema component designator consists of an
<code>xmlns</code> XPointer pointer part (if required) followed
by a <a title="canonicalized xscd XPointer pointer part" href="#key-canonicalized-xscd"><span>canonicalized <code>xscd</code> XPointer pointer part</span></a>.
</dd><dt><a href="#key-canonical-schema-component-path">canonical schema component path</a></dt><dd>The <b>canonical schema
component path</b> of a component is a distinguished valid component path
that uniquely identifies that particular component, that has as few steps as
possible, and that can be deterministically constructed starting from the schema description component, and that contains no
extension axes or accessors.
</dd><dt><a href="#axis-component">component axis</a></dt><dd>The
<b><span><code>component</code></span></b> axis contains the transitive closure of
schema
components that are either linked to the schema description component or that
are linked to current component through default arcs. That is, it contains
the transitive
closure of the component-children() accessor, as well as
component-linked()
accessor if the schema description is the current component.
</dd><dt><a href="#key-component-relationship">component relationship</a></dt><dd>The
<b>component relationship</b> is the name of the schema component
property on the current schema component which references the target schema
component.
</dd><dt><a href="#axis-context">context axis</a></dt><dd>The
<b><span><code>context</code></span></b> axis contains
complex type definition, attribute declaration, or
element declaration components linked to the current component
through {context} arcs.
</dd><dt><a href="#axis-currentComponent">currentComponent axis</a></dt><dd>The
<b><span><code>currentComponent</code></span></b> axis contains the current component.
</dd><dt><a href="#key-current-component">current schema component</a></dt><dd>The
<b>current schema component</b> is a schema component for which
there is a valid canonical path through the schema component graph.</dd><dt><a href="#key-default-arc">default arc</a></dt><dd>A <b>default
arc</b> is a privileged
arc of traversal.
</dd><dt><a href="#axis-elided-component">elided-component axis</a></dt><dd>The
<b><span><code>elided-component</code></span></b> axis contains complex type
definitions
linked to the current component through the {type definition} arc and the
transitive closure of all model group components linked to the current
component. That is, it contains the transitive closure of components returned
from the term() accessor whose component-kind() is equal to
<code><span>xscd:</span>model-group</code>, as well as components linked to the current component
through the {type definition} arc.
</dd><dt><a href="#key-extended-base-type-set">extended base type set</a></dt><dd>The <b>extended base type
set</b> of a schema component is
the set consisting of the {base type definition} of that schema component if
its {derivation} method is "extension" and the {base type definition} of
every member of the set whose {derivation} method is "extension".
</dd><dt><a href="#axis-facet">facet axis</a></dt><dd>The
<b><span><code>facet</code></span></b> axis contains
facet components linked to the current component
through {facets} or {fundamental facets} arcs, which is the components returned
by component-linked() whose component-kind() is equal
to <code><span>xscd:</span>facet</code>.
</dd><dt><a href="#axis-group">group axis</a></dt><dd>The
<b><span><code>group</code></span></b> axis contains
model group definition components linked to the current component through
{model group definitions} arcs, which are those components returned
by the component-linked() accessor whose component-kind() is equal to
<code><span>xscd:</span>model-group-definition</code>.
</dd><dt><a href="#axis-identityConstraint">identityConstraint axis</a></dt><dd>The
<b><span><code>identityConstraint</code></span></b> axis contains
identity constraint definition components linked to the current component
through {identity constraint definitions} arcs, which are those
components returned by the component-linked() accessor whose component-kind()
is equal to <code><span>xscd:</span>identity-constraint-definition</code>.
</dd><dt><a href="#axis-itemType">itemType axis</a></dt><dd>The
<b><span><code>itemType</code></span></b> axis contains
simple type definition components linked to the
current component through {item type definition} arcs.
</dd><dt><a href="#axis-key">key axis</a></dt><dd>The <b><span><code>key</code></span></b>
axis contains
identity constraint definition components linked to the
current component through {referenced key}
arcs.</dd><dt><a href="#axis-memberType">memberType axis</a></dt><dd>The
<b><span><code>memberType</code></span></b> axis contains
simple type definition components linked to the
current component through {member type definitions}
arcs. </dd><dt><a href="#axis-model">model axis</a></dt><dd>The
<b><span><code>model</code></span></b> axis contains
model group components linked to the current component
through {model group}, {term}, {particle}, {particles}, or {content type}
arcs, which are the components returned by the term() accessor
whose component-kind() is equal to <code><span>xscd:</span>model-group</code>.
</dd><dt><a href="#axis-notation">notation axis</a></dt><dd>The
<b><span><code>notation</code></span></b> axis contains
notation declaration components linked to the current component
through {notation declarations}
arcs, which are the components returned by the component-linked() accessor
whose component-kind() is equal to <code><span>xscd:</span>notation-declaration</code>.</dd><dt><a href="#axis-particle">particle axis</a></dt><dd>The
<b><span><code>particle</code></span></b> axis contains particle components
linked to the current component through {particles}.
</dd><dt><a href="#key-particle-set">particle set</a></dt><dd>The <b>particle set</b> of a schema
component is the set consisting
of the {content type} of that schema component with the members of the
{particles} property of the {term} of any member of the set.</dd><dt><a href="#axis-primitiveType">primitiveType axis</a></dt><dd>The
<b><span><code>primitiveType</code></span></b> axis contains
simple type definition components linked to the
current component through {primitive type definition}
arcs.</dd><dt><a href="#key-relative-scd">relative schema component designator</a></dt><dd>A
<b>relative schema component designator</b>
identifies a particular schema component relative to
some current assembled schema; it
is expressed as an <a href="http://www.w3.org/TR/xptr-framework/#scheme">XPointer scheme</a>
<code> xscd()</code> that uses a <a title="schema component path" href="#key-scp">schema component path</a>
as the <a href="http://www.w3.org/TR/xptr-framework/#NT-SchemeData">scheme data</a>.</dd><dt><a href="#key-same-attr-uses">same (attribute uses)</a></dt><dd>Two attribute uses are <b>the
same</b> if the {name} and {target namespace} of their {attribute
declaration} properties are equal. </dd><dt><a href="#key-same-facet">same (facets)</a></dt><dd>Two facets are <b>the same</b> if they
are the same kind of component (e.g. both are length facets) and their {value}
properties have identical values.</dd><dt><a href="#key-same-particle">same (particles)</a></dt><dd>Two particles are <b>the same</b> if
the implementation reports them as the same.</dd><dt><a href="#axis-schemaAttribute">schemaAttribute axis</a></dt><dd>The
<b><span><code>schemaAttribute</code></span></b> axis contains attribute
declaration components linked to the current component through
{attribute declaration} or {attribute declarations} arcs,
which are those components returned by the component-linked() accessor whose
component-kind() is equal to <code><span>xscd:</span>attribute-declaration</code>.
</dd><dt><a href="#key-equal-scd">schema component designators are equal</a></dt><dd>Two
<b>schema component designators are equal</b> if they are absolute
and their URIs are equal or if they are relative to the
same schema, and their <a title="schema component paths are equal" href="#key-equal-path">schema component paths are
equal</a>.</dd><dt><a href="#key-scp-nametest">schema component name test</a></dt><dd>A
<b>schema component name
test</b> is a condition on name of the components selected by the schema
component path step.</dd><dt><a href="#key-scp">schema component path</a></dt><dd>A
<b>schema component path</b> selects a sequence of
schema components in the context of an assembled schema; it is a series
of <a title="step" href="#key-scp-step">steps</a> separated by
'<code>/</code>' or '<code>//</code>'. Complete schema component paths always
start with either '<code>/</code>' or '<code>//</code>'.
</dd><dt><a href="#key-equal-path">schema component paths are equal</a></dt><dd>Two <b>schema component paths are
equal</b> if they have the same number of
steps, and each step in one path is equal to the corresponding
step in the other. Steps are equal if they have the same
axis, name test (namespace and local name, or wildcard), and predicate.
.</dd><dt><a href="#key-scp-pospred">schema component positional predicate</a></dt><dd>
A <b>schema component positional predicate</b> is a condition on the
relative position of the component in the sequence of matching components from
the schema component path step.</dd><dt><a href="#key-sd">schema designator</a></dt><dd>A <b>schema
designator</b> is a single URI for a resource representing an
assembled schema.</dd><dt><a href="#axis-schemaElement">schemaElement axis</a></dt><dd>The
<b><span><code>schemaElement</code></span></b> axis contains element
declaration components linked to the current component through
{element declarations}, {term}, {particle},
{particles}, or {content type}, which are the components returned by the
term() accessor whose component-kind() is equal to
<code><span>xscd:</span>element-declaration</code>, together with {element declarations}.
</dd><dt><a href="#axis-scope">scope axis</a></dt><dd>The
<b><span><code>scope</code></span></b> axis contains
complex type definition, attribute group definition, or
model group definition components linked to the current component
through {scope} and {parent} arcs, which are the components returned from
the component-scope() accessor.
</dd><dt><a href="#key-scp-step">step</a></dt><dd>A <b>step</b>
consists of a <a title="axis" href="#key-scp-axis">schema component
axis</a> and a <a title="schema component name test" href="#key-scp-nametest">schema component name
test</a> and
an optional <a title="schema component positional predicate" href="#key-scp-pospred">positional predicate</a>.
It selects a sequence of schema components that are linked to a
source component through an arc that matches the axis, pass the name test,
and are selected by the positional predicate, if any.
</dd><dt><a href="#axis-substitutionGroup">substitutionGroup axis</a></dt><dd>The
<b><span><code>substitutionGroup</code></span></b> axis contains
element declaration components linked to the current component
through {substitution group affiliation} and {substitution group affiliations}
arcs.
</dd><dt><a href="#key-target-component">target schema component</a></dt><dd>The
<b>target schema component</b> is a schema component linked to the
current schema component via one of the schema component properties
defined previously.</dd><dt><a href="#axis-type">type axis</a></dt><dd>The <b><span><code>type</code></span></b>
axis contains simple type definition
and complex type definition components linked to the current component through
{type definition}, {type definitions}, {content type},
or {simple type definition} arcs, which are the components
returned by the component-children() accessor whose
component-kind() is equal to either
<code><span>xscd:</span>complex-type-definition</code> or
<code><span>xscd:</span>simple-type-definition</code>.</dd></dl></div><div class="div1">
<h2><a id="references" name="references" />D References</h2><div class="div2">
<h3><a id="N11ED1" name="N11ED1" />D.1 Normative References</h3><dl><dt class="label"><a id="rfc3986" name="rfc3986" />RFC 3986</dt><dd>
<em><a href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource
Identifier (URI): Generic Syntax</a></em>, T. Berners-Lee, R. Fielding,
and L. Masinter. The Internet Society, January 2005. This version is
available at
<a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a>.
</dd><dt class="label"><a id="xsd2" name="xsd2" />XSD2</dt><dd>
<em><a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">XML Schema Part 2: Datatypes Second Edition</a></em>, Paul V. Biron and
Ashok Malhotra, Editors.
World Wide Web Consortium, 28 October 2004. This version is available at
<a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</a>.
The latest version is available at
<a href="http://www.w3.org/TR/xmlschema-2/">http://www.w3.org/TR/xmlschema-2/</a>.
</dd><dt class="label"><a id="xptrxmlns" name="xptrxmlns" />XPTR XMLNS</dt><dd>
<em><a href="http://www.w3.org/TR/2003/REC-xptr-xmlns-20030325/">XPointer xmlns() Scheme</a></em>, Steven J. DeRose, Ron Daniel Jr., Eve
Maler, Jonathan Marsh, Editors. World Wide Web Consortium, 25 March 2003.
This version is available at
<a href="http://www.w3.org/TR/2003/REC-xptr-xmlns-20030325/">http://www.w3.org/TR/2003/REC-xptr-xmlns-20030325/</a>.
The latest version is available at
<a href="http://www.w3.org/TR/xptr-xmlns/">http://www.w3.org/TR/xptr-xmlns/</a>.
</dd><dt class="label"><a id="rfc3987" name="rfc3987" />RFC 3987</dt><dd>
<em><a href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource
Identifiers (IRIs)</a></em>, M. Duerst and M. Suignard. The Internet
Society, January 2005. This version is available at
<a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a>.
</dd><dt class="label"><a id="xsd11_1" name="xsd11_1" />XSD11_1</dt><dd>
<em><a href="http://www.w3.org/TR/2008/WD-xmlschema11-1-20080620/">XML
Schema Definition Language (XSD) 1.1 Part 1: Structures</a></em>, Shundi
Gao, C. M. Sperberg-McQueen, Henry S. Thompson, Editors.
World Wide Web Consortium, 20 June 2008. This
version is available at
<a href="http://www.w3.org/TR/2008/WD-xmlschema11-1-20080620/">http://www.w3.org/TR/2008/WD-xmlschema11-1-20080620/</a>.
The latest version is available at
<a href="http://www.w3.org/TR/xmlschema11-1/">http://www.w3.org/TR/xmlschema11-1/</a>.
</dd><dt class="label"><a id="xptrframework" name="xptrframework" />XPTR</dt><dd>
<em><a href="http://www.w3.org/TR/2003/REC-xptr-framework-20030325/">XPointer
Framework</a></em> Paul Grosso, Eve Maler,
Jonathan Marsh, Norman Walsh, Editors. World Wide Web
Consortium, 25 March 2003.
The current version is available at
<a href="http://www.w3.org/TR/2003/REC-xptr-framework-20030325/">http://www.w3.org/TR/2003/REC-xptr-framework-20030325/</a>
The latest version is available at
<a href="http://www.w3.org/TR/xptr-framework/">http://www.w3.org/TR/xptr-framework/</a>.
</dd><dt class="label"><a id="xsd11_2" name="xsd11_2" />XSD11_2</dt><dd>
<em><a href="http://www.w3.org/TR/2008/WD-xmlschema11-2-20080620/">XML
Schema Definition Language (XSD) 1.1 Part 2: Datatypes</a></em>,
David Peterson, Shundi Gao, Ashok Malhotra, C. M. Sperberg-McQueen, and Henry
S. Thompson, Editors.
World Wide Web Consortium, 20 June 2008. This version is available at
<a href="http://www.w3.org/TR/2008/WD-xmlschema11-2-20080620/">http://www.w3.org/TR/2008/WD-xmlschema11-2-20080620/</a>.
The latest version is available at
<a href="http://www.w3.org/TR/xmlschema11-2/">http://www.w3.org/TR/xmlschema11-2/</a>.
</dd><dt class="label"><a id="xsd1" name="xsd1" />XSD1</dt><dd>
<em><a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">XML Schema Part 1: Structures (Second
Edition)</a></em>, Henry S. Thompson, David Beech, Murray Maloney and
Noah Mendelsohn, Editors. World Wide Web Consortium, 28 October 2004. This
version is available at
<a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/</a>.
The latest version is available at
<a href="http://www.w3.org/TR/xmlschema-1/">http://www.w3.org/TR/xmlschema-1/</a>.
</dd><dt class="label"><a id="leiri" name="leiri" />LEIRI</dt><dd>
<em><a href="http://www.w3.org/TR/2008/NOTE-leiri-20081103/">Legacy
extended IRIs for XML resource identification</a></em>, Henry S. Thompson,
Richard Tobin, and Norman Walsh. World Wide Web Consortium, 3 November 2008.
This version is available at
<a href="http://www.w3.org/TR/2008/NOTE-leiri-20081103/">http://www.w3.org/TR/2008/NOTE-leiri-20081103/</a>.
</dd></dl></div><div class="div2">
<h3><a id="N11FE7" name="N11FE7" />D.2 Non-normative Informational References</h3><dl><dt class="label"><a id="xsd0" name="xsd0" />XSD0</dt><dd>
<em><a href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/">XML Schema Part 0: Primer (Second
Edition)</a></em>, David C. Fallside, Editor. World Wide Web Consortium, 28 October 2004. This
version is available at
<a href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/</a>.
The latest version is available at
<a href="http://www.w3.org/TR/xmlschema-0/">http://www.w3.org/TR/xmlschema-0/</a>.
</dd><dt class="label"><a id="dom3" name="dom3" />DOM3</dt><dd>
<em><a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/">
Document Object
Model (DOM) Level 3 Core Specification, Version 1.0</a></em>,
Arnaud Le Hors, et al, Editors. World Wide Web
Consortium, 7 April 2004. This version is available at
<a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/">http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/
</a>.
The latest version is available at
<a href="http://www.w3.org/TR/DOM-Level-3-Core/">http://www.w3.org/TR/DOM-Level-3-Core/
</a>.
</dd></dl></div></div></div></body></html>