Doc: module ref entries include RelagNG schema
[metaproxy-moved-to-github.git] / xml / schema / metaproxy.rng
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3   Metaproxy XML config file schemas
4   
5     Copyright (C) 2005-2011 Index Data.
6   
7     See the LICENSE file for details
8   
9   
10   The RelaxNG Compact Syntax file 'metaproxy.rnc' is the master copy.
11   
12   The RelaxNG XML Syntax and XML Schema are generated using 'trang':
13   trang metaproxy.rnc metaproxy.rng 
14   trang metaproxy.rnc metaproxy.xsd 
15   
16   Config file validation is done using 'xmllint':
17   xmllint -/-relaxng metaproxy.rng ../../../etc/config1.xml 
18   xmllint -/-schema metaproxy.xsd config-bytarget.xml
19   
20   For information on RelaxNG see http://relaxng.org 
21   see also http://books.xmlschemata.org/relaxng/
22 -->
23 <grammar xmlns:mp="http://indexdata.com/metaproxy" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
24   <start combine="choice">
25     <ref name="metaproxy"/>
26   </start>
27   <include href="filter_auth_simple.rng"/>
28   <include href="filter_backend_test.rng"/>
29   <include href="filter_bounce.rng"/>
30   <include href="filter_cgi.rng"/>
31   <include href="filter_cql_rpn.rng"/>
32   <include href="filter_frontend_net.rng"/>
33   <include href="filter_http_file.rng"/>
34   <include href="filter_limit.rng"/>
35   <include href="filter_load_balance.rng"/>
36   <include href="filter_log.rng"/>
37   <include href="filter_multi.rng"/>
38   <include href="filter_query_rewrite.rng"/>
39   <include href="filter_record_transform.rng"/>
40   <include href="filter_session_shared.rng"/>
41   <include href="filter_sru_z3950.rng"/>
42   <include href="filter_virt_db.rng"/>
43   <include href="filter_z3950_client.rng"/>
44   <define name="any">
45     <zeroOrMore>
46       <choice>
47         <text/>
48         <element>
49           <anyName/>
50           <zeroOrMore>
51             <attribute>
52               <anyName/>
53             </attribute>
54           </zeroOrMore>
55           <ref name="any"/>
56         </element>
57       </choice>
58     </zeroOrMore>
59   </define>
60   <define name="metaproxy">
61     <element name="mp:metaproxy">
62       <attribute name="version">
63         <value>1.0</value>
64       </attribute>
65       <optional>
66         <element name="mp:dlpath">
67           <data type="string"/>
68         </element>
69       </optional>
70       <element name="mp:start">
71         <attribute name="route">
72           <data type="NCName"/>
73         </attribute>
74       </element>
75       <optional>
76         <element name="mp:filters">
77           <oneOrMore>
78             <ref name="filter"/>
79           </oneOrMore>
80         </element>
81       </optional>
82       <element name="mp:routes">
83         <oneOrMore>
84           <ref name="route"/>
85         </oneOrMore>
86       </element>
87     </element>
88   </define>
89   <define name="route">
90     <element name="mp:route">
91       <attribute name="id">
92         <data type="NCName"/>
93       </attribute>
94       <oneOrMore>
95         <ref name="filter"/>
96       </oneOrMore>
97     </element>
98   </define>
99   <define name="filter">
100     <element name="mp:filter">
101       <choice>
102         <ref name="filter_refid"/>
103         <ref name="filter_auth_simple"/>
104         <ref name="filter_backend_test"/>
105         <ref name="filter_bounce"/>
106         <ref name="filter_cgi"/>
107         <ref name="filter_cql_rpn"/>
108         <ref name="filter_frontend_net"/>
109         <ref name="filter_http_file"/>
110         <ref name="filter_limit"/>
111         <ref name="filter_load_balance"/>
112         <ref name="filter_log"/>
113         <ref name="filter_multi"/>
114         <ref name="filter_query_rewrite"/>
115         <ref name="filter_record_transform"/>
116         <ref name="filter_session_shared"/>
117         <ref name="filter_sru_z3950"/>
118         <ref name="filter_virt_db"/>
119         <ref name="filter_z3950_client"/>
120       </choice>
121     </element>
122   </define>
123   <define name="filter_refid">
124     <attribute name="refid">
125       <data type="NCName"/>
126     </attribute>
127   </define>
128 </grammar>