diff options
Diffstat (limited to 'etc/schema/dbdyntbl.rnc')
-rw-r--r-- | etc/schema/dbdyntbl.rnc | 116 |
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 |