]> granicus.if.org Git - docbook-dsssl/commitdiff
Support XInclude in more places
authorNorman Walsh <ndw@nwalsh.com>
Wed, 6 Jul 2005 20:15:28 +0000 (20:15 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Wed, 6 Jul 2005 20:15:28 +0000 (20:15 +0000)
docbook/relaxng/docbook/src/xinclude.rnc

index fd1c71944bf6aeef10f7c2c9df7e118acb34b896..b1cec1b68c3cc8820383b2feaf5e21049c8d4b9e 100644 (file)
 # Release: $Id$
 #
 
+namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
+namespace rng  = "http://relaxng.org/ns/structure/1.0"
 namespace xi = "http://www.w3.org/2001/XInclude"
 namespace db = "http://docbook.org/ns/docbook"
 namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
 
+db.divisions |= db.xi.include
+db.components |= db.xi.include
+
+db.toplevel.sections |=
+   ((db.section|db.xi.include)+, (db.simplesect|db.xi.include)*)
+ | (db.simplesect|db.xi.include)+
+
+db.recursive.sections |=
+   ((db.section|db.xi.include)+, (db.simplesect|db.xi.include)*)
+ | (db.simplesect|db.xi.include)+
+
+db.part.components |= db.xi.include
+
+db.article.components |=
+   ((db.section|db.xi.include)+, (db.simplesect|db.xi.include)*)
+ | (db.simplesect|db.xi.include)+
+
 db.all.blocks |= db.xi.include
 db.all.inlines |= db.xi.include
 
+ctrl:conditional [
+  pattern="db.refentry"
+
+  rng:define [
+    name = "db.toplevel.sections"
+    combine = "choice"
+    rng:oneOrMore [
+      rng:choice [
+        rng:ref [ name = "db.refentry" ]
+        rng:ref [ name = "db.xi.include" ]
+      ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.recursive.sections"
+    combine = "choice"
+    rng:oneOrMore [
+      rng:choice [
+        rng:ref [ name = "db.refentry" ]
+        rng:ref [ name = "db.xi.include" ]
+      ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.article.components"
+    combine = "choice"
+    rng:oneOrMore [
+      rng:choice [
+        rng:ref [ name = "db.refentry" ]
+        rng:ref [ name = "db.xi.include" ]
+      ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.toplevel.refsection"
+    combine = "choice"
+    rng:oneOrMore [
+      rng:choice [
+        rng:ref [ name = "db.refentry" ]
+        rng:ref [ name = "db.xi.include" ]
+      ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.secondlevel.refsection"
+    combine = "choice"
+    rng:oneOrMore [
+      rng:choice [
+        rng:ref [ name = "db.refentry" ]
+        rng:ref [ name = "db.xi.include" ]
+      ]
+    ]
+  ]
+]
+
+ctrl:conditional [
+  pattern="db.sect1"
+
+  rng:define [
+    name = "db.toplevel.sections"
+    combine = "choice"
+    rng:choice [
+       rng:group [
+          rng:oneOrMore [
+             rng:choice [
+                rng:ref [ name = "db.sect1" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+          rng:zeroOrMore [
+             rng:choice [
+                rng:ref [ name = "db.simplesect" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+       ]
+       rng:oneOrMore [
+          rng:choice [
+             rng:ref [ name = "db.simplesect" ]
+             rng:ref [ name = "db.xi.include" ]
+          ]
+       ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.article.components"
+    combine = "choice"
+    rng:choice [
+       rng:group [
+          rng:oneOrMore [
+             rng:choice [
+                rng:ref [ name = "db.sect1" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+          rng:zeroOrMore [
+             rng:choice [
+                rng:ref [ name = "db.simplesect" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+       ]
+       rng:oneOrMore [
+          rng:choice [
+             rng:ref [ name = "db.simplesect" ]
+             rng:ref [ name = "db.xi.include" ]
+          ]
+       ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.sect1.sections"
+    combine = "choice"
+    rng:choice [
+       rng:group [
+          rng:oneOrMore [
+             rng:choice [
+                rng:ref [ name = "db.sect2" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+          rng:zeroOrMore [
+             rng:choice [
+                rng:ref [ name = "db.simplesect" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+       ]
+       rng:oneOrMore [
+          rng:choice [
+             rng:ref [ name = "db.simplesect" ]
+             rng:ref [ name = "db.xi.include" ]
+          ]
+       ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.sect2.sections"
+    combine = "choice"
+    rng:choice [
+       rng:group [
+          rng:oneOrMore [
+             rng:choice [
+                rng:ref [ name = "db.sect3" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+          rng:zeroOrMore [
+             rng:choice [
+                rng:ref [ name = "db.simplesect" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+       ]
+       rng:oneOrMore [
+          rng:choice [
+             rng:ref [ name = "db.simplesect" ]
+             rng:ref [ name = "db.xi.include" ]
+          ]
+       ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.sect3.sections"
+    combine = "choice"
+    rng:choice [
+       rng:group [
+          rng:oneOrMore [
+             rng:choice [
+                rng:ref [ name = "db.sect4" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+          rng:zeroOrMore [
+             rng:choice [
+                rng:ref [ name = "db.simplesect" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+       ]
+       rng:oneOrMore [
+          rng:choice [
+             rng:ref [ name = "db.simplesect" ]
+             rng:ref [ name = "db.xi.include" ]
+          ]
+       ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.sect4.sections"
+    combine = "choice"
+    rng:choice [
+       rng:group [
+          rng:oneOrMore [
+             rng:choice [
+                rng:ref [ name = "db.sect5" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+          rng:zeroOrMore [
+             rng:choice [
+                rng:ref [ name = "db.simplesect" ]
+                rng:ref [ name = "db.xi.include" ]
+             ]
+          ]
+       ]
+       rng:oneOrMore [
+          rng:choice [
+             rng:ref [ name = "db.simplesect" ]
+             rng:ref [ name = "db.xi.include" ]
+          ]
+       ]
+    ]
+  ]
+
+  rng:define [
+    name = "db.sect5.sections"
+    combine = "choice"
+    rng:oneOrMore [
+       rng:choice [
+          rng:ref [ name = "db.simplesect" ]
+          rng:ref [ name = "db.xi.include" ]
+       ]
+    ]
+  ]
+]
+
 # ======================================================================
 
 [