Route may be given for each port in frontend_net
[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   <include href="filter_zoom.rng"/>
45   <define name="any">
46     <zeroOrMore>
47       <choice>
48         <text/>
49         <element>
50           <anyName/>
51           <zeroOrMore>
52             <attribute>
53               <anyName/>
54             </attribute>
55           </zeroOrMore>
56           <ref name="any"/>
57         </element>
58       </choice>
59     </zeroOrMore>
60   </define>
61   <define name="metaproxy">
62     <element name="mp:metaproxy">
63       <attribute name="version">
64         <value>1.0</value>
65       </attribute>
66       <optional>
67         <element name="mp:dlpath">
68           <data type="string"/>
69         </element>
70       </optional>
71       <element name="mp:start">
72         <attribute name="route">
73           <data type="NCName"/>
74         </attribute>
75       </element>
76       <optional>
77         <element name="mp:filters">
78           <oneOrMore>
79             <ref name="filter"/>
80           </oneOrMore>
81         </element>
82       </optional>
83       <element name="mp:routes">
84         <oneOrMore>
85           <ref name="route"/>
86         </oneOrMore>
87       </element>
88     </element>
89   </define>
90   <define name="route">
91     <element name="mp:route">
92       <attribute name="id">
93         <data type="NCName"/>
94       </attribute>
95       <oneOrMore>
96         <ref name="filter"/>
97       </oneOrMore>
98     </element>
99   </define>
100   <define name="filter">
101     <element name="mp:filter">
102       <choice>
103         <ref name="filter_refid"/>
104         <ref name="filter_auth_simple"/>
105         <ref name="filter_backend_test"/>
106         <ref name="filter_bounce"/>
107         <ref name="filter_cgi"/>
108         <ref name="filter_cql_rpn"/>
109         <ref name="filter_frontend_net"/>
110         <ref name="filter_http_file"/>
111         <ref name="filter_limit"/>
112         <ref name="filter_load_balance"/>
113         <ref name="filter_log"/>
114         <ref name="filter_multi"/>
115         <ref name="filter_query_rewrite"/>
116         <ref name="filter_record_transform"/>
117         <ref name="filter_session_shared"/>
118         <ref name="filter_sru_z3950"/>
119         <ref name="filter_virt_db"/>
120         <ref name="filter_z3950_client"/>
121         <ref name="filter_zoom"/>
122       </choice>
123     </element>
124   </define>
125   <define name="filter_refid">
126     <attribute name="refid">
127       <data type="NCName"/>
128     </attribute>
129   </define>
130 </grammar>