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
|
<?xml version="1.0"?>
<!DOCTYPE doc [
<!ELEMENT doc (#PCDATA)>
<!ATTLIST doc At NMTOKEN "$$$">
<!ATTLIST doc Ok NMTOKEN "1abc_2">
<!ATTLIST doc bad IDREF "1abc_2">
<!ATTLIST doc ok2 IDREF "abc_2">
<!ATTLIST doc bad2 IDREFS "abc:1 1abc_2">
<!ATTLIST doc ok3 IDREFS "abc:1 a1bc_2">
]>
<doc val="v1"/>
<!DOCTYPE test [
<!ELEMENT test EMPTY>
<!ATTLIST test attr1 NMTOKENS #IMPLIED>
]>
<!-- Should be invalid due to http://www.w3.org/XML/xml-V10-2e-errata#E20 -->
<test attr1=" a	b "/>
<?xml version="1.0"?>
<!DOCTYPE a [
<!ELEMENT a (#PCDATA | b | c | d | c)*>
]>
<a> violates [ VC: No Duplicate Types ] </a>
<!DOCTYPE doc [
]>
<doc/>
<!DOCTYPE doc [
<!ELEMENT doc (p)*>
]>
<doc><p/></doc>
<!DOCTYPE doc [
<!ELEMENT doc EMPTY>
]>
<doc>Oops, this element was declared EMPTY</doc>
<!DOCTYPE doc [
<!ELEMENT doc (#PCDATA | a | b)*>
<!ELEMENT a EMPTY>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<doc> This <b>seems</b> Ok <a/> but this <c>was not declared</c></doc>
<!DOCTYPE doc [
<!ELEMENT doc (a , b* , c+)>
<!ELEMENT a EMPTY>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<doc><a/><b> but this</b><c>was not declared</c><b>seems</b></doc>
<!DOCTYPE doc [
<!ELEMENT doc (a , b? , c+)?>
<!ELEMENT a EMPTY>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<doc><a/><b>lacks c</b></doc>
<!DOCTYPE doc [
<!ELEMENT doc ((a | b)* , c+, a, b?, c, a?)>
<!ELEMENT a EMPTY>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<doc><a/><b/><a/><c/><c/><a/></doc>
<!DOCTYPE doc [
<!ELEMENT doc ((a, b)| (a, c))>
<!ELEMENT a EMPTY>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<doc><a/><c> doc is non-deterministic </c></doc>
<!DOCTYPE doc [
<!ELEMENT doc (#PCDATA)>
<!ATTLIST doc val (v1 | v2 | v3) #IMPLIED>
]>
<doc val="v4"></doc>
<!DOCTYPE ns:doc [
<!ELEMENT ns:doc (#PCDATA | ns:a | ns:b)*>
<!ATTLIST ns:doc
ns:attr CDATA #REQUIRED
xmlns:ns CDATA #IMPLIED>
<!ELEMENT ns:a EMPTY>
<!ELEMENT ns:b (#PCDATA)>
]>
<ns:doc ns:attr="val" xmlns:ns="http://www.example.org/test/">
<ns:a/>
<ns:b>first line</ns:b>
<ns:b>second line</ns:b>
</ns:doc>
<!DOCTYPE doc [
<!ELEMENT doc (#PCDATA | ns:a | ns:b)*>
<!ATTLIST doc
attr CDATA #REQUIRED
xmlns:ns CDATA #IMPLIED>
<!ELEMENT a EMPTY>
<!ELEMENT b (#PCDATA)>
]>
<ns:doc ns:attr="val" xmlns:ns="http://www.example.org/test/">
<ns:a/>
<ns:b>first line</ns:b>
<ns:b>second line</ns:b>
</ns:doc>
<?xml version="1.0" ?>
<!DOCTYPE foo [
<!ELEMENT foo EMPTY>
<!ATTLIST foo
xmlns CDATA #FIXED "http://example.com/fooo"
xmlns:foo CDATA #REQUIRED
foo:info CDATA #IMPLIED>
]>
<foo xmlns="http://example.com/foo" xmlns:foo="http://example.com/fo" foo:info="toto"/>
<!DOCTYPE doc [
<!ELEMENT doc (#PCDATA)>
<!ATTLIST doc val ID #IMPLIED>
<!ATTLIST doc id ID #IMPLIED>
]>
<doc val="v1"></doc>
<!DOCTYPE doc [
<!ATTLIST doc val ID #IMPLIED>
<!ATTLIST doc id ID #IMPLIED>
<!ELEMENT doc (#PCDATA)>
]>
<doc val="v1"></doc>
<!DOCTYPE doc SYSTEM "dtds/doc.dtd" [
<!ATTLIST doc id ID #IMPLIED>
]>
<doc val="v1"></doc>
<!ENTITY % pe1 "EMPTY> <!ELEMENT e2 EMPTY>">
<!ELEMENT e1 %pe1;
<!ENTITY % p1 "(A|B">
<!ENTITY % p2 "|C|D)">
<!ELEMENT X %p1;%p2;>
<?xml version="1.0"?>
<!DOCTYPE a SYSTEM "dtds/a.dtd" [
<!ELEMENT a (#PCDATA | b | c)*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
]>
<a> violates [ VC: Unique Element Type Declaration ] </a>
<?xml version="1.0"?>
<!DOCTYPE a [
<!ELEMENT a (#PCDATA | b | c)*>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ELEMENT a (#PCDATA | b | c)*>
]>
<a> violates [ VC: Unique Element Type Declaration ] </a>
<!ELEMENT a (#PCDATA | b | c)*>
<!ATTLIST doc id ID #IMPLIED>
<!ELEMENT doc (#PCDATA)>
<!ATTLIST doc val ID #IMPLIED>
|