<?xml version="1.0" encoding="UTF-8"?>
-<!-- $Id: config.xsd,v 1.1 2006-01-13 16:28:00 mike Exp $ -->
+<!-- $Id: config.xsd,v 1.12 2006-01-18 15:06:12 mike Exp $ -->
<!--
This Schema prescribes the format of YP2 configuration files.
Invoke it like this:
<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>
<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>
<!-- type="frontend_net" -->
<xs:sequence>
- <xs:element ref="config:threads"/>
+ <xs:element minOccurs="0" ref="config:threads"/>
<xs:element ref="config:port"/>
</xs:sequence>
<!-- type="log" -->
<xs:element ref="config:message"/>
- <!-- type="virt_db" -->
+ <!-- type="virt_db" or type="multi" -->
<xs:element minOccurs="0" maxOccurs="unbounded" ref="config:virtual"/>
+ <!-- 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="backend_test" -->
+ <!-- No elements included -->
+
+ <!-- type="session_shared" -->
+ <!-- No example configuration to deduce from yet -->
+
+ <!-- type="template" -->
+ <!-- No example configuration to deduce from yet -->
+
</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: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="userRegister" type="xs:string"/>
+ <xs:element name="targetRegister" type="xs:string"/>
+ <xs:element name="discardUnauthorisedTargets" 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"/>