1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- $Id: config.xsd,v 1.20 2006-06-21 09:16:53 adam Exp $ -->
4 This Schema prescribes the format of YP2 configuration files.
6 xmllint -noout -schema config.xsd config1.xml
7 But use double-dashes for the option names instead of single.
8 (I couldn't include them literally, as, believe it or not,
9 it's an error to include a double dash in an XML comment.
11 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
12 elementFormDefault="qualified"
13 targetNamespace="http://indexdata.dk/yp2/config/1"
14 xmlns:config="http://indexdata.dk/yp2/config/1">
16 <xs:element name="yp2">
19 <xs:element ref="config:start"/>
20 <xs:element minOccurs="0" ref="config:filters"/>
21 <xs:element ref="config:routes"/>
27 <xs:element name="start">
29 <!-- Absence of elements listed here mandates that <start> is empty -->
30 <xs:attribute name="route" use="required" type="xs:NCName"/>
35 <xs:element name="filters">
38 <xs:element maxOccurs="unbounded" ref="config:filter"/>
43 <xs:element name="filter">
46 <!-- In general, the content depends on the "type" attribute.
47 Perhaps the various filter-types' configuration
48 structures should each be described by their own little
51 <!-- type="frontend_net" -->
53 <xs:element minOccurs="0" ref="config:threads"/>
54 <xs:element ref="config:port"/>
57 <!-- type="z3950_client" -->
58 <xs:element ref="config:timeout"/>
62 <xs:element minOccurs="0" ref="config:message"/>
63 <xs:element minOccurs="0" ref="config:filename"/>
64 <xs:element minOccurs="0" name="category">
66 <xs:attribute name="request-session" type="xs:boolean"/>
67 <xs:attribute name="response-session" type="xs:boolean"/>
68 <xs:attribute name="session" type="xs:boolean"/>
69 <xs:attribute name="request-apdu" type="xs:boolean"/>
70 <xs:attribute name="response-apdu" type="xs:boolean"/>
71 <xs:attribute name="apdu" type="xs:boolean"/>
72 <xs:attribute name="init-options" type="xs:boolean"/>
77 <!-- type="virt_db" or type="multi" -->
79 <xs:element minOccurs="0" maxOccurs="unbounded" ref="config:virtual"/>
80 <xs:element minOccurs="0" maxOccurs="1" name="hideunavailable">
85 <!-- type="auth_simple" -->
87 <xs:element minOccurs="0" ref="config:userRegister"/>
88 <xs:element minOccurs="0" ref="config:targetRegister"/>
89 <xs:element minOccurs="0" name="discardUnauthorisedTargets">
94 <!-- type="backend_test" -->
95 <!-- No elements included -->
97 <!-- type="session_shared" -->
99 <xs:element minOccurs="0" name="resultset">
101 <xs:attribute name="ttl" type="xs:integer"/>
102 <xs:attribute name="max" type="xs:integer"/>
105 <xs:element minOccurs="0" name="session">
107 <xs:attribute name="ttl" type="xs:integer"/>
112 <!-- type="template" -->
113 <!-- No example configuration to deduce from yet -->
115 <!-- type="http_file" -->
117 <xs:element ref="config:mimetypes"/>
118 <xs:element name="area">
121 <xs:element ref="config:documentroot"/>
122 <xs:element ref="config:prefix"/>
128 <!-- type="query_rewrite" -->
129 <xs:element ref="config:xslt"/>
132 <xs:attribute name="id" type="xs:NCName"/>
133 <xs:attribute name="refid" type="xs:NCName"/>
134 <xs:attribute name="type">
136 <xs:restriction base="xs:NCName">
137 <xs:enumeration value="frontend_net"/>
138 <xs:enumeration value="z3950_client"/>
139 <xs:enumeration value="log"/>
140 <xs:enumeration value="virt_db"/>
141 <xs:enumeration value="auth_simple"/>
142 <xs:enumeration value="backend_test"/>
143 <xs:enumeration value="multi"/>
144 <xs:enumeration value="session_shared"/>
145 <xs:enumeration value="template"/>
146 <xs:enumeration value="http_file"/>
147 <xs:enumeration value="query_rewrite"/>
154 <xs:element name="threads" type="xs:integer"/>
155 <xs:element name="port" type="xs:string"/>
156 <xs:element name="timeout" type="xs:integer"/>
157 <xs:element name="message" type="xs:NCName"/>
158 <xs:element name="filename" type="xs:string"/>
159 <xs:element name="userRegister" type="xs:string"/>
160 <xs:element name="targetRegister" type="xs:string"/>
161 <xs:element name="discardUnauthorisedTargets" type="xs:string"/>
162 <xs:element name="mimetypes" type="xs:string"/>
163 <xs:element name="documentroot" type="xs:string"/>
164 <xs:element name="prefix" type="xs:string"/>
165 <xs:element name="xslt" type="xs:string"/>
167 <!-- ### This is used differently depending on whether it occurs
168 within a "virt_db" or "multi" filter: for the former, it
169 contains one database and one target; for the latter, it
170 contains an optional vhost and one or more targets. This
171 schema should be tweaked to enforce this. -->
172 <xs:element name="virtual">
175 <xs:element minOccurs="0" ref="config:database"/>
176 <xs:element minOccurs="0" ref="config:vhost"/>
177 <xs:element maxOccurs="unbounded" ref="config:target"/>
179 <xs:attribute name="route" type="xs:NCName"/>
183 <xs:element name="database" type="xs:NCName"/>
184 <xs:element name="vhost" type="xs:NCName"/>
185 <xs:element name="target" type="xs:anyURI"/>
188 <xs:element name="routes">
191 <xs:element minOccurs="1" maxOccurs="unbounded" ref="config:route"/>
196 <xs:element name="route">
199 <xs:element maxOccurs="unbounded" ref="config:filter"/>
201 <xs:attribute name="id" use="required" type="xs:NCName"/>