Filter frontend_net honors connect-max
[metaproxy-moved-to-github.git] / xml / schema / metaproxy.rnc
index 0394549..440a4ea 100644 (file)
@@ -1,7 +1,6 @@
 # Metaproxy XML config file schemas
-#  $Id: metaproxy.rnc,v 1.7 2006-11-29 13:00:54 marc Exp $
 # 
-#   Copyright (c) 2005-2006, Index Data.
+#   Copyright (c) 2005-2008 Index Data.
 # 
 #   See the LICENSE file for details
 # 
 # For information on RelaxNG see http://relaxng.org 
 # see also http://books.xmlschemata.org/relaxng/
 
-default namespace = "http://indexdata.com/metaproxy"
 
-start = metaproxy
+namespace mp = "http://indexdata.com/metaproxy"
+
+start |= metaproxy
+
+include "retrievalinfo.rnc"
+
+any = (text | element * { attribute * { text }*, any })*
 
 metaproxy =
-  element metaproxy {
-    attribute version { xsd:float },
-    element start {
+  element mp:metaproxy {
+    attribute version { "1.0" },
+    element mp:dlpath { xsd:string }?,
+    element mp:start {
             attribute route { xsd:NCName }
     },
-    element filters { filter+ }?,
-    element routes { route+ }
+    element mp:filters { filter+ }?,
+    element mp:routes { route+ }
   }
 
 route =
-  element route {
+  element mp:route {
     attribute id { xsd:NCName },
     filter+
   }
 
 filter =
-  element filter {
+  element mp:filter {
     filter_refid
     | filter_auth_simple
     | filter_backend_test
     | filter_bounce
+    | filter_cql_rpn
     | filter_frontend_net
     | filter_http_file
+    | filter_load_balance
     | filter_log
     | filter_multi
     | filter_query_rewrite
@@ -55,6 +62,8 @@ filter =
     | filter_sru_z3950
     | filter_virt_db
     | filter_z3950_client
+    | filter_limit
+#    | filter_zeerex_explain
   }
 
 filter_refid = attribute refid { xsd:NCName }
@@ -63,9 +72,9 @@ 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 }?
+  element mp:userRegister { xsd:string }?,
+  element mp:targetRegister { xsd:string }?,
+  element mp:discardUnauthorisedTargets { empty }?
 
 filter_backend_test =
   attribute type { "backend_test" },
@@ -77,31 +86,48 @@ filter_bounce =
   attribute id { xsd:NCName }?,
   attribute name { xsd:NCName }?
 
+filter_cql_rpn =
+  attribute type { "cql_rpn" },
+  attribute id { xsd:NCName }?,
+  attribute name { xsd:NCName }?,
+  element mp:conversion {
+    attribute  file { xsd:string }
+  }
+
 filter_frontend_net =
   attribute type { "frontend_net" },
   attribute id { xsd:NCName }?,
   attribute name { xsd:NCName }?,
-  element threads { xsd:integer }?,
-  element port { xsd:string },
-  element timeout { xsd:integer }?
+  element mp:threads { xsd:integer }?,
+  element mp:port { xsd:string }+,
+  element mp:timeout { xsd:integer }?,
+  element mp:connect-max { xsd:integer }?
 
 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 }
+  element mp:mimetypes { xsd:string },
+  element mp:area {
+    element mp:documentroot { xsd:string },
+    element mp:prefix { xsd:string }
   }
 
+filter_load_balance =
+  attribute type { "load_balance" },
+  attribute id { xsd:NCName }?,
+  attribute name { xsd:NCName }?
+
 filter_log =
   attribute type { "log" },
   attribute id { xsd:NCName }?,
   attribute name { xsd:NCName }?,
-  element message { xsd:string }?,
-  element filename { xsd:string }?,
-  element category {
+  element mp:message { xsd:string }?,
+  element mp:time-format { xsd:string }?,
+  element mp:filename { xsd:string }?,
+  element mp:category {
+    attribute user-access { xsd:boolean }?,
+    attribute access { xsd:boolean }?,
     attribute init-options { xsd:boolean }?,
     attribute request-session { xsd:boolean }?,
     attribute response-session { xsd:boolean }?,
@@ -114,17 +140,20 @@ filter_multi =
   attribute type { "multi" },
   attribute id { xsd:NCName }?,
   attribute name { xsd:NCName }?,
-  element target {
+  element mp:target {
     attribute route { xsd:string },
     xsd:string
   }*,
-  element hideunavailable { empty }?
+  element mp:hideunavailable { empty }?,
+  element mp:mergetype { xsd:string }?
 
 filter_query_rewrite =
   attribute type { "query_rewrite" },
   attribute id { xsd:NCName }?,
   attribute name { xsd:NCName }?,
-  element xslt { xsd:string }
+  element mp:xslt { 
+        attribute stylesheet { xsd:string }
+  }
 
 filter_record_transform =
   attribute type { "record_transform" },
@@ -136,52 +165,57 @@ filter_session_shared =
   attribute type { "session_shared" },
   attribute id { xsd:NCName }?,
   attribute name { xsd:NCName }?,
-  element resultset {
+  element mp:resultset {
     attribute max { xsd:integer },
     attribute ttl { xsd:integer }
-  },
-  element session {
+  }?,
+  element mp:session {
     attribute ttl { xsd:integer }
-  }
+  }?
 
 filter_sru_z3950 =
   attribute type { "sru_z3950" },
   attribute id { xsd:NCName }?,
-  attribute name { xsd:NCName }?
+  attribute name { xsd:NCName }?,
+  element mp:database {  
+     attribute name { xsd:NCName },
+     any        
+  }+
 
 filter_virt_db =
   attribute type { "virt_db" },
   attribute id { xsd:NCName }?,
   attribute name { xsd:NCName }?,
-  element virtual {
+  element mp:virtual {
     attribute route { xsd:NCName }?,
-    element database { xsd:NCName },
-    element target { xsd:string }+
+    element mp:database { xsd:NCName },
+    element mp:target { xsd:string }+
   }+
 
 filter_z3950_client =
   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 }
-        }?
-      }?
-    }+
-  }
+  element mp:timeout { xsd:integer }?,
+  element mp:default_target { xsd:string }?,
+  element mp:force_target { xsd:string }?
+
+filter_limit =
+  attribute type { "limit" },
+  element mp:limit {
+    attribute bandwidth { xsd:integer }?,
+    attribute pdu { xsd:integer }?,
+    attribute search { xsd:integer }?,
+    attribute retrieve { xsd:integer }?
+  }?
+
+#filter_zeerex_explain =
+#  attribute type { "zeerex_explain" },
+#  attribute id { xsd:NCName }?,
+#  attribute name { xsd:NCName }?,
+#  element mp:database {  
+#     attribute name { xsd:NCName },
+#     any        
+#  }+
+