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