Doc: module ref entries include RelagNG schema
[metaproxy-moved-to-github.git] / xml / schema / metaproxy.xsd
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 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://indexdata.com/metaproxy" xmlns:mp="http://indexdata.com/metaproxy" xmlns:y="http://indexdata.com/yaz">
24   <xs:include schemaLocation="filter_auth_simple.xsd"/>
25   <xs:include schemaLocation="filter_cgi.xsd"/>
26   <xs:include schemaLocation="filter_cql_rpn.xsd"/>
27   <xs:include schemaLocation="filter_frontend_net.xsd"/>
28   <xs:include schemaLocation="filter_http_file.xsd"/>
29   <xs:include schemaLocation="filter_limit.xsd"/>
30   <xs:include schemaLocation="filter_log.xsd"/>
31   <xs:include schemaLocation="filter_multi.xsd"/>
32   <xs:include schemaLocation="filter_query_rewrite.xsd"/>
33   <xs:include schemaLocation="filter_session_shared.xsd"/>
34   <xs:include schemaLocation="filter_sru_z3950.xsd"/>
35   <xs:include schemaLocation="filter_virt_db.xsd"/>
36   <xs:include schemaLocation="filter_z3950_client.xsd"/>
37   <xs:import schemaLocation="local.xsd"/>
38   <xs:import namespace="http://indexdata.com/yaz" schemaLocation="retrievalinfo.xsd"/>
39   <xs:complexType name="any" mixed="true">
40     <xs:sequence>
41       <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
42     </xs:sequence>
43   </xs:complexType>
44   <xs:element name="metaproxy">
45     <xs:complexType>
46       <xs:sequence>
47         <xs:element minOccurs="0" ref="mp:dlpath"/>
48         <xs:element ref="mp:start"/>
49         <xs:element minOccurs="0" ref="mp:filters"/>
50         <xs:element ref="mp:routes"/>
51       </xs:sequence>
52       <xs:attribute name="version" use="required">
53         <xs:simpleType>
54           <xs:restriction base="xs:token">
55             <xs:enumeration value="1.0"/>
56           </xs:restriction>
57         </xs:simpleType>
58       </xs:attribute>
59     </xs:complexType>
60   </xs:element>
61   <xs:element name="dlpath" type="xs:string"/>
62   <xs:element name="start">
63     <xs:complexType>
64       <xs:attribute name="route" use="required" type="xs:NCName"/>
65     </xs:complexType>
66   </xs:element>
67   <xs:element name="filters">
68     <xs:complexType>
69       <xs:sequence>
70         <xs:element maxOccurs="unbounded" ref="mp:filter"/>
71       </xs:sequence>
72     </xs:complexType>
73   </xs:element>
74   <xs:element name="routes">
75     <xs:complexType>
76       <xs:sequence>
77         <xs:element maxOccurs="unbounded" ref="mp:route"/>
78       </xs:sequence>
79     </xs:complexType>
80   </xs:element>
81   <xs:element name="route">
82     <xs:complexType>
83       <xs:sequence>
84         <xs:element maxOccurs="unbounded" ref="mp:filter"/>
85       </xs:sequence>
86       <xs:attribute name="id" use="required" type="xs:NCName"/>
87     </xs:complexType>
88   </xs:element>
89   <xs:element name="filter">
90     <xs:complexType>
91       <xs:choice minOccurs="0">
92         <xs:group ref="mp:filter_auth_simple"/>
93         <xs:group ref="mp:filter_cgi"/>
94         <xs:element ref="mp:conversion"/>
95         <xs:group ref="mp:filter_frontend_net"/>
96         <xs:group ref="mp:filter_http_file"/>
97         <xs:group ref="mp:filter_limit"/>
98         <xs:group ref="mp:filter_log"/>
99         <xs:group ref="mp:filter_multi"/>
100         <xs:element ref="mp:xslt"/>
101         <xs:element ref="filter_record_transform"/>
102         <xs:group ref="mp:filter_session_shared"/>
103         <xs:group ref="mp:filter_sru_z3950"/>
104         <xs:group ref="mp:filter_virt_db"/>
105         <xs:group ref="mp:filter_z3950_client"/>
106       </xs:choice>
107       <xs:attribute name="type">
108         <xs:simpleType>
109           <xs:restriction base="xs:token">
110             <xs:enumeration value="auth_simple"/>
111             <xs:enumeration value="backend_test"/>
112             <xs:enumeration value="bounce"/>
113             <xs:enumeration value="cgi"/>
114             <xs:enumeration value="cql_rpn"/>
115             <xs:enumeration value="frontend_net"/>
116             <xs:enumeration value="http_file"/>
117             <xs:enumeration value="limit"/>
118             <xs:enumeration value="load_balance"/>
119             <xs:enumeration value="log"/>
120             <xs:enumeration value="multi"/>
121             <xs:enumeration value="query_rewrite"/>
122             <xs:enumeration value="record_transform"/>
123             <xs:enumeration value="session_shared"/>
124             <xs:enumeration value="sru_z3950"/>
125             <xs:enumeration value="virt_db"/>
126             <xs:enumeration value="z3950_client"/>
127           </xs:restriction>
128         </xs:simpleType>
129       </xs:attribute>
130       <xs:attribute name="refid" type="xs:NCName"/>
131       <xs:attribute name="id" type="xs:NCName"/>
132       <xs:attribute name="name" type="xs:NCName"/>
133     </xs:complexType>
134   </xs:element>
135   <xs:attributeGroup name="filter_refid">
136     <xs:attribute name="refid" use="required" type="xs:NCName"/>
137   </xs:attributeGroup>
138 </xs:schema>