summaryrefslogtreecommitdiff
path: root/etc/schema/dbdyntbl.rnc
diff options
context:
space:
mode:
Diffstat (limited to 'etc/schema/dbdyntbl.rnc')
-rw-r--r--etc/schema/dbdyntbl.rnc116
1 files changed, 116 insertions, 0 deletions
diff --git a/etc/schema/dbdyntbl.rnc b/etc/schema/dbdyntbl.rnc
new file mode 100644
index 00000000000..8e859145fd0
--- /dev/null
+++ b/etc/schema/dbdyntbl.rnc
@@ -0,0 +1,116 @@
+# This is an alternative to dbsoextbl.rnc and dbcalstbl.rnc that
+# allows the table model to be selected dynamically based on the
+# definitions of cals.table.module and exchange.table.module.
+#
+# To use this copy, docbook.rnc to docbook-dyntbl.rnc replacing
+# "dbcalstbl.rnc" by "dbdyntbl.rnc". Then, you can override the
+# choice of table model by doing
+#
+# include "docbook-dyntbl.rnc" {
+# cals.table.model = IGNORE
+# exchange.table.model = INCLUDE
+# }
+
+INCLUDE = empty
+IGNORE = notAllowed
+cals.table.module = INCLUDE
+exchange.table.module = IGNORE
+
+# Add common attributes and the Label attribute to Table and
+# InformalTable.
+bodyatt = common.attrib, label.attrib, tables.role.attrib
+
+# Content model for Table.
+tbl.table.mdl =
+ blockinfo?,
+ formalobject.title.content,
+ ndxterm.class*,
+ textobject*,
+ (graphic+ | mediaobject+ | tgroup+)
+
+table = cals.table | exchange.table
+
+cals.table =
+ cals.table.module,
+ grammar {
+ # Reference CALS Table Model
+ include "calstbl.rnc" {
+ # Add label and role attributes to table and informaltable
+ bodyatt = parent label.attrib
+ # Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ # EntryTbl, and Entry (and InformalTable element).
+ secur = parent common.attrib, parent tables.role.attrib
+ tbl.table.mdl = parent tbl.table.mdl
+ }
+ }
+
+exchange.table =
+ exchange.table.module,
+ grammar {
+ # Reference OASIS Exchange Table Model
+ include "soextbl.rnc" {
+ # Add common attributes and the Label attribute to Table and
+ # InformalTable.
+ bodyatt = parent bodyatt
+ tbl.table.mdl = parent tbl.table.mdl
+ }
+ }
+
+tgroup = cals.tgroup | exchange.tgroup
+
+cals.tgroup =
+ cals.table.module,
+ grammar {
+ # Reference CALS Table Model
+ include "calstbl.rnc" {
+ start = tgroup
+ # Add label and role attributes to table and informaltable
+ bodyatt = parent label.attrib
+ # Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
+ # EntryTbl, and Entry (and InformalTable element).
+ secur = parent common.attrib, parent tables.role.attrib
+ # Allow either objects or inlines; beware of REs between elements.
+ tbl.entry.mdl = parent para.char.mix | parent tabentry.mix
+ }
+ }
+
+exchange.tgroup =
+ exchange.table.module,
+ grammar {
+ # Reference OASIS Exchange Table Model
+ include "soextbl.rnc" {
+ start = tgroup
+ bodyatt = parent bodyatt
+ # Add common attributes to TGroup, ColSpec, TBody, THead, Row, Entry
+ tbl.tgroup.att = parent common.attrib
+ tbl.colspec.att = parent common.attrib
+ tbl.tbody.att = parent common.attrib
+ tbl.thead.att = parent common.attrib
+ tbl.row.att = parent common.attrib
+ tbl.entry.att = parent common.attrib
+ # Allow either objects or inlines; beware of REs between elements.
+ tbl.entry.mdl = (parent para.char.mix | parent tabentry.mix)*
+ }
+ }
+
+tbl.table.att = cals.tbl.table.att | exchange.tbl.table.att
+
+cals.tbl.table.att =
+ cals.table.module,
+ grammar {
+ include "calstbl.rnc" {
+ start = tbl.table.att
+ }
+ }
+
+exchange.tbl.table.att =
+ exchange.table.module,
+ grammar {
+ include "soextbl.rnc" {
+ start = tbl.table.att
+ }
+ }
+
+common.table.attribs = bodyatt
+
+# end of table.module