Split config schemas to separate files
[metaproxy-moved-to-github.git] / xml / schema / metaproxy.xsd
index 8fb6159..d7cd6fa 100644 (file)
@@ -2,7 +2,7 @@
 <!--
   Metaproxy XML config file schemas
   
-    Copyright (c) 2005-2008 Index Data.
+    Copyright (C) 2005-2011 Index Data.
   
     See the LICENSE file for details
   
   see also http://books.xmlschemata.org/relaxng/
 -->
 <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">
+  <xs:include schemaLocation="filter_auth_simple.xsd"/>
+  <xs:include schemaLocation="filter_cgi.xsd"/>
+  <xs:include schemaLocation="filter_cql_rpn.xsd"/>
+  <xs:include schemaLocation="filter_frontend_net.xsd"/>
+  <xs:include schemaLocation="filter_http_file.xsd"/>
+  <xs:include schemaLocation="filter_limit.xsd"/>
+  <xs:include schemaLocation="filter_log.xsd"/>
+  <xs:include schemaLocation="filter_multi.xsd"/>
+  <xs:include schemaLocation="filter_query_rewrite.xsd"/>
+  <xs:include schemaLocation="filter_session_shared.xsd"/>
+  <xs:include schemaLocation="filter_sru_z3950.xsd"/>
+  <xs:include schemaLocation="filter_virt_db.xsd"/>
+  <xs:include schemaLocation="filter_z3950_client.xsd"/>
+  <xs:import schemaLocation="local.xsd"/>
   <xs:import namespace="http://indexdata.com/yaz" schemaLocation="retrievalinfo.xsd"/>
   <xs:complexType name="any" mixed="true">
     <xs:sequence>
@@ -84,7 +98,7 @@
         <xs:group ref="mp:filter_log"/>
         <xs:group ref="mp:filter_multi"/>
         <xs:element ref="mp:xslt"/>
-        <xs:element ref="mp:filter_record_transform"/>
+        <xs:element ref="filter_record_transform"/>
         <xs:group ref="mp:filter_session_shared"/>
         <xs:group ref="mp:filter_sru_z3950"/>
         <xs:group ref="mp:filter_virt_db"/>
   <xs:attributeGroup name="filter_refid">
     <xs:attribute name="refid" use="required" type="xs:NCName"/>
   </xs:attributeGroup>
-  <xs:group name="filter_auth_simple">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="mp:userRegister"/>
-      <xs:element minOccurs="0" ref="mp:targetRegister"/>
-      <xs:element minOccurs="0" ref="mp:discardUnauthorisedTargets"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="userRegister" type="xs:string"/>
-  <xs:element name="targetRegister" type="xs:string"/>
-  <xs:element name="discardUnauthorisedTargets">
-    <xs:complexType/>
-  </xs:element>
-  <xs:attributeGroup name="filter_auth_simple">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="auth_simple"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="filter_backend_test">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="backend_test"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="filter_bounce">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="bounce"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:element name="conversion">
-    <xs:complexType>
-      <xs:attribute name="file" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_cql_rpn">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="cql_rpn"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_frontend_net">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="mp:threads"/>
-      <xs:element maxOccurs="unbounded" ref="mp:port"/>
-      <xs:element minOccurs="0" ref="mp:timeout"/>
-      <xs:element minOccurs="0" ref="mp:connect-max"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="threads" type="xs:integer"/>
-  <xs:element name="port" type="xs:string"/>
-  <xs:element name="timeout" type="xs:integer"/>
-  <xs:element name="connect-max" type="xs:integer"/>
-  <xs:attributeGroup name="filter_frontend_net">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="frontend_net"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_http_file">
-    <xs:sequence>
-      <xs:element ref="mp:mimetypes"/>
-      <xs:element ref="mp:area"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="mimetypes" type="xs:string"/>
-  <xs:element name="area">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element ref="mp:documentroot"/>
-        <xs:element ref="mp:prefix"/>
-      </xs:sequence>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="documentroot" type="xs:string"/>
-  <xs:element name="prefix" type="xs:string"/>
-  <xs:attributeGroup name="filter_http_file">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="http_file"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:attributeGroup name="filter_load_balance">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="load_balance"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_log">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="mp:message"/>
-      <xs:element minOccurs="0" ref="mp:time-format"/>
-      <xs:element minOccurs="0" ref="mp:filename"/>
-      <xs:element minOccurs="0" ref="mp:category"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="message" type="xs:string"/>
-  <xs:element name="time-format" type="xs:string"/>
-  <xs:element name="filename" type="xs:string"/>
-  <xs:element name="category">
-    <xs:complexType>
-      <xs:attribute name="user-access" type="xs:boolean"/>
-      <xs:attribute name="access" type="xs:boolean"/>
-      <xs:attribute name="init-options" type="xs:boolean"/>
-      <xs:attribute name="request-session" type="xs:boolean"/>
-      <xs:attribute name="response-session" type="xs:boolean"/>
-      <xs:attribute name="session" type="xs:boolean"/>
-      <xs:attribute name="apdu" type="xs:boolean"/>
-      <xs:attribute name="request-apdu" type="xs:boolean"/>
-      <xs:attribute name="response-apdu" type="xs:boolean"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_log">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="log"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_multi">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" ref="mp:target"/>
-      <xs:element minOccurs="0" ref="mp:hideunavailable"/>
-      <xs:element minOccurs="0" ref="mp:mergetype"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="target">
-    <xs:complexType>
-      <xs:simpleContent>
-        <xs:extension base="xs:string">
-          <xs:attribute name="route" use="required" type="xs:string"/>
-        </xs:extension>
-      </xs:simpleContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="hideunavailable">
-    <xs:complexType/>
-  </xs:element>
-  <xs:element name="mergetype" type="xs:string"/>
-  <xs:attributeGroup name="filter_multi">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="multi"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:element name="xslt">
-    <xs:complexType>
-      <xs:attribute name="stylesheet" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_query_rewrite">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="query_rewrite"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:element name="filter_record_transform" abstract="true">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element maxOccurs="unbounded" ref="y:retrieval"/>
-      </xs:sequence>
-      <xs:attribute name="version" use="required">
-        <xs:simpleType>
-          <xs:restriction base="xs:token">
-            <xs:enumeration value="1.0"/>
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_record_transform">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="record_transform"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_session_shared">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="mp:resultset"/>
-      <xs:element minOccurs="0" ref="mp:session"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="resultset">
-    <xs:complexType>
-      <xs:attribute name="max" use="required" type="xs:integer"/>
-      <xs:attribute name="ttl" use="required" type="xs:integer"/>
-      <xs:attribute name="optimizesearch" use="required" type="xs:boolean"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="session">
-    <xs:complexType>
-      <xs:attribute name="ttl" use="required" type="xs:integer"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_session_shared">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="session_shared"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_sru_z3950">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" ref="mp:database"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="database">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="mp:any">
-          <xs:attribute name="name" use="required" type="xs:NCName"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_sru_z3950">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="sru_z3950"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_virt_db">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="mp:pass-vhosts"/>
-      <xs:element minOccurs="0" ref="mp:torus"/>
-      <xs:element minOccurs="0" maxOccurs="unbounded" ref="mp:virtual"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="pass-vhosts" type="xs:boolean"/>
-  <xs:element name="torus">
-    <xs:complexType>
-      <xs:attribute name="url" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="virtual">
-    <xs:complexType>
-      <xs:sequence>
-        <xs:element name="database" type="xs:string"/>
-        <xs:element maxOccurs="unbounded" name="target" type="xs:string"/>
-      </xs:sequence>
-      <xs:attribute name="route" type="xs:NCName"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_virt_db">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="virt_db"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_z3950_client">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="mp:timeout"/>
-      <xs:element minOccurs="0" ref="mp:default_target"/>
-      <xs:element minOccurs="0" ref="mp:force_target"/>
-      <xs:element minOccurs="0" ref="mp:force_close"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="default_target" type="xs:string"/>
-  <xs:element name="force_target" type="xs:string"/>
-  <xs:element name="force_close" type="xs:boolean"/>
-  <xs:attributeGroup name="filter_z3950_client">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="z3950_client"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="id" type="xs:NCName"/>
-    <xs:attribute name="name" type="xs:NCName"/>
-  </xs:attributeGroup>
-  <xs:group name="filter_limit">
-    <xs:sequence>
-      <xs:element minOccurs="0" ref="mp:limit"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="limit">
-    <xs:complexType>
-      <xs:attribute name="bandwidth" type="xs:integer"/>
-      <xs:attribute name="pdu" type="xs:integer"/>
-      <xs:attribute name="search" type="xs:integer"/>
-      <xs:attribute name="retrieve" type="xs:integer"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_limit">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="limit"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
-  <xs:group name="filter_cgi">
-    <xs:sequence>
-      <xs:element minOccurs="0" maxOccurs="unbounded" ref="mp:map"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:element name="map">
-    <xs:complexType>
-      <xs:attribute name="path" use="required" type="xs:string"/>
-      <xs:attribute name="exec" use="required" type="xs:string"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:attributeGroup name="filter_cgi">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="cgi"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
 </xs:schema>
-<!--
-  filter_zeerex_explain =
-   attribute type { "zeerex_explain" },
-   attribute id { xsd:NCName }?,
-   attribute name { xsd:NCName }?,
-   element mp:database {  
-      attribute name { xsd:NCName },
-      any        
-   }+
--->