<!--
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:include schemaLocation="filter_zoom.xsd"/>
+ <xs:import schemaLocation="local.xsd"/>
<xs:import namespace="http://indexdata.com/yaz" schemaLocation="retrievalinfo.xsd"/>
<xs:complexType name="any" mixed="true">
<xs:sequence>
<xs:element name="metaproxy">
<xs:complexType>
<xs:sequence>
+ <xs:element minOccurs="0" ref="mp:dlpath"/>
<xs:element ref="mp:start"/>
<xs:element minOccurs="0" ref="mp:filters"/>
<xs:element ref="mp:routes"/>
</xs:attribute>
</xs:complexType>
</xs:element>
+ <xs:element name="dlpath" type="xs:string"/>
<xs:element name="start">
<xs:complexType>
<xs:attribute name="route" use="required" type="xs:NCName"/>
<xs:complexType>
<xs:choice minOccurs="0">
<xs:group ref="mp:filter_auth_simple"/>
+ <xs:group ref="mp:filter_cgi"/>
<xs:element ref="mp:conversion"/>
<xs:group ref="mp:filter_frontend_net"/>
<xs:group ref="mp:filter_http_file"/>
+ <xs:group ref="mp:filter_limit"/>
<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:group ref="mp:filter_z3950_client"/>
+ <xs:group ref="mp:filter_zoom"/>
</xs:choice>
<xs:attribute name="type">
<xs:simpleType>
<xs:enumeration value="auth_simple"/>
<xs:enumeration value="backend_test"/>
<xs:enumeration value="bounce"/>
+ <xs:enumeration value="cgi"/>
<xs:enumeration value="cql_rpn"/>
<xs:enumeration value="frontend_net"/>
<xs:enumeration value="http_file"/>
+ <xs:enumeration value="limit"/>
<xs:enumeration value="load_balance"/>
<xs:enumeration value="log"/>
<xs:enumeration value="multi"/>
<xs:enumeration value="sru_z3950"/>
<xs:enumeration value="virt_db"/>
<xs:enumeration value="z3950_client"/>
+ <xs:enumeration value="zoom"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<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: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: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="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: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 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 maxOccurs="unbounded" ref="mp:virtual"/>
- </xs:sequence>
- </xs:group>
- <xs:element name="virtual">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="database" type="xs:NCName"/>
- <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:sequence>
- </xs:group>
- <xs:element name="default_target" type="xs:string"/>
- <xs:element name="force_target" type="xs:string"/>
- <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:schema>
-<!--
- filter_zeerex_explain =
- attribute type { "zeerex_explain" },
- attribute id { xsd:NCName }?,
- attribute name { xsd:NCName }?,
- element mp:database {
- attribute name { xsd:NCName },
- any
- }+
--->