un.real <battal84@gmail.com>:
[reactos.git] / reactos / lib / libxml2 / test / relaxng / tutorA.rng
1 <grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
2 ns="http://relaxng.org/ns/structure/1.0"
3 xmlns="http://relaxng.org/ns/structure/1.0">
4
5 <start>
6 <ref name="pattern"/>
7 </start>
8
9 <define name="pattern">
10 <choice>
11 <element name="element">
12 <choice>
13 <attribute name="name">
14 <data type="QName"/>
15 </attribute>
16 <ref name="open-name-class"/>
17 </choice>
18 <ref name="common-atts"/>
19 <ref name="open-patterns"/>
20 </element>
21 <element name="attribute">
22 <ref name="common-atts"/>
23 <choice>
24 <attribute name="name">
25 <data type="QName"/>
26 </attribute>
27 <ref name="open-name-class"/>
28 </choice>
29 <interleave>
30 <ref name="other"/>
31 <optional>
32 <ref name="pattern"/>
33 </optional>
34 </interleave>
35 </element>
36 <element name="group">
37 <ref name="common-atts"/>
38 <ref name="open-patterns"/>
39 </element>
40 <element name="interleave">
41 <ref name="common-atts"/>
42 <ref name="open-patterns"/>
43 </element>
44 <element name="choice">
45 <ref name="common-atts"/>
46 <ref name="open-patterns"/>
47 </element>
48 <element name="optional">
49 <ref name="common-atts"/>
50 <ref name="open-patterns"/>
51 </element>
52 <element name="zeroOrMore">
53 <ref name="common-atts"/>
54 <ref name="open-patterns"/>
55 </element>
56 <element name="oneOrMore">
57 <ref name="common-atts"/>
58 <ref name="open-patterns"/>
59 </element>
60 <element name="list">
61 <ref name="common-atts"/>
62 <ref name="open-patterns"/>
63 </element>
64 <element name="mixed">
65 <ref name="common-atts"/>
66 <ref name="open-patterns"/>
67 </element>
68 <element name="ref">
69 <attribute name="name">
70 <data type="NCName"/>
71 </attribute>
72 <ref name="common-atts"/>
73 <ref name="other"/>
74 </element>
75 <element name="parentRef">
76 <attribute name="name">
77 <data type="NCName"/>
78 </attribute>
79 <ref name="common-atts"/>
80 <ref name="other"/>
81 </element>
82 <element name="empty">
83 <ref name="common-atts"/>
84 <ref name="other"/>
85 </element>
86 <element name="text">
87 <ref name="common-atts"/>
88 <ref name="other"/>
89 </element>
90 <element name="value">
91 <optional>
92 <attribute name="type">
93 <data type="NCName"/>
94 </attribute>
95 </optional>
96 <ref name="common-atts"/>
97 <text/>
98 </element>
99 <element name="data">
100 <attribute name="type">
101 <data type="NCName"/>
102 </attribute>
103 <ref name="common-atts"/>
104 <interleave>
105 <ref name="other"/>
106 <group>
107 <zeroOrMore>
108 <element name="param">
109 <attribute name="name">
110 <data type="NCName"/>
111 </attribute>
112 <ref name="common-atts"/>
113 <text/>
114 </element>
115 </zeroOrMore>
116 <optional>
117 <element name="except">
118 <ref name="common-atts"/>
119 <ref name="open-patterns"/>
120 </element>
121 </optional>
122 </group>
123 </interleave>
124 </element>
125 <element name="notAllowed">
126 <ref name="common-atts"/>
127 <ref name="other"/>
128 </element>
129 <element name="externalRef">
130 <attribute name="href">
131 <data type="anyURI"/>
132 </attribute>
133 <ref name="common-atts"/>
134 <ref name="other"/>
135 </element>
136 <element name="grammar">
137 <ref name="common-atts"/>
138 <ref name="grammar-content"/>
139 </element>
140 </choice>
141 </define>
142
143 <define name="grammar-content">
144 <interleave>
145 <ref name="other"/>
146 <zeroOrMore>
147 <choice>
148 <ref name="start-element"/>
149 <ref name="define-element"/>
150 <element name="div">
151 <ref name="common-atts"/>
152 <ref name="grammar-content"/>
153 </element>
154 <element name="include">
155 <attribute name="href">
156 <data type="anyURI"/>
157 </attribute>
158 <ref name="common-atts"/>
159 <ref name="include-content"/>
160 </element>
161 </choice>
162 </zeroOrMore>
163 </interleave>
164 </define>
165
166 <define name="include-content">
167 <interleave>
168 <ref name="other"/>
169 <zeroOrMore>
170 <choice>
171 <ref name="start-element"/>
172 <ref name="define-element"/>
173 <element name="div">
174 <ref name="common-atts"/>
175 <ref name="include-content"/>
176 </element>
177 </choice>
178 </zeroOrMore>
179 </interleave>
180 </define>
181
182 <define name="start-element">
183 <element name="start">
184 <ref name="combine-att"/>
185 <ref name="common-atts"/>
186 <ref name="open-pattern"/>
187 </element>
188 </define>
189
190 <define name="define-element">
191 <element name="define">
192 <attribute name="name">
193 <data type="NCName"/>
194 </attribute>
195 <ref name="combine-att"/>
196 <ref name="common-atts"/>
197 <ref name="open-patterns"/>
198 </element>
199 </define>
200
201 <define name="combine-att">
202 <optional>
203 <attribute name="combine">
204 <choice>
205 <value>choice</value>
206 <value>interleave</value>
207 </choice>
208 </attribute>
209 </optional>
210 </define>
211
212 <define name="open-patterns">
213 <interleave>
214 <ref name="other"/>
215 <oneOrMore>
216 <ref name="pattern"/>
217 </oneOrMore>
218 </interleave>
219 </define>
220
221 <define name="open-pattern">
222 <interleave>
223 <ref name="other"/>
224 <ref name="pattern"/>
225 </interleave>
226 </define>
227
228 <define name="name-class">
229 <choice>
230 <element name="name">
231 <ref name="common-atts"/>
232 <data type="QName"/>
233 </element>
234 <element name="anyName">
235 <ref name="common-atts"/>
236 <ref name="except-name-class"/>
237 </element>
238 <element name="nsName">
239 <ref name="common-atts"/>
240 <ref name="except-name-class"/>
241 </element>
242 <element name="choice">
243 <ref name="common-atts"/>
244 <ref name="open-name-classes"/>
245 </element>
246 </choice>
247 </define>
248
249 <define name="except-name-class">
250 <interleave>
251 <ref name="other"/>
252 <optional>
253 <element name="except">
254 <ref name="open-name-classes"/>
255 </element>
256 </optional>
257 </interleave>
258 </define>
259
260 <define name="open-name-classes">
261 <interleave>
262 <ref name="other"/>
263 <oneOrMore>
264 <ref name="name-class"/>
265 </oneOrMore>
266 </interleave>
267 </define>
268
269 <define name="open-name-class">
270 <interleave>
271 <ref name="other"/>
272 <ref name="name-class"/>
273 </interleave>
274 </define>
275
276 <define name="common-atts">
277 <optional>
278 <attribute name="ns"/>
279 </optional>
280 <optional>
281 <attribute name="datatypeLibrary">
282 <data type="anyURI"/>
283 </attribute>
284 </optional>
285 <zeroOrMore>
286 <attribute>
287 <anyName>
288 <except>
289 <nsName/>
290 <nsName ns=""/>
291 </except>
292 </anyName>
293 </attribute>
294 </zeroOrMore>
295 </define>
296
297 <define name="other">
298 <zeroOrMore>
299 <element>
300 <anyName>
301 <except>
302 <nsName/>
303 </except>
304 </anyName>
305 <zeroOrMore>
306 <choice>
307 <attribute>
308 <anyName/>
309 </attribute>
310 <text/>
311 <ref name="any"/>
312 </choice>
313 </zeroOrMore>
314 </element>
315 </zeroOrMore>
316 </define>
317
318 <define name="any">
319 <element>
320 <anyName/>
321 <zeroOrMore>
322 <choice>
323 <attribute>
324 <anyName/>
325 </attribute>
326 <text/>
327 <ref name="any"/>
328 </choice>
329 </zeroOrMore>
330 </element>
331 </define>
332
333 </grammar>
334