--- /dev/null
+# The RelaxNG Compact Syntax file is the master copy
+# 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
+
+default namespace = "http://indexdata.dk/yp2/config/1"
+
+start = metaproxy
+
+metaproxy =
+ element yp2 {
+ element start {
+ attribute route { xsd:NCName }
+ },
+ element filters { filter+ }?,
+ element routes {
+ route+
+ }
+ }
+
+route = element route {
+ attribute id { xsd:NCName },
+ (filter
+ | filter_ref_id
+ )+
+}
+
+filter =
+ (filter_log
+ | filter_bounce
+ | filter_frontend_net
+ | filter_z3950_client
+ )
+
+filter_ref_id =
+ element filter {
+ attribute refid { xsd:NCName }
+ }
+
+filter_bounce =
+ element filter {
+ attribute type { "bounce" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }
+ }
+
+filter_log =
+ element filter {
+ attribute type { "log" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element message { xsd:NCName }?
+ }
+
+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_z3950_client =
+ element filter {
+ attribute type { "z3950_client" },
+ attribute id { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ element timeout { xsd:integer }
+ }
+