1*184e05d2SAndrew Rist<!--***********************************************************
2*184e05d2SAndrew Rist *
3*184e05d2SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*184e05d2SAndrew Rist * or more contributor license agreements.  See the NOTICE file
5*184e05d2SAndrew Rist * distributed with this work for additional information
6*184e05d2SAndrew Rist * regarding copyright ownership.  The ASF licenses this file
7*184e05d2SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*184e05d2SAndrew Rist * "License"); you may not use this file except in compliance
9*184e05d2SAndrew Rist * with the License.  You may obtain a copy of the License at
10*184e05d2SAndrew Rist *
11*184e05d2SAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12*184e05d2SAndrew Rist *
13*184e05d2SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*184e05d2SAndrew Rist * software distributed under the License is distributed on an
15*184e05d2SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*184e05d2SAndrew Rist * KIND, either express or implied.  See the License for the
17*184e05d2SAndrew Rist * specific language governing permissions and limitations
18*184e05d2SAndrew Rist * under the License.
19*184e05d2SAndrew Rist *
20*184e05d2SAndrew Rist ***********************************************************-->
21cdf0e10cSrcweir<grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
22cdf0e10cSrcweir  ns="http://relaxng.org/ns/structure/1.0"
23cdf0e10cSrcweir  xmlns:rng="http://relaxng.org/ns/structure/1.0"
24cdf0e10cSrcweir  xmlns="http://relaxng.org/ns/structure/1.0">
25cdf0e10cSrcweir
26cdf0e10cSrcweir  <start>
27cdf0e10cSrcweir    <ref name="pattern"/>
28cdf0e10cSrcweir  </start>
29cdf0e10cSrcweir
30cdf0e10cSrcweir  <define name="pattern">
31cdf0e10cSrcweir    <choice>
32cdf0e10cSrcweir      <element name="element">
33cdf0e10cSrcweir        <choice>
34cdf0e10cSrcweir          <attribute name="name">
35cdf0e10cSrcweir            <data type="QName"/>
36cdf0e10cSrcweir          </attribute>
37cdf0e10cSrcweir          <ref name="open-name-class"/>
38cdf0e10cSrcweir        </choice>
39cdf0e10cSrcweir        <ref name="common-atts"/>
40cdf0e10cSrcweir        <ref name="open-patterns"/>
41cdf0e10cSrcweir      </element>
42cdf0e10cSrcweir      <element name="attribute">
43cdf0e10cSrcweir        <ref name="common-atts"/>
44cdf0e10cSrcweir        <choice>
45cdf0e10cSrcweir          <attribute name="name">
46cdf0e10cSrcweir            <data type="QName"/>
47cdf0e10cSrcweir          </attribute>
48cdf0e10cSrcweir          <ref name="open-name-class"/>
49cdf0e10cSrcweir        </choice>
50cdf0e10cSrcweir        <interleave>
51cdf0e10cSrcweir          <ref name="other"/>
52cdf0e10cSrcweir          <optional>
53cdf0e10cSrcweir            <ref name="pattern"/>
54cdf0e10cSrcweir          </optional>
55cdf0e10cSrcweir        </interleave>
56cdf0e10cSrcweir      </element>
57cdf0e10cSrcweir      <element name="group">
58cdf0e10cSrcweir        <ref name="common-atts"/>
59cdf0e10cSrcweir        <ref name="open-patterns"/>
60cdf0e10cSrcweir      </element>
61cdf0e10cSrcweir      <element name="interleave">
62cdf0e10cSrcweir        <ref name="common-atts"/>
63cdf0e10cSrcweir        <ref name="open-patterns"/>
64cdf0e10cSrcweir      </element>
65cdf0e10cSrcweir      <element name="choice">
66cdf0e10cSrcweir        <ref name="common-atts"/>
67cdf0e10cSrcweir        <ref name="open-patterns"/>
68cdf0e10cSrcweir      </element>
69cdf0e10cSrcweir      <element name="optional">
70cdf0e10cSrcweir        <ref name="common-atts"/>
71cdf0e10cSrcweir        <ref name="open-patterns"/>
72cdf0e10cSrcweir      </element>
73cdf0e10cSrcweir      <element name="zeroOrMore">
74cdf0e10cSrcweir        <ref name="common-atts"/>
75cdf0e10cSrcweir        <ref name="open-patterns"/>
76cdf0e10cSrcweir      </element>
77cdf0e10cSrcweir      <element name="oneOrMore">
78cdf0e10cSrcweir        <ref name="common-atts"/>
79cdf0e10cSrcweir        <ref name="open-patterns"/>
80cdf0e10cSrcweir      </element>
81cdf0e10cSrcweir      <element name="list">
82cdf0e10cSrcweir        <ref name="common-atts"/>
83cdf0e10cSrcweir        <ref name="open-patterns"/>
84cdf0e10cSrcweir      </element>
85cdf0e10cSrcweir      <element name="mixed">
86cdf0e10cSrcweir        <ref name="common-atts"/>
87cdf0e10cSrcweir        <ref name="open-patterns"/>
88cdf0e10cSrcweir      </element>
89cdf0e10cSrcweir      <element name="ref">
90cdf0e10cSrcweir        <attribute name="name">
91cdf0e10cSrcweir          <data type="NCName"/>
92cdf0e10cSrcweir        </attribute>
93cdf0e10cSrcweir        <ref name="common-atts"/>
94cdf0e10cSrcweir      </element>
95cdf0e10cSrcweir      <element name="parentRef">
96cdf0e10cSrcweir        <attribute name="name">
97cdf0e10cSrcweir          <data type="NCName"/>
98cdf0e10cSrcweir        </attribute>
99cdf0e10cSrcweir        <ref name="common-atts"/>
100cdf0e10cSrcweir      </element>
101cdf0e10cSrcweir      <element name="empty">
102cdf0e10cSrcweir        <ref name="common-atts"/>
103cdf0e10cSrcweir        <ref name="other"/>
104cdf0e10cSrcweir      </element>
105cdf0e10cSrcweir      <element name="text">
106cdf0e10cSrcweir        <ref name="common-atts"/>
107cdf0e10cSrcweir        <ref name="other"/>
108cdf0e10cSrcweir      </element>
109cdf0e10cSrcweir      <element name="value">
110cdf0e10cSrcweir        <optional>
111cdf0e10cSrcweir          <attribute name="type">
112cdf0e10cSrcweir            <data type="NCName"/>
113cdf0e10cSrcweir          </attribute>
114cdf0e10cSrcweir        </optional>
115cdf0e10cSrcweir        <ref name="common-atts"/>
116cdf0e10cSrcweir        <text/>
117cdf0e10cSrcweir      </element>
118cdf0e10cSrcweir      <element name="data">
119cdf0e10cSrcweir        <attribute name="type">
120cdf0e10cSrcweir          <data type="NCName"/>
121cdf0e10cSrcweir        </attribute>
122cdf0e10cSrcweir        <ref name="common-atts"/>
123cdf0e10cSrcweir        <interleave>
124cdf0e10cSrcweir          <ref name="other"/>
125cdf0e10cSrcweir          <group>
126cdf0e10cSrcweir            <zeroOrMore>
127cdf0e10cSrcweir              <element name="param">
128cdf0e10cSrcweir                <attribute name="name">
129cdf0e10cSrcweir                  <data type="NCName"/>
130cdf0e10cSrcweir                </attribute>
131cdf0e10cSrcweir                <text/>
132cdf0e10cSrcweir              </element>
133cdf0e10cSrcweir            </zeroOrMore>
134cdf0e10cSrcweir            <optional>
135cdf0e10cSrcweir              <element name="except">
136cdf0e10cSrcweir                <ref name="common-atts"/>
137cdf0e10cSrcweir                <ref name="open-patterns"/>
138cdf0e10cSrcweir              </element>
139cdf0e10cSrcweir            </optional>
140cdf0e10cSrcweir          </group>
141cdf0e10cSrcweir        </interleave>
142cdf0e10cSrcweir      </element>
143cdf0e10cSrcweir      <element name="notAllowed">
144cdf0e10cSrcweir        <ref name="common-atts"/>
145cdf0e10cSrcweir        <ref name="other"/>
146cdf0e10cSrcweir      </element>
147cdf0e10cSrcweir      <element name="externalRef">
148cdf0e10cSrcweir        <attribute name="href">
149cdf0e10cSrcweir          <data type="anyURI"/>
150cdf0e10cSrcweir        </attribute>
151cdf0e10cSrcweir        <ref name="common-atts"/>
152cdf0e10cSrcweir        <ref name="other"/>
153cdf0e10cSrcweir      </element>
154cdf0e10cSrcweir      <element name="grammar">
155cdf0e10cSrcweir        <ref name="common-atts"/>
156cdf0e10cSrcweir        <ref name="grammar-content"/>
157cdf0e10cSrcweir      </element>
158cdf0e10cSrcweir    </choice>
159cdf0e10cSrcweir  </define>
160cdf0e10cSrcweir
161cdf0e10cSrcweir  <define name="grammar-content">
162cdf0e10cSrcweir    <interleave>
163cdf0e10cSrcweir      <ref name="other"/>
164cdf0e10cSrcweir      <zeroOrMore>
165cdf0e10cSrcweir        <choice>
166cdf0e10cSrcweir          <ref name="start-element"/>
167cdf0e10cSrcweir          <ref name="define-element"/>
168cdf0e10cSrcweir          <element name="div">
169cdf0e10cSrcweir            <ref name="common-atts"/>
170cdf0e10cSrcweir            <ref name="grammar-content"/>
171cdf0e10cSrcweir          </element>
172cdf0e10cSrcweir          <element name="include">
173cdf0e10cSrcweir            <attribute name="href">
174cdf0e10cSrcweir              <data type="anyURI"/>
175cdf0e10cSrcweir            </attribute>
176cdf0e10cSrcweir            <ref name="common-atts"/>
177cdf0e10cSrcweir            <ref name="include-content"/>
178cdf0e10cSrcweir          </element>
179cdf0e10cSrcweir        </choice>
180cdf0e10cSrcweir      </zeroOrMore>
181cdf0e10cSrcweir    </interleave>
182cdf0e10cSrcweir  </define>
183cdf0e10cSrcweir
184cdf0e10cSrcweir  <define name="include-content">
185cdf0e10cSrcweir    <interleave>
186cdf0e10cSrcweir      <ref name="other"/>
187cdf0e10cSrcweir      <zeroOrMore>
188cdf0e10cSrcweir        <choice>
189cdf0e10cSrcweir          <ref name="start-element"/>
190cdf0e10cSrcweir          <ref name="define-element"/>
191cdf0e10cSrcweir          <element name="div">
192cdf0e10cSrcweir            <ref name="common-atts"/>
193cdf0e10cSrcweir            <ref name="include-content"/>
194cdf0e10cSrcweir          </element>
195cdf0e10cSrcweir        </choice>
196cdf0e10cSrcweir      </zeroOrMore>
197cdf0e10cSrcweir    </interleave>
198cdf0e10cSrcweir  </define>
199cdf0e10cSrcweir
200cdf0e10cSrcweir  <define name="start-element">
201cdf0e10cSrcweir    <element name="start">
202cdf0e10cSrcweir      <ref name="combine-att"/>
203cdf0e10cSrcweir      <ref name="common-atts"/>
204cdf0e10cSrcweir      <ref name="open-pattern"/>
205cdf0e10cSrcweir    </element>
206cdf0e10cSrcweir  </define>
207cdf0e10cSrcweir
208cdf0e10cSrcweir  <define name="define-element">
209cdf0e10cSrcweir    <element name="define">
210cdf0e10cSrcweir      <attribute name="name">
211cdf0e10cSrcweir        <data type="NCName"/>
212cdf0e10cSrcweir      </attribute>
213cdf0e10cSrcweir      <ref name="combine-att"/>
214cdf0e10cSrcweir      <ref name="common-atts"/>
215cdf0e10cSrcweir      <ref name="open-patterns"/>
216cdf0e10cSrcweir    </element>
217cdf0e10cSrcweir  </define>
218cdf0e10cSrcweir
219cdf0e10cSrcweir  <define name="combine-att">
220cdf0e10cSrcweir    <optional>
221cdf0e10cSrcweir      <attribute name="combine">
222cdf0e10cSrcweir        <choice>
223cdf0e10cSrcweir          <value>choice</value>
224cdf0e10cSrcweir          <value>interleave</value>
225cdf0e10cSrcweir        </choice>
226cdf0e10cSrcweir      </attribute>
227cdf0e10cSrcweir    </optional>
228cdf0e10cSrcweir  </define>
229cdf0e10cSrcweir
230cdf0e10cSrcweir  <define name="open-patterns">
231cdf0e10cSrcweir    <interleave>
232cdf0e10cSrcweir      <ref name="other"/>
233cdf0e10cSrcweir      <oneOrMore>
234cdf0e10cSrcweir        <ref name="pattern"/>
235cdf0e10cSrcweir      </oneOrMore>
236cdf0e10cSrcweir    </interleave>
237cdf0e10cSrcweir  </define>
238cdf0e10cSrcweir
239cdf0e10cSrcweir  <define name="open-pattern">
240cdf0e10cSrcweir    <interleave>
241cdf0e10cSrcweir      <ref name="other"/>
242cdf0e10cSrcweir      <ref name="pattern"/>
243cdf0e10cSrcweir    </interleave>
244cdf0e10cSrcweir  </define>
245cdf0e10cSrcweir
246cdf0e10cSrcweir  <define name="name-class">
247cdf0e10cSrcweir    <choice>
248cdf0e10cSrcweir      <element name="name">
249cdf0e10cSrcweir        <ref name="common-atts"/>
250cdf0e10cSrcweir        <data type="QName"/>
251cdf0e10cSrcweir      </element>
252cdf0e10cSrcweir      <element name="anyName">
253cdf0e10cSrcweir        <ref name="common-atts"/>
254cdf0e10cSrcweir        <ref name="except-name-class"/>
255cdf0e10cSrcweir      </element>
256cdf0e10cSrcweir      <element name="nsName">
257cdf0e10cSrcweir        <ref name="common-atts"/>
258cdf0e10cSrcweir        <ref name="except-name-class"/>
259cdf0e10cSrcweir      </element>
260cdf0e10cSrcweir      <element name="choice">
261cdf0e10cSrcweir        <ref name="common-atts"/>
262cdf0e10cSrcweir        <ref name="open-name-classes"/>
263cdf0e10cSrcweir      </element>
264cdf0e10cSrcweir    </choice>
265cdf0e10cSrcweir  </define>
266cdf0e10cSrcweir
267cdf0e10cSrcweir  <define name="except-name-class">
268cdf0e10cSrcweir    <interleave>
269cdf0e10cSrcweir      <ref name="other"/>
270cdf0e10cSrcweir      <optional>
271cdf0e10cSrcweir        <element name="except">
272cdf0e10cSrcweir          <ref name="open-name-classes"/>
273cdf0e10cSrcweir        </element>
274cdf0e10cSrcweir      </optional>
275cdf0e10cSrcweir    </interleave>
276cdf0e10cSrcweir  </define>
277cdf0e10cSrcweir
278cdf0e10cSrcweir  <define name="open-name-classes">
279cdf0e10cSrcweir    <interleave>
280cdf0e10cSrcweir      <ref name="other"/>
281cdf0e10cSrcweir      <oneOrMore>
282cdf0e10cSrcweir        <ref name="name-class"/>
283cdf0e10cSrcweir      </oneOrMore>
284cdf0e10cSrcweir    </interleave>
285cdf0e10cSrcweir  </define>
286cdf0e10cSrcweir
287cdf0e10cSrcweir  <define name="open-name-class">
288cdf0e10cSrcweir    <interleave>
289cdf0e10cSrcweir      <ref name="other"/>
290cdf0e10cSrcweir      <ref name="name-class"/>
291cdf0e10cSrcweir    </interleave>
292cdf0e10cSrcweir  </define>
293cdf0e10cSrcweir
294cdf0e10cSrcweir  <define name="common-atts">
295cdf0e10cSrcweir    <optional>
296cdf0e10cSrcweir      <attribute name="ns"/>
297cdf0e10cSrcweir    </optional>
298cdf0e10cSrcweir    <optional>
299cdf0e10cSrcweir      <attribute name="datatypeLibrary">
300cdf0e10cSrcweir        <data type="anyURI"/>
301cdf0e10cSrcweir      </attribute>
302cdf0e10cSrcweir    </optional>
303cdf0e10cSrcweir    <zeroOrMore>
304cdf0e10cSrcweir      <attribute>
305cdf0e10cSrcweir        <anyName>
306cdf0e10cSrcweir          <except>
307cdf0e10cSrcweir            <nsName/>
308cdf0e10cSrcweir            <nsName ns=""/>
309cdf0e10cSrcweir          </except>
310cdf0e10cSrcweir        </anyName>
311cdf0e10cSrcweir      </attribute>
312cdf0e10cSrcweir    </zeroOrMore>
313cdf0e10cSrcweir  </define>
314cdf0e10cSrcweir
315cdf0e10cSrcweir  <define name="other">
316cdf0e10cSrcweir    <zeroOrMore>
317cdf0e10cSrcweir      <element>
318cdf0e10cSrcweir        <anyName>
319cdf0e10cSrcweir          <except>
320cdf0e10cSrcweir            <nsName/>
321cdf0e10cSrcweir          </except>
322cdf0e10cSrcweir        </anyName>
323cdf0e10cSrcweir        <zeroOrMore>
324cdf0e10cSrcweir          <choice>
325cdf0e10cSrcweir            <attribute>
326cdf0e10cSrcweir              <anyName/>
327cdf0e10cSrcweir            </attribute>
328cdf0e10cSrcweir            <text/>
329cdf0e10cSrcweir            <ref name="any"/>
330cdf0e10cSrcweir          </choice>
331cdf0e10cSrcweir        </zeroOrMore>
332cdf0e10cSrcweir      </element>
333cdf0e10cSrcweir    </zeroOrMore>
334cdf0e10cSrcweir  </define>
335cdf0e10cSrcweir
336cdf0e10cSrcweir  <define name="any">
337cdf0e10cSrcweir    <element>
338cdf0e10cSrcweir      <anyName/>
339cdf0e10cSrcweir      <zeroOrMore>
340cdf0e10cSrcweir        <choice>
341cdf0e10cSrcweir          <attribute>
342cdf0e10cSrcweir            <anyName/>
343cdf0e10cSrcweir          </attribute>
344cdf0e10cSrcweir          <text/>
345cdf0e10cSrcweir          <ref name="any"/>
346cdf0e10cSrcweir        </choice>
347cdf0e10cSrcweir      </zeroOrMore>
348cdf0e10cSrcweir    </element>
349cdf0e10cSrcweir  </define>
350cdf0e10cSrcweir
351cdf0e10cSrcweir</grammar>
352