Implement basic configuration of session_shared.
[metaproxy-moved-to-github.git] / etc / config.xsd
index 21ecba8..e662e17 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- $Id: config.xsd,v 1.2 2006-01-16 11:21:38 mike Exp $ -->
+<!-- $Id: config.xsd,v 1.20 2006-06-21 09:16:53 adam Exp $ -->
 <!--
        This Schema prescribes the format of YP2 configuration files.
        Invoke it like this:
@@ -17,7 +17,7 @@
     <xs:complexType>
       <xs:sequence>
         <xs:element ref="config:start"/>
-        <xs:element ref="config:filters"/>
+        <xs:element minOccurs="0" ref="config:filters"/>
         <xs:element ref="config:routes"/>
       </xs:sequence>
     </xs:complexType>
@@ -26,7 +26,7 @@
 
   <xs:element name="start">
     <xs:complexType>
-      <!-- ### need to specify here that the element is empty -->
+      <!-- Absence of elements listed here mandates that <start> is empty -->
       <xs:attribute name="route" use="required" type="xs:NCName"/>
     </xs:complexType>
   </xs:element>
         <xs:element ref="config:timeout"/>
 
        <!-- type="log" -->
-        <xs:element ref="config:message"/>
+        <xs:sequence>
+         <xs:element minOccurs="0" ref="config:message"/>
+         <xs:element minOccurs="0" ref="config:filename"/>
+         <xs:element minOccurs="0" name="category">
+           <xs:complexType>
+            <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="request-apdu" type="xs:boolean"/>
+            <xs:attribute name="response-apdu" type="xs:boolean"/>
+            <xs:attribute name="apdu" type="xs:boolean"/>
+            <xs:attribute name="init-options" type="xs:boolean"/>
+           </xs:complexType>
+         </xs:element>
+        </xs:sequence>
+
+       <!-- type="virt_db" or type="multi" -->
+        <xs:sequence>
+         <xs:element minOccurs="0" maxOccurs="unbounded" ref="config:virtual"/>
+         <xs:element minOccurs="0" maxOccurs="1" name="hideunavailable">
+           <xs:complexType/>
+         </xs:element>
+        </xs:sequence>
+
+       <!-- type="auth_simple" -->
+        <xs:sequence>
+         <xs:element minOccurs="0" ref="config:userRegister"/>
+         <xs:element minOccurs="0" ref="config:targetRegister"/>
+         <xs:element minOccurs="0" name="discardUnauthorisedTargets">
+           <xs:complexType/>
+         </xs:element>
+        </xs:sequence>
 
-       <!-- type="virt_db" -->
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="config:virtual"/>
+       <!-- type="backend_test" -->
+       <!-- No elements included -->
+
+       <!-- type="session_shared" -->
+        <xs:sequence>
+         <xs:element minOccurs="0" name="resultset">
+           <xs:complexType>
+            <xs:attribute name="ttl" type="xs:integer"/>
+            <xs:attribute name="max" type="xs:integer"/>
+           </xs:complexType>
+         </xs:element>
+         <xs:element minOccurs="0" name="session">
+           <xs:complexType>
+            <xs:attribute name="ttl" type="xs:integer"/>
+           </xs:complexType>
+         </xs:element>
+       </xs:sequence>
+
+       <!-- type="template" -->
+       <!-- No example configuration to deduce from yet -->
+
+       <!-- type="http_file" -->
+        <xs:sequence>
+         <xs:element ref="config:mimetypes"/>
+         <xs:element name="area">
+           <xs:complexType>
+             <xs:sequence>
+               <xs:element ref="config:documentroot"/>
+               <xs:element ref="config:prefix"/>
+             </xs:sequence>
+           </xs:complexType>
+         </xs:element>
+        </xs:sequence>
+
+       <!-- type="query_rewrite" -->
+       <xs:element ref="config:xslt"/>
 
       </xs:choice>
       <xs:attribute name="id" type="xs:NCName"/>
       <xs:attribute name="refid" type="xs:NCName"/>
-      <xs:attribute name="type" type="xs:NCName"/>
+      <xs:attribute name="type">
+        <xs:simpleType>
+          <xs:restriction base="xs:NCName">
+            <xs:enumeration value="frontend_net"/>
+            <xs:enumeration value="z3950_client"/>
+            <xs:enumeration value="log"/>
+            <xs:enumeration value="virt_db"/>
+            <xs:enumeration value="auth_simple"/>
+            <xs:enumeration value="backend_test"/>
+            <xs:enumeration value="multi"/>
+            <xs:enumeration value="session_shared"/>
+            <xs:enumeration value="template"/>
+            <xs:enumeration value="http_file"/>
+            <xs:enumeration value="query_rewrite"/>
+          </xs:restriction>
+        </xs:simpleType>
+      </xs:attribute>
     </xs:complexType>
   </xs:element>
 
   <xs:element name="port" type="xs:string"/>
   <xs:element name="timeout" type="xs:integer"/>
   <xs:element name="message" type="xs:NCName"/>
-
+  <xs:element name="filename" type="xs:string"/>
+  <xs:element name="userRegister" type="xs:string"/>
+  <xs:element name="targetRegister" type="xs:string"/>
+  <xs:element name="discardUnauthorisedTargets" type="xs:string"/>
+  <xs:element name="mimetypes" type="xs:string"/>
+  <xs:element name="documentroot" type="xs:string"/>
+  <xs:element name="prefix" type="xs:string"/>
+  <xs:element name="xslt" type="xs:string"/>
+
+  <!-- ### This is used differently depending on whether it occurs
+       within a "virt_db" or "multi" filter: for the former, it
+       contains one database and one target; for the latter, it
+       contains an optional vhost and one or more targets.  This
+       schema should be tweaked to enforce this. -->
   <xs:element name="virtual">
     <xs:complexType>
       <xs:sequence>
-        <xs:element ref="config:database"/>
-        <xs:element ref="config:target"/>
+        <xs:element minOccurs="0" ref="config:database"/>
+        <xs:element minOccurs="0" ref="config:vhost"/>
+        <xs:element maxOccurs="unbounded" ref="config:target"/>
       </xs:sequence>
+      <xs:attribute name="route" type="xs:NCName"/>
     </xs:complexType>
   </xs:element>
 
   <xs:element name="database" type="xs:NCName"/>
+  <xs:element name="vhost" type="xs:NCName"/>
   <xs:element name="target" type="xs:anyURI"/>
 
 
   <xs:element name="routes">
     <xs:complexType>
       <xs:sequence>
-        <xs:element maxOccurs="unbounded" ref="config:route"/>
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="config:route"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>