-# The RelaxNG Compact Syntax file is the master copy
+# Metaproxy XML config file schemas
+# $Id: metaproxy.rnc,v 1.5 2006-10-10 15:10:18 marc Exp $
+#
+# Copyright (c) 2005-2006, Index Data.
+#
+# See the LICENSE file for details
+#
+#
+# The RelaxNG Compact Syntax file 'metaproxy.rnc' is the master copy.
+#
+# The RelaxNG XML Syntax and XML Schema are generated using 'trang':
# trang metaproxy.rnc metaproxy.rng
-# xmllint --relaxng metaproxy.rng ../../../etc/config1.xml
-# see also http://books.xmlschemata.org/relaxng/relax-CHP-16-SECT-2.html
+# trang metaproxy.rnc metaproxy.xsd
+#
+# Config file validation is done using 'xmllint':
+# xmllint -/-relaxng metaproxy.rng ../../../etc/config1.xml
+# xmllint -/-schema metaproxy.xsd config-bytarget.xml
+#
+# For information on RelaxNG see http://relaxng.org
+# see also http://books.xmlschemata.org/relaxng/
default namespace = "http://indexdata.dk/yp2/config/1"
start = metaproxy
-metaproxy =
+metaproxy =
element yp2 {
element start {
attribute route { xsd:NCName }
},
element filters { filter+ }?,
- element routes {
- route+
- }
+ element routes { route+ }
}
-route = element route {
+route =
+ element route {
attribute id { xsd:NCName },
- (filter
- | filter_ref_id
- )+
-}
+ filter+
+ }
-filter =
- (filter_log
+filter =
+ element filter {
+ filter_refid
+ | filter_auth_simple
+ | filter_backend_test
| filter_bounce
| filter_frontend_net
- | filter_z3950_client
- )
-
-filter_ref_id =
- element filter {
- attribute refid { xsd:NCName }
+ | filter_http_file
+ | filter_log
+ | filter_multi
+ | filter_query_rewrite
+ | filter_record_transform
+ | filter_session_shared
+ | filter_sru_z3950
+ | filter_virt_db
+ | filter_z3950_client
}
+filter_refid = attribute refid { xsd:NCName }
+
+filter_auth_simple =
+ attribute type { "auth_simple" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element userRegister { xsd:string }?,
+ element targetRegister { xsd:string }?,
+ element discardUnauthorisedTargets { empty }?
+
+filter_backend_test =
+ attribute type { "backend_test" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?
+
filter_bounce =
- element filter {
- attribute type { "bounce" },
- attribute id { xsd:NCName }?,
- attribute name { xsd:NCName }
+ attribute type { "bounce" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?
+
+filter_frontend_net =
+ attribute type { "frontend_net" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element threads { xsd:integer }?,
+ element port { xsd:string }
+
+filter_http_file =
+ attribute type { "http_file" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element mimetypes { xsd:string },
+ element area {
+ element documentroot { xsd:string },
+ element prefix { xsd:string }
}
filter_log =
- element filter {
- attribute type { "log" },
- attribute id { xsd:NCName }?,
- attribute name { xsd:NCName }?,
- element message { xsd:NCName }?
- }
+ attribute type { "log" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element message { xsd:string }?,
+ element filename { xsd:string }?,
+ element category {
+ attribute init-options { xsd:boolean }?,
+ attribute request-session { xsd:boolean }?,
+ attribute response-session { xsd:boolean }?,
+ attribute apdu { xsd:boolean }?,
+ attribute request-apdu { xsd:boolean }?,
+ attribute response-apdu { xsd:boolean }?
+ }?
-filter_frontend_net =
- element filter {
- attribute type { "frontend_net" },
- attribute id { xsd:NCName }?,
- attribute name { xsd:NCName }?,
- element threads { xsd:integer },
- element port { xsd:string }
+filter_multi =
+ attribute type { "multi" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element target {
+ attribute route { xsd:string },
+ xsd:string
+ }*,
+ element hideunavailable { empty }?
+
+filter_query_rewrite =
+ attribute type { "query_rewrite" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element xslt { xsd:string }
+
+filter_record_transform =
+ attribute type { "record_transform" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ retrievalinfo
+
+filter_session_shared =
+ attribute type { "session_shared" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element resultset {
+ attribute max { xsd:integer },
+ attribute ttl { xsd:integer }
+ },
+ element session {
+ attribute ttl { xsd:integer }
}
+filter_sru_z3950 =
+ attribute type { "sru_z3950" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?
+
+filter_virt_db =
+ attribute type { "virt_db" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element virtual {
+ attribute route { xsd:NCName }?,
+ element database { xsd:NCName },
+ element target { xsd:string }+
+ }+
+
filter_z3950_client =
- element filter {
- attribute type { "z3950_client" },
- attribute id { xsd:NCName }?,
- attribute name { xsd:NCName }?,
- element timeout { xsd:integer }
- }
+ attribute type { "z3950_client" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element timeout { xsd:integer }?
+retrievalinfo =
+ element retrievalinfo {
+ element retrieval {
+ attribute syntax { xsd:string },
+ attribute name { xsd:string }?,
+ attribute identifier { xsd:string }?,
+ attribute backendsyntax { xsd:string }?,
+ attribute backendname { xsd:string }?,
+ element convert {
+ element marc {
+ attribute inputformat { xsd:string },
+ attribute outputformat { xsd:string },
+ attribute inputcharset { xsd:string }
+ },
+ element xslt {
+ attribute stylesheet { xsd:string }
+ }?
+ }?
+ }+
+ }