aboutsummaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorMark A. Hershberger2007-11-23 06:58:00 +0000
committerMark A. Hershberger2007-11-23 06:58:00 +0000
commit8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc (patch)
tree7bcd47a7dcbbad100dd3e8f8a7e08b48353c58a8 /etc
parentf7cf8b2009b0bc2526d50c3455f737a543122dd4 (diff)
downloademacs-8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc.tar.gz
emacs-8cd39fb3c4cf47d2464f00eaa69c587e17dd11cc.zip
Initial merge of nxml
Diffstat (limited to 'etc')
-rw-r--r--etc/ChangeLog4
-rw-r--r--etc/schema/calstbl.rnc184
-rw-r--r--etc/schema/dbcalstbl.rnc25
-rw-r--r--etc/schema/dbdyntbl.rnc116
-rw-r--r--etc/schema/dbhier.rnc1467
-rw-r--r--etc/schema/dbnotn.rnc84
-rw-r--r--etc/schema/dbpool.rnc5083
-rw-r--r--etc/schema/dbsoextbl.rnc30
-rw-r--r--etc/schema/dbstart.rnc23
-rw-r--r--etc/schema/docbook-dyntbl.rnc18
-rw-r--r--etc/schema/docbook-soextbl.rnc17
-rw-r--r--etc/schema/docbook.rnc48
-rw-r--r--etc/schema/locate.rnc200
-rw-r--r--etc/schema/rdfxml.rnc205
-rw-r--r--etc/schema/relaxng.rnc63
-rw-r--r--etc/schema/schemas.xml36
-rw-r--r--etc/schema/soextbl.rnc260
-rw-r--r--etc/schema/xhtml-applet.rnc19
-rw-r--r--etc/schema/xhtml-attribs.rnc14
-rw-r--r--etc/schema/xhtml-base.rnc5
-rw-r--r--etc/schema/xhtml-basic-form.rnc63
-rw-r--r--etc/schema/xhtml-basic-table.rnc28
-rw-r--r--etc/schema/xhtml-bdo.rnc7
-rw-r--r--etc/schema/xhtml-csismap.rnc29
-rw-r--r--etc/schema/xhtml-datatypes.rnc47
-rw-r--r--etc/schema/xhtml-edit.rnc12
-rw-r--r--etc/schema/xhtml-events.rnc47
-rw-r--r--etc/schema/xhtml-form.rnc49
-rw-r--r--etc/schema/xhtml-frames.rnc26
-rw-r--r--etc/schema/xhtml-hypertext.rnc16
-rw-r--r--etc/schema/xhtml-iframe.rnc14
-rw-r--r--etc/schema/xhtml-image.rnc11
-rw-r--r--etc/schema/xhtml-inlstyle.rnc3
-rw-r--r--etc/schema/xhtml-legacy.rnc100
-rw-r--r--etc/schema/xhtml-link.rnc13
-rw-r--r--etc/schema/xhtml-list.rnc16
-rw-r--r--etc/schema/xhtml-meta.rnc10
-rw-r--r--etc/schema/xhtml-nameident.rnc10
-rw-r--r--etc/schema/xhtml-object.rnc24
-rw-r--r--etc/schema/xhtml-param.rnc9
-rw-r--r--etc/schema/xhtml-pres.rnc18
-rw-r--r--etc/schema/xhtml-ruby.rnc21
-rw-r--r--etc/schema/xhtml-script.rnc15
-rw-r--r--etc/schema/xhtml-ssismap.rnc5
-rw-r--r--etc/schema/xhtml-struct.rnc14
-rw-r--r--etc/schema/xhtml-style.rnc10
-rw-r--r--etc/schema/xhtml-table.rnc67
-rw-r--r--etc/schema/xhtml-target.rnc8
-rw-r--r--etc/schema/xhtml-text.rnc73
-rw-r--r--etc/schema/xhtml.rnc37
-rw-r--r--etc/schema/xslt.rnc356
51 files changed, 9059 insertions, 0 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 67bf2d8e9df..419522c810a 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
12007-11-23 Mark A. Hershberger <mah@everybody.org>
2
3 * schema: Initial merge of nxml.
4
12007-11-22 Francesco Potort,Al(B <pot@gnu.org> 52007-11-22 Francesco Potort,Al(B <pot@gnu.org>
2 6
3 * NEWS: etags: the --members option is now the default. 7 * NEWS: etags: the --members option is now the default.
diff --git a/etc/schema/calstbl.rnc b/etc/schema/calstbl.rnc
new file mode 100644
index 00000000000..5d334e8ebd2
--- /dev/null
+++ b/etc/schema/calstbl.rnc
@@ -0,0 +1,184 @@
1# This file was generated automatically by Trang, and then manually
2# edited to add back definitions for overridden parameter entities and
3# undefined elements, specifically: bodyatt, secur, paracon,
4# tbl.table.mdl, tbl.entry.mdl, caution, graphic, legend, note, para,
5# title, warning. This makes the semantics of this module as close as
6# possible to the original DTD and also allows this schema to be used
7# independently of DocBook.
8
9# ......................................................................
10
11# DocBook CALS Table Model V4.2 ........................................
12
13# File calstblx.mod ....................................................
14
15# Copyright 1992-2002 HaL Computer Systems, Inc.,
16# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
17# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
18# Organization for the Advancement of Structured Information
19# Standards (OASIS).
20#
21# This DTD is based on the CALS Table Model
22# PUBLIC "-//USA-DOD//DTD Table Model 951010//EN"
23#
24# $Id: calstbl.rnc,v 1.2 2003/08/30 06:04:02 jjc Exp $
25#
26# Permission to use, copy, modify and distribute the DocBook DTD
27# and its accompanying documentation for any purpose and without fee
28# is hereby granted in perpetuity, provided that the above copyright
29# notice and this paragraph appear in all copies. The copyright
30# holders make no representation about the suitability of the DTD for
31# any purpose. It is provided "as is" without expressed or implied
32# warranty.
33#
34# If you modify the DocBook DTD in any way, except for declaring and
35# referencing additional sets of general entities and declaring
36# additional notations, label your DTD as a variant of DocBook. See
37# the maintenance documentation for more information.
38#
39# Please direct all questions, bug reports, or suggestions for
40# changes to the docbook@lists.oasis-open.org mailing list. For more
41# information, see http://www.oasis-open.org/docbook/.
42
43# ......................................................................
44
45# This module contains the definitions for the CALS Table Model
46# converted to XML.
47
48# These definitions are not directly related to the table model, but are
49# used in the default CALS table model and are usually defined elsewhere
50# (and prior to the inclusion of this table module) in a CALS DTD.
51
52bodyatt = empty
53secur = empty
54
55# no if zero(s),
56# yes if any other digits value
57
58yesorno = string
59titles = title?
60# default for use in entry content
61paracon = text
62
63# The parameter entities as defined below provide the CALS table model
64# as published (as part of the Example DTD) in MIL-HDBK-28001.
65#
66# These following declarations provide the CALS-compliant default definitions
67# for these entities. However, these entities can and should be redefined
68# (by giving the appropriate parameter entity declaration(s) prior to the
69# reference to this Table Model declaration set entity) to fit the needs
70# of the current application.
71tbl.table-titles.mdl = titles
72tbl.table-main.mdl = tgroup+ | graphic+
73tbl.table.mdl = tbl.table-titles.mdl | tbl.table-main.mdl
74tbl.table.att =
75 attribute tabstyle { text }?,
76 attribute tocentry { yesorno }?,
77 attribute shortentry { yesorno }?,
78 attribute orient { "port" | "land" }?,
79 attribute pgwide { yesorno }?
80tbl.tgroup.mdl = colspec*, spanspec*, thead?, tfoot?, tbody
81tbl.tgroup.att = attribute tgroupstyle { text }?
82tbl.hdft.mdl = colspec*, row+
83tbl.row.mdl = (entry | entrytbl)+
84tbl.entrytbl.mdl = colspec*, spanspec*, thead?, tbody
85tbl.entry.mdl = paracon | para | warning | caution | note | legend
86# ===== Element and attribute declarations follow. =====
87start = table
88table = element table { table.attlist, tbl.table.mdl }
89table.attlist &=
90 attribute frame {
91 "top" | "bottom" | "topbot" | "all" | "sides" | "none"
92 }?,
93 attribute colsep { yesorno }?,
94 attribute rowsep { yesorno }?,
95 tbl.table.att,
96 bodyatt,
97 secur
98tgroup = element tgroup { tgroup.attlist, tbl.tgroup.mdl }
99tgroup.attlist &=
100 attribute cols { text },
101 tbl.tgroup.att,
102 attribute colsep { yesorno }?,
103 attribute rowsep { yesorno }?,
104 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
105 attribute char { text }?,
106 attribute charoff { text }?,
107 secur
108colspec = element colspec { colspec.attlist, empty }
109colspec.attlist &=
110 attribute colnum { text }?,
111 attribute colname { text }?,
112 attribute colwidth { text }?,
113 attribute colsep { yesorno }?,
114 attribute rowsep { yesorno }?,
115 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
116 attribute char { text }?,
117 attribute charoff { text }?
118spanspec = element spanspec { spanspec.attlist, empty }
119spanspec.attlist &=
120 attribute namest { text },
121 attribute nameend { text },
122 attribute spanname { text },
123 attribute colsep { yesorno }?,
124 attribute rowsep { yesorno }?,
125 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
126 attribute char { text }?,
127 attribute charoff { text }?
128thead = element thead { thead.attlist, tbl.hdft.mdl }
129thead.attlist &=
130 attribute valign { "top" | "middle" | "bottom" }?,
131 secur
132tfoot = element tfoot { tfoot.attlist, tbl.hdft.mdl }
133tfoot.attlist &=
134 attribute valign { "top" | "middle" | "bottom" }?,
135 secur
136tbody = element tbody { tbody.attlist, row+ }
137tbody.attlist &=
138 attribute valign { "top" | "middle" | "bottom" }?,
139 secur
140row = element row { row.attlist, tbl.row.mdl }
141row.attlist &=
142 attribute rowsep { yesorno }?,
143 attribute valign { "top" | "middle" | "bottom" }?,
144 secur
145entrytbl = element entrytbl { entrytbl.attlist, tbl.entrytbl.mdl }
146entrytbl.attlist &=
147 attribute cols { text },
148 tbl.tgroup.att,
149 attribute colname { text }?,
150 attribute spanname { text }?,
151 attribute namest { text }?,
152 attribute nameend { text }?,
153 attribute colsep { yesorno }?,
154 attribute rowsep { yesorno }?,
155 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
156 attribute char { text }?,
157 attribute charoff { text }?,
158 secur
159entry = element entry { entry.attlist, tbl.entry.mdl* }
160entry.attlist &=
161 attribute colname { text }?,
162 attribute namest { text }?,
163 attribute nameend { text }?,
164 attribute spanname { text }?,
165 attribute morerows { text }?,
166 attribute colsep { yesorno }?,
167 attribute rowsep { yesorno }?,
168 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
169 attribute char { text }?,
170 attribute charoff { text }?,
171 attribute rotate { yesorno }?,
172 attribute valign { "top" | "middle" | "bottom" }?,
173 secur
174caution |= notAllowed
175graphic |= notAllowed
176legend |= notAllowed
177note |= notAllowed
178para |= notAllowed
179title |= notAllowed
180warning |= notAllowed
181
182# End of DocBook CALS Table Model V4.2 .................................
183
184# ......................................................................
diff --git a/etc/schema/dbcalstbl.rnc b/etc/schema/dbcalstbl.rnc
new file mode 100644
index 00000000000..9841df2d734
--- /dev/null
+++ b/etc/schema/dbcalstbl.rnc
@@ -0,0 +1,25 @@
1# Definitions specific to the CALS Table Model.
2
3# Reference CALS Table Model
4include "calstbl.rnc" {
5 # Override definition of start
6 start |= notAllowed
7 # Add label and role attributes to table and informaltable
8 bodyatt = label.attrib
9 # Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
10 # EntryTbl, and Entry (and InformalTable element).
11 secur = common.attrib, tables.role.attrib
12 # Content model for Table.
13 tbl.table.mdl =
14 blockinfo?,
15 formalobject.title.content,
16 ndxterm.class*,
17 textobject*,
18 (graphic+ | mediaobject+ | tgroup+)
19 # Allow either objects or inlines; beware of REs between elements.
20 tbl.entry.mdl = para.char.mix | tabentry.mix
21}
22
23common.table.attribs = bodyatt, secur
24
25# end of table.module
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 @@
1# This is an alternative to dbsoextbl.rnc and dbcalstbl.rnc that
2# allows the table model to be selected dynamically based on the
3# definitions of cals.table.module and exchange.table.module.
4#
5# To use this copy, docbook.rnc to docbook-dyntbl.rnc replacing
6# "dbcalstbl.rnc" by "dbdyntbl.rnc". Then, you can override the
7# choice of table model by doing
8#
9# include "docbook-dyntbl.rnc" {
10# cals.table.model = IGNORE
11# exchange.table.model = INCLUDE
12# }
13
14INCLUDE = empty
15IGNORE = notAllowed
16cals.table.module = INCLUDE
17exchange.table.module = IGNORE
18
19# Add common attributes and the Label attribute to Table and
20# InformalTable.
21bodyatt = common.attrib, label.attrib, tables.role.attrib
22
23# Content model for Table.
24tbl.table.mdl =
25 blockinfo?,
26 formalobject.title.content,
27 ndxterm.class*,
28 textobject*,
29 (graphic+ | mediaobject+ | tgroup+)
30
31table = cals.table | exchange.table
32
33cals.table =
34 cals.table.module,
35 grammar {
36 # Reference CALS Table Model
37 include "calstbl.rnc" {
38 # Add label and role attributes to table and informaltable
39 bodyatt = parent label.attrib
40 # Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
41 # EntryTbl, and Entry (and InformalTable element).
42 secur = parent common.attrib, parent tables.role.attrib
43 tbl.table.mdl = parent tbl.table.mdl
44 }
45 }
46
47exchange.table =
48 exchange.table.module,
49 grammar {
50 # Reference OASIS Exchange Table Model
51 include "soextbl.rnc" {
52 # Add common attributes and the Label attribute to Table and
53 # InformalTable.
54 bodyatt = parent bodyatt
55 tbl.table.mdl = parent tbl.table.mdl
56 }
57 }
58
59tgroup = cals.tgroup | exchange.tgroup
60
61cals.tgroup =
62 cals.table.module,
63 grammar {
64 # Reference CALS Table Model
65 include "calstbl.rnc" {
66 start = tgroup
67 # Add label and role attributes to table and informaltable
68 bodyatt = parent label.attrib
69 # Add common attributes to Table, TGroup, TBody, THead, TFoot, Row,
70 # EntryTbl, and Entry (and InformalTable element).
71 secur = parent common.attrib, parent tables.role.attrib
72 # Allow either objects or inlines; beware of REs between elements.
73 tbl.entry.mdl = parent para.char.mix | parent tabentry.mix
74 }
75 }
76
77exchange.tgroup =
78 exchange.table.module,
79 grammar {
80 # Reference OASIS Exchange Table Model
81 include "soextbl.rnc" {
82 start = tgroup
83 bodyatt = parent bodyatt
84 # Add common attributes to TGroup, ColSpec, TBody, THead, Row, Entry
85 tbl.tgroup.att = parent common.attrib
86 tbl.colspec.att = parent common.attrib
87 tbl.tbody.att = parent common.attrib
88 tbl.thead.att = parent common.attrib
89 tbl.row.att = parent common.attrib
90 tbl.entry.att = parent common.attrib
91 # Allow either objects or inlines; beware of REs between elements.
92 tbl.entry.mdl = (parent para.char.mix | parent tabentry.mix)*
93 }
94 }
95
96tbl.table.att = cals.tbl.table.att | exchange.tbl.table.att
97
98cals.tbl.table.att =
99 cals.table.module,
100 grammar {
101 include "calstbl.rnc" {
102 start = tbl.table.att
103 }
104 }
105
106exchange.tbl.table.att =
107 exchange.table.module,
108 grammar {
109 include "soextbl.rnc" {
110 start = tbl.table.att
111 }
112 }
113
114common.table.attribs = bodyatt
115
116# end of table.module
diff --git a/etc/schema/dbhier.rnc b/etc/schema/dbhier.rnc
new file mode 100644
index 00000000000..1671b01fbce
--- /dev/null
+++ b/etc/schema/dbhier.rnc
@@ -0,0 +1,1467 @@
1# ......................................................................
2
3# DocBook document hierarchy module V4.2 ...............................
4
5# File dbhierx.mod .....................................................
6
7# Copyright 1992-2002 HaL Computer Systems, Inc.,
8# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
9# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
10# Organization for the Advancement of Structured Information
11# Standards (OASIS).
12#
13# $Id: dbhier.rnc,v 1.1 2003/08/30 04:19:27 jjc Exp $
14#
15# Permission to use, copy, modify and distribute the DocBook DTD
16# and its accompanying documentation for any purpose and without fee
17# is hereby granted in perpetuity, provided that the above copyright
18# notice and this paragraph appear in all copies. The copyright
19# holders make no representation about the suitability of the DTD for
20# any purpose. It is provided "as is" without expressed or implied
21# warranty.
22#
23# If you modify the DocBook DTD in any way, except for declaring and
24# referencing additional sets of general entities and declaring
25# additional notations, label your DTD as a variant of DocBook. See
26# the maintenance documentation for more information.
27#
28# Please direct all questions, bug reports, or suggestions for
29# changes to the docbook@lists.oasis-open.org mailing list. For more
30# information, see http://www.oasis-open.org/docbook/.
31
32# ......................................................................
33
34# This module contains the definitions for the overall document
35# hierarchies of DocBook documents. It covers computer documentation
36# manuals and manual fragments, as well as reference entries (such as
37# man pages) and technical journals or anthologies containing
38# articles.
39#
40# This module depends on the DocBook information pool module. All
41# elements and entities referenced but not defined here are assumed
42# to be defined in the information pool module.
43#
44# In DTD driver files referring to this module, please use an entity
45# declaration that uses the public identifier shown below:
46#
47# <!ENTITY % dbhier PUBLIC
48# "-//OASIS//ELEMENTS DocBook Document Hierarchy V4.2//EN"
49# "dbhierx.mod">
50# %dbhier;
51#
52# See the documentation for detailed information on the parameter
53# entity and module scheme used in DocBook, customizing DocBook and
54# planning for interchange, and changes made since the last release
55# of DocBook.
56
57# ......................................................................
58
59# Entities for module inclusions .......................................
60
61# ......................................................................
62
63# Entities for element classes .........................................
64
65local.appendix.class = notAllowed
66appendix.class = appendix | local.appendix.class
67local.article.class = notAllowed
68article.class = article | local.article.class
69local.book.class = notAllowed
70book.class = book | local.book.class
71local.chapter.class = notAllowed
72chapter.class = chapter | local.chapter.class
73local.index.class = notAllowed
74index.class = index | setindex | local.index.class
75local.refentry.class = notAllowed
76refentry.class = refentry | local.refentry.class
77local.section.class = notAllowed
78section.class = section | local.section.class
79local.nav.class = notAllowed
80nav.class =
81 toc | lot | index | glossary | bibliography | local.nav.class
82# Redeclaration placeholder ............................................
83
84# For redeclaring entities that are declared after this point while
85# retaining their references to the entities that are declared before
86# this point
87
88# ......................................................................
89
90# Entities for element mixtures ........................................
91
92# The DocBook TC may produce an official forms module for DocBook.
93
94# This PE provides the hook by which it can be inserted into the DTD.
95forms.hook = notAllowed
96local.divcomponent.mix = notAllowed
97divcomponent.mix =
98 list.class
99 | admon.class
100 | linespecific.class
101 | synop.class
102 | para.class
103 | informal.class
104 | formal.class
105 | compound.class
106 | genobj.class
107 | descobj.class
108 | ndxterm.class
109 | beginpage
110 | forms.hook
111 | local.divcomponent.mix
112local.refcomponent.mix = notAllowed
113refcomponent.mix =
114 list.class
115 | admon.class
116 | linespecific.class
117 | synop.class
118 | para.class
119 | informal.class
120 | formal.class
121 | compound.class
122 | genobj.class
123 | descobj.class
124 | ndxterm.class
125 | beginpage
126 | local.refcomponent.mix
127local.indexdivcomponent.mix = notAllowed
128indexdivcomponent.mix =
129 itemizedlist
130 | orderedlist
131 | variablelist
132 | simplelist
133 | linespecific.class
134 | synop.class
135 | para.class
136 | informal.class
137 | anchor
138 | remark
139 | link.char.class
140 | beginpage
141 | local.indexdivcomponent.mix
142local.refname.char.mix = notAllowed
143refname.char.mix = text | tech.char.class | local.refname.char.mix
144local.partcontent.mix = notAllowed
145partcontent.mix =
146 appendix.class
147 | chapter.class
148 | nav.class
149 | article.class
150 | preface
151 | refentry.class
152 | reference
153 | local.partcontent.mix
154local.refinline.char.mix = notAllowed
155refinline.char.mix =
156 text
157 | xref.char.class
158 | gen.char.class
159 | link.char.class
160 | tech.char.class
161 | base.char.class
162 | docinfo.char.class
163 | other.char.class
164 | ndxterm.class
165 | beginpage
166 | local.refinline.char.mix
167local.refclass.char.mix = notAllowed
168refclass.char.mix = text | application | local.refclass.char.mix
169# Redeclaration placeholder 2 ..........................................
170
171# For redeclaring entities that are declared after this point while
172# retaining their references to the entities that are declared before
173# this point
174
175# ......................................................................
176
177# Entities for content models ..........................................
178div.title.content = title, subtitle?, titleabbrev?
179bookcomponent.title.content = title, subtitle?, titleabbrev?
180sect.title.content = title, subtitle?, titleabbrev?
181refsect.title.content = title, subtitle?, titleabbrev?
182bookcomponent.content =
183 (divcomponent.mix+,
184 (sect1* | refentry.class* | simplesect* | section.class*))
185 | (sect1+ | refentry.class+ | simplesect+ | section.class+)
186# ......................................................................
187
188# Set and SetInfo ......................................................
189local.set.attrib = empty
190set.role.attrib = role.attrib
191set =
192 element set {
193 set.attlist,
194 div.title.content?,
195 setinfo?,
196 toc?,
197 book.class+,
198 setindex?
199 }
200# end of set.element
201
202# FPI: SGML formal public identifier
203set.attlist &=
204 attribute fpi { text }?,
205 status.attrib,
206 common.attrib,
207 set.role.attrib,
208 local.set.attrib
209# end of set.attlist
210
211# end of set.module
212local.setinfo.attrib = empty
213setinfo.role.attrib = role.attrib
214setinfo = element setinfo { setinfo.attlist, info.class+ }
215# end of setinfo.element
216
217# Contents: IDs of the ToC, Books, and SetIndex that comprise
218# the set, in the order of their appearance
219setinfo.attlist &=
220 attribute contents { xsd:IDREFS }?,
221 common.attrib,
222 setinfo.role.attrib,
223 local.setinfo.attrib
224# end of setinfo.attlist
225
226# end of setinfo.module
227
228# end of set.content.module
229
230# ......................................................................
231
232# Book and BookInfo ....................................................
233local.book.attrib = empty
234book.role.attrib = role.attrib
235book =
236 element book {
237 book.attlist,
238 div.title.content?,
239 bookinfo?,
240 (dedication
241 | toc
242 | lot
243 | glossary
244 | bibliography
245 | preface
246 | chapter.class
247 | reference
248 | part
249 | article.class
250 | appendix.class
251 | index.class
252 | colophon)*
253 }
254# end of book.element
255
256# FPI: SGML formal public identifier
257book.attlist &=
258 attribute fpi { text }?,
259 label.attrib,
260 status.attrib,
261 common.attrib,
262 book.role.attrib,
263 local.book.attrib
264# end of book.attlist
265
266# end of book.module
267local.bookinfo.attrib = empty
268bookinfo.role.attrib = role.attrib
269bookinfo = element bookinfo { bookinfo.attlist, info.class+ }
270# end of bookinfo.element
271
272# Contents: IDs of the ToC, LoTs, Prefaces, Parts, Chapters,
273# Appendixes, References, GLossary, Bibliography, and indexes
274# comprising the Book, in the order of their appearance
275bookinfo.attlist &=
276 attribute contents { xsd:IDREFS }?,
277 common.attrib,
278 bookinfo.role.attrib,
279 local.bookinfo.attrib
280# end of bookinfo.attlist
281
282# end of bookinfo.module
283
284# end of book.content.module
285
286# ......................................................................
287
288# Dedication, ToC, and LoT .............................................
289local.dedication.attrib = empty
290dedication.role.attrib = role.attrib
291dedication =
292 element dedication {
293 dedication.attlist, sect.title.content?, legalnotice.mix+
294 }
295# end of dedication.element
296dedication.attlist &=
297 status.attrib,
298 common.attrib,
299 dedication.role.attrib,
300 local.dedication.attrib
301# end of dedication.attlist
302
303# end of dedication.module
304local.colophon.attrib = empty
305colophon.role.attrib = role.attrib
306colophon =
307 element colophon {
308 colophon.attlist, sect.title.content?, textobject.mix+
309 }
310# end of colophon.element
311colophon.attlist &=
312 status.attrib,
313 common.attrib,
314 colophon.role.attrib,
315 local.colophon.attrib
316# end of colophon.attlist
317
318# end of colophon.module
319local.toc.attrib = empty
320toc.role.attrib = role.attrib
321toc =
322 element toc {
323 toc.attlist,
324 beginpage?,
325 bookcomponent.title.content?,
326 tocfront*,
327 (tocpart | tocchap)*,
328 tocback*
329 }
330# end of toc.element
331toc.attlist &=
332 pagenum.attrib, common.attrib, toc.role.attrib, local.toc.attrib
333# end of toc.attlist
334
335# end of toc.module
336local.tocfront.attrib = empty
337tocfront.role.attrib = role.attrib
338tocfront = element tocfront { tocfront.attlist, para.char.mix* }
339# end of tocfront.element
340
341# to element that this entry represents
342tocfront.attlist &=
343 label.attrib,
344 linkend.attrib,
345 pagenum.attrib,
346 common.attrib,
347 tocfront.role.attrib,
348 local.tocfront.attrib
349# end of tocfront.attlist
350
351# end of tocfront.module
352local.tocentry.attrib = empty
353tocentry.role.attrib = role.attrib
354tocentry = element tocentry { tocentry.attlist, para.char.mix* }
355# end of tocentry.element
356
357# to element that this entry represents
358tocentry.attlist &=
359 linkend.attrib,
360 pagenum.attrib,
361 common.attrib,
362 tocentry.role.attrib,
363 local.tocentry.attrib
364# end of tocentry.attlist
365
366# end of tocentry.module
367local.tocpart.attrib = empty
368tocpart.role.attrib = role.attrib
369tocpart = element tocpart { tocpart.attlist, tocentry+, tocchap* }
370# end of tocpart.element
371tocpart.attlist &=
372 common.attrib, tocpart.role.attrib, local.tocpart.attrib
373# end of tocpart.attlist
374
375# end of tocpart.module
376local.tocchap.attrib = empty
377tocchap.role.attrib = role.attrib
378tocchap = element tocchap { tocchap.attlist, tocentry+, toclevel1* }
379# end of tocchap.element
380tocchap.attlist &=
381 label.attrib, common.attrib, tocchap.role.attrib, local.tocchap.attrib
382# end of tocchap.attlist
383
384# end of tocchap.module
385local.toclevel1.attrib = empty
386toclevel1.role.attrib = role.attrib
387toclevel1 =
388 element toclevel1 { toclevel1.attlist, tocentry+, toclevel2* }
389# end of toclevel1.element
390toclevel1.attlist &=
391 common.attrib, toclevel1.role.attrib, local.toclevel1.attrib
392# end of toclevel1.attlist
393
394# end of toclevel1.module
395local.toclevel2.attrib = empty
396toclevel2.role.attrib = role.attrib
397toclevel2 =
398 element toclevel2 { toclevel2.attlist, tocentry+, toclevel3* }
399# end of toclevel2.element
400toclevel2.attlist &=
401 common.attrib, toclevel2.role.attrib, local.toclevel2.attrib
402# end of toclevel2.attlist
403
404# end of toclevel2.module
405local.toclevel3.attrib = empty
406toclevel3.role.attrib = role.attrib
407toclevel3 =
408 element toclevel3 { toclevel3.attlist, tocentry+, toclevel4* }
409# end of toclevel3.element
410toclevel3.attlist &=
411 common.attrib, toclevel3.role.attrib, local.toclevel3.attrib
412# end of toclevel3.attlist
413
414# end of toclevel3.module
415local.toclevel4.attrib = empty
416toclevel4.role.attrib = role.attrib
417toclevel4 =
418 element toclevel4 { toclevel4.attlist, tocentry+, toclevel5* }
419# end of toclevel4.element
420toclevel4.attlist &=
421 common.attrib, toclevel4.role.attrib, local.toclevel4.attrib
422# end of toclevel4.attlist
423
424# end of toclevel4.module
425local.toclevel5.attrib = empty
426toclevel5.role.attrib = role.attrib
427toclevel5 = element toclevel5 { toclevel5.attlist, tocentry+ }
428# end of toclevel5.element
429toclevel5.attlist &=
430 common.attrib, toclevel5.role.attrib, local.toclevel5.attrib
431# end of toclevel5.attlist
432
433# end of toclevel5.module
434local.tocback.attrib = empty
435tocback.role.attrib = role.attrib
436tocback = element tocback { tocback.attlist, para.char.mix* }
437# end of tocback.element
438
439# to element that this entry represents
440tocback.attlist &=
441 label.attrib,
442 linkend.attrib,
443 pagenum.attrib,
444 common.attrib,
445 tocback.role.attrib,
446 local.tocback.attrib
447# end of tocback.attlist
448
449# end of tocback.module
450
451# end of toc.content.module
452local.lot.attrib = empty
453lot.role.attrib = role.attrib
454lot =
455 element lot {
456 lot.attlist, beginpage?, bookcomponent.title.content?, lotentry*
457 }
458# end of lot.element
459lot.attlist &=
460 label.attrib, common.attrib, lot.role.attrib, local.lot.attrib
461# end of lot.attlist
462
463# end of lot.module
464local.lotentry.attrib = empty
465lotentry.role.attrib = role.attrib
466lotentry = element lotentry { lotentry.attlist, para.char.mix* }
467# end of lotentry.element
468
469# SrcCredit: Information about the source of the entry,
470# as for a list of illustrations
471
472# linkend: to element that this entry represents
473lotentry.attlist &=
474 linkend.attrib,
475 pagenum.attrib,
476 attribute srccredit { text }?,
477 common.attrib,
478 lotentry.role.attrib,
479 local.lotentry.attrib
480# end of lotentry.attlist
481
482# end of lotentry.module
483
484# end of lot.content.module
485
486# ......................................................................
487
488# Appendix, Chapter, Part, Preface, Reference, PartIntro ...............
489local.appendix.attrib = empty
490appendix.role.attrib = role.attrib
491appendix =
492 element appendix {
493 appendix.attlist,
494 beginpage?,
495 appendixinfo?,
496 bookcomponent.title.content,
497 nav.class*,
498 tocchap?,
499 bookcomponent.content,
500 nav.class*
501 }
502# end of appendix.element
503appendix.attlist &=
504 label.attrib,
505 status.attrib,
506 common.attrib,
507 appendix.role.attrib,
508 local.appendix.attrib
509# end of appendix.attlist
510
511# end of appendix.module
512local.chapter.attrib = empty
513chapter.role.attrib = role.attrib
514chapter =
515 element chapter {
516 chapter.attlist,
517 beginpage?,
518 chapterinfo?,
519 bookcomponent.title.content,
520 nav.class*,
521 tocchap?,
522 bookcomponent.content,
523 nav.class*
524 }
525# end of chapter.element
526chapter.attlist &=
527 label.attrib,
528 status.attrib,
529 common.attrib,
530 chapter.role.attrib,
531 local.chapter.attrib
532# end of chapter.attlist
533
534# end of chapter.module
535
536# Note that Part was to have its content model reduced in V4.2. This
537# change will not be made after all.
538local.part.attrib = empty
539part.role.attrib = role.attrib
540part =
541 element part {
542 part.attlist,
543 beginpage?,
544 partinfo?,
545 bookcomponent.title.content,
546 partintro?,
547 partcontent.mix+
548 }
549# end of part.element
550part.attlist &=
551 label.attrib,
552 status.attrib,
553 common.attrib,
554 part.role.attrib,
555 local.part.attrib
556# end of part.attlist
557
558# ELEMENT PartIntro (defined below)
559
560# end of part.module
561local.preface.attrib = empty
562preface.role.attrib = role.attrib
563preface =
564 element preface {
565 preface.attlist,
566 beginpage?,
567 prefaceinfo?,
568 bookcomponent.title.content,
569 nav.class*,
570 tocchap?,
571 bookcomponent.content,
572 nav.class*
573 }
574# end of preface.element
575preface.attlist &=
576 status.attrib,
577 common.attrib,
578 preface.role.attrib,
579 local.preface.attrib
580# end of preface.attlist
581
582# end of preface.module
583local.reference.attrib = empty
584reference.role.attrib = role.attrib
585reference =
586 element reference {
587 reference.attlist,
588 beginpage?,
589 referenceinfo?,
590 bookcomponent.title.content,
591 partintro?,
592 refentry.class+
593 }
594# end of reference.element
595reference.attlist &=
596 label.attrib,
597 status.attrib,
598 common.attrib,
599 reference.role.attrib,
600 local.reference.attrib
601# end of reference.attlist
602
603# ELEMENT PartIntro (defined below)
604
605# end of reference.module
606local.partintro.attrib = empty
607partintro.role.attrib = role.attrib
608partintro =
609 element partintro {
610 partintro.attlist, div.title.content?, bookcomponent.content
611 }
612# end of partintro.element
613partintro.attlist &=
614 label.attrib,
615 common.attrib,
616 partintro.role.attrib,
617 local.partintro.attrib
618# end of partintro.attlist
619
620# end of partintro.module
621
622# ......................................................................
623
624# Other Info elements ..................................................
625local.appendixinfo.attrib = empty
626appendixinfo.role.attrib = role.attrib
627appendixinfo =
628 element appendixinfo { appendixinfo.attlist, info.class+ }
629# end of appendixinfo.element
630appendixinfo.attlist &=
631 common.attrib, appendixinfo.role.attrib, local.appendixinfo.attrib
632# end of appendixinfo.attlist
633
634# end of appendixinfo.module
635local.bibliographyinfo.attrib = empty
636bibliographyinfo.role.attrib = role.attrib
637bibliographyinfo =
638 element bibliographyinfo { bibliographyinfo.attlist, info.class+ }
639# end of bibliographyinfo.element
640bibliographyinfo.attlist &=
641 common.attrib,
642 bibliographyinfo.role.attrib,
643 local.bibliographyinfo.attrib
644# end of bibliographyinfo.attlist
645
646# end of bibliographyinfo.module
647local.chapterinfo.attrib = empty
648chapterinfo.role.attrib = role.attrib
649chapterinfo = element chapterinfo { chapterinfo.attlist, info.class+ }
650# end of chapterinfo.element
651chapterinfo.attlist &=
652 common.attrib, chapterinfo.role.attrib, local.chapterinfo.attrib
653# end of chapterinfo.attlist
654
655# end of chapterinfo.module
656local.glossaryinfo.attrib = empty
657glossaryinfo.role.attrib = role.attrib
658glossaryinfo =
659 element glossaryinfo { glossaryinfo.attlist, info.class+ }
660# end of glossaryinfo.element
661glossaryinfo.attlist &=
662 common.attrib, glossaryinfo.role.attrib, local.glossaryinfo.attrib
663# end of glossaryinfo.attlist
664
665# end of glossaryinfo.module
666local.indexinfo.attrib = empty
667indexinfo.role.attrib = role.attrib
668indexinfo = element indexinfo { indexinfo.attlist, info.class+ }
669# end of indexinfo.element
670indexinfo.attlist &=
671 common.attrib, indexinfo.role.attrib, local.indexinfo.attrib
672# end of indexinfo.attlist
673
674# end of indexinfo.module
675local.setindexinfo.attrib = empty
676setindexinfo.role.attrib = role.attrib
677setindexinfo =
678 element setindexinfo { setindexinfo.attlist, info.class+ }
679# end of setindexinfo.element
680setindexinfo.attlist &=
681 common.attrib, setindexinfo.role.attrib, local.setindexinfo.attrib
682# end of setindexinfo.attlist
683
684# end of setindexinfo.module
685local.partinfo.attrib = empty
686partinfo.role.attrib = role.attrib
687partinfo = element partinfo { partinfo.attlist, info.class+ }
688# end of partinfo.element
689partinfo.attlist &=
690 common.attrib, partinfo.role.attrib, local.partinfo.attrib
691# end of partinfo.attlist
692
693# end of partinfo.module
694local.prefaceinfo.attrib = empty
695prefaceinfo.role.attrib = role.attrib
696prefaceinfo = element prefaceinfo { prefaceinfo.attlist, info.class+ }
697# end of prefaceinfo.element
698prefaceinfo.attlist &=
699 common.attrib, prefaceinfo.role.attrib, local.prefaceinfo.attrib
700# end of prefaceinfo.attlist
701
702# end of prefaceinfo.module
703local.refentryinfo.attrib = empty
704refentryinfo.role.attrib = role.attrib
705refentryinfo =
706 element refentryinfo { refentryinfo.attlist, info.class+ }
707# end of refentryinfo.element
708refentryinfo.attlist &=
709 common.attrib, refentryinfo.role.attrib, local.refentryinfo.attrib
710# end of refentryinfo.attlist
711
712# end of refentryinfo.module
713local.refsectioninfo.attrib = empty
714refsectioninfo.role.attrib = role.attrib
715refsectioninfo =
716 element refsectioninfo { refsectioninfo.attlist, info.class+ }
717# end of refsectioninfo.element
718refsectioninfo.attlist &=
719 common.attrib, refsectioninfo.role.attrib, local.refsectioninfo.attrib
720# end of refsectioninfo.attlist
721
722# end of refsectioninfo.module
723local.refsect1info.attrib = empty
724refsect1info.role.attrib = role.attrib
725refsect1info =
726 element refsect1info { refsect1info.attlist, info.class+ }
727# end of refsect1info.element
728refsect1info.attlist &=
729 common.attrib, refsect1info.role.attrib, local.refsect1info.attrib
730# end of refsect1info.attlist
731
732# end of refsect1info.module
733local.refsect2info.attrib = empty
734refsect2info.role.attrib = role.attrib
735refsect2info =
736 element refsect2info { refsect2info.attlist, info.class+ }
737# end of refsect2info.element
738refsect2info.attlist &=
739 common.attrib, refsect2info.role.attrib, local.refsect2info.attrib
740# end of refsect2info.attlist
741
742# end of refsect2info.module
743local.refsect3info.attrib = empty
744refsect3info.role.attrib = role.attrib
745refsect3info =
746 element refsect3info { refsect3info.attlist, info.class+ }
747# end of refsect3info.element
748refsect3info.attlist &=
749 common.attrib, refsect3info.role.attrib, local.refsect3info.attrib
750# end of refsect3info.attlist
751
752# end of refsect3info.module
753local.refsynopsisdivinfo.attrib = empty
754refsynopsisdivinfo.role.attrib = role.attrib
755refsynopsisdivinfo =
756 element refsynopsisdivinfo { refsynopsisdivinfo.attlist, info.class+ }
757# end of refsynopsisdivinfo.element
758refsynopsisdivinfo.attlist &=
759 common.attrib,
760 refsynopsisdivinfo.role.attrib,
761 local.refsynopsisdivinfo.attrib
762# end of refsynopsisdivinfo.attlist
763
764# end of refsynopsisdivinfo.module
765local.referenceinfo.attrib = empty
766referenceinfo.role.attrib = role.attrib
767referenceinfo =
768 element referenceinfo { referenceinfo.attlist, info.class+ }
769# end of referenceinfo.element
770referenceinfo.attlist &=
771 common.attrib, referenceinfo.role.attrib, local.referenceinfo.attrib
772# end of referenceinfo.attlist
773
774# end of referenceinfo.module
775local.sect1info.attrib = empty
776sect1info.role.attrib = role.attrib
777sect1info = element sect1info { sect1info.attlist, info.class+ }
778# end of sect1info.element
779sect1info.attlist &=
780 common.attrib, sect1info.role.attrib, local.sect1info.attrib
781# end of sect1info.attlist
782local.sect2info.attrib = empty
783sect2info.role.attrib = role.attrib
784sect2info = element sect2info { sect2info.attlist, info.class+ }
785# end of sect2info.element
786sect2info.attlist &=
787 common.attrib, sect2info.role.attrib, local.sect2info.attrib
788# end of sect2info.attlist
789local.sect3info.attrib = empty
790sect3info.role.attrib = role.attrib
791sect3info = element sect3info { sect3info.attlist, info.class+ }
792# end of sect3info.element
793sect3info.attlist &=
794 common.attrib, sect3info.role.attrib, local.sect3info.attrib
795# end of sect3info.attlist
796local.sect4info.attrib = empty
797sect4info.role.attrib = role.attrib
798sect4info = element sect4info { sect4info.attlist, info.class+ }
799# end of sect4info.element
800sect4info.attlist &=
801 common.attrib, sect4info.role.attrib, local.sect4info.attrib
802# end of sect4info.attlist
803local.sect5info.attrib = empty
804sect5info.role.attrib = role.attrib
805sect5info = element sect5info { sect5info.attlist, info.class+ }
806# end of sect5info.element
807sect5info.attlist &=
808 common.attrib, sect5info.role.attrib, local.sect5info.attrib
809# end of sect5info.attlist
810
811# ......................................................................
812
813# Section (parallel to Sect*) .........................................
814local.section.attrib = empty
815section.role.attrib = role.attrib
816section =
817 element section {
818 section.attlist,
819 sectioninfo?,
820 sect.title.content,
821 nav.class*,
822 ((divcomponent.mix+,
823 (refentry.class* | section.class* | simplesect*))
824 | refentry.class+
825 | section.class+
826 | simplesect+),
827 nav.class*
828 }
829# end of section.element
830section.attlist &=
831 label.attrib,
832 status.attrib,
833 common.attrib,
834 section.role.attrib,
835 local.section.attrib
836# end of section.attlist
837
838# end of section.module
839sectioninfo.role.attrib = role.attrib
840local.sectioninfo.attrib = empty
841sectioninfo = element sectioninfo { sectioninfo.attlist, info.class+ }
842# end of sectioninfo.element
843sectioninfo.attlist &=
844 common.attrib, sectioninfo.role.attrib, local.sectioninfo.attrib
845# end of sectioninfo.attlist
846
847# end of sectioninfo.module
848
849# end of section.content.module
850
851# ......................................................................
852
853# Sect1, Sect2, Sect3, Sect4, Sect5 ....................................
854local.sect1.attrib = empty
855sect1.role.attrib = role.attrib
856sect1 =
857 element sect1 {
858 sect1.attlist,
859 sect1info?,
860 sect.title.content,
861 nav.class*,
862 ((divcomponent.mix+, (refentry.class* | sect2* | simplesect*))
863 | refentry.class+
864 | sect2+
865 | simplesect+),
866 nav.class*
867 }
868# end of sect1.element
869
870# Renderas: Indicates the format in which the heading should
871# appear
872sect1.attlist &=
873 attribute renderas { "sect2" | "sect3" | "sect4" | "sect5" }?,
874 label.attrib,
875 status.attrib,
876 common.attrib,
877 sect1.role.attrib,
878 local.sect1.attrib
879# end of sect1.attlist
880
881# end of sect1.module
882local.sect2.attrib = empty
883sect2.role.attrib = role.attrib
884sect2 =
885 element sect2 {
886 sect2.attlist,
887 sect2info?,
888 sect.title.content,
889 nav.class*,
890 ((divcomponent.mix+, (refentry.class* | sect3* | simplesect*))
891 | refentry.class+
892 | sect3+
893 | simplesect+),
894 nav.class*
895 }
896# end of sect2.element
897
898# Renderas: Indicates the format in which the heading should
899# appear
900sect2.attlist &=
901 attribute renderas { "sect1" | "sect3" | "sect4" | "sect5" }?,
902 label.attrib,
903 status.attrib,
904 common.attrib,
905 sect2.role.attrib,
906 local.sect2.attrib
907# end of sect2.attlist
908
909# end of sect2.module
910local.sect3.attrib = empty
911sect3.role.attrib = role.attrib
912sect3 =
913 element sect3 {
914 sect3.attlist,
915 sect3info?,
916 sect.title.content,
917 nav.class*,
918 ((divcomponent.mix+, (refentry.class* | sect4* | simplesect*))
919 | refentry.class+
920 | sect4+
921 | simplesect+),
922 nav.class*
923 }
924# end of sect3.element
925
926# Renderas: Indicates the format in which the heading should
927# appear
928sect3.attlist &=
929 attribute renderas { "sect1" | "sect2" | "sect4" | "sect5" }?,
930 label.attrib,
931 status.attrib,
932 common.attrib,
933 sect3.role.attrib,
934 local.sect3.attrib
935# end of sect3.attlist
936
937# end of sect3.module
938local.sect4.attrib = empty
939sect4.role.attrib = role.attrib
940sect4 =
941 element sect4 {
942 sect4.attlist,
943 sect4info?,
944 sect.title.content,
945 nav.class*,
946 ((divcomponent.mix+, (refentry.class* | sect5* | simplesect*))
947 | refentry.class+
948 | sect5+
949 | simplesect+),
950 nav.class*
951 }
952# end of sect4.element
953
954# Renderas: Indicates the format in which the heading should
955# appear
956sect4.attlist &=
957 attribute renderas { "sect1" | "sect2" | "sect3" | "sect5" }?,
958 label.attrib,
959 status.attrib,
960 common.attrib,
961 sect4.role.attrib,
962 local.sect4.attrib
963# end of sect4.attlist
964
965# end of sect4.module
966local.sect5.attrib = empty
967sect5.role.attrib = role.attrib
968sect5 =
969 element sect5 {
970 sect5.attlist,
971 sect5info?,
972 sect.title.content,
973 nav.class*,
974 ((divcomponent.mix+, (refentry.class* | simplesect*))
975 | refentry.class+
976 | simplesect+),
977 nav.class*
978 }
979# end of sect5.element
980
981# Renderas: Indicates the format in which the heading should
982# appear
983sect5.attlist &=
984 attribute renderas { "sect1" | "sect2" | "sect3" | "sect4" }?,
985 label.attrib,
986 status.attrib,
987 common.attrib,
988 sect5.role.attrib,
989 local.sect5.attrib
990# end of sect5.attlist
991
992# end of sect5.module
993local.simplesect.attrib = empty
994simplesect.role.attrib = role.attrib
995simplesect =
996 element simplesect {
997 simplesect.attlist, sect.title.content, divcomponent.mix+
998 }
999# end of simplesect.element
1000simplesect.attlist &=
1001 common.attrib, simplesect.role.attrib, local.simplesect.attrib
1002# end of simplesect.attlist
1003
1004# end of simplesect.module
1005
1006# ......................................................................
1007
1008# Bibliography .........................................................
1009local.bibliography.attrib = empty
1010bibliography.role.attrib = role.attrib
1011bibliography =
1012 element bibliography {
1013 bibliography.attlist,
1014 bibliographyinfo?,
1015 bookcomponent.title.content?,
1016 component.mix*,
1017 (bibliodiv+ | (biblioentry | bibliomixed)+)
1018 }
1019# end of bibliography.element
1020bibliography.attlist &=
1021 status.attrib,
1022 common.attrib,
1023 bibliography.role.attrib,
1024 local.bibliography.attrib
1025# end of bibliography.attlist
1026
1027# end of bibliography.module
1028local.bibliodiv.attrib = empty
1029bibliodiv.role.attrib = role.attrib
1030bibliodiv =
1031 element bibliodiv {
1032 bibliodiv.attlist,
1033 sect.title.content?,
1034 component.mix*,
1035 (biblioentry | bibliomixed)+
1036 }
1037# end of bibliodiv.element
1038bibliodiv.attlist &=
1039 status.attrib,
1040 common.attrib,
1041 bibliodiv.role.attrib,
1042 local.bibliodiv.attrib
1043# end of bibliodiv.attlist
1044
1045# end of bibliodiv.module
1046
1047# end of bibliography.content.module
1048
1049# ......................................................................
1050
1051# Glossary .............................................................
1052local.glossary.attrib = empty
1053glossary.role.attrib = role.attrib
1054glossary =
1055 element glossary {
1056 glossary.attlist,
1057 glossaryinfo?,
1058 bookcomponent.title.content?,
1059 component.mix*,
1060 (glossdiv+ | glossentry+),
1061 bibliography?
1062 }
1063# end of glossary.element
1064glossary.attlist &=
1065 status.attrib,
1066 common.attrib,
1067 glossary.role.attrib,
1068 local.glossary.attrib
1069# end of glossary.attlist
1070
1071# end of glossary.module
1072local.glossdiv.attrib = empty
1073glossdiv.role.attrib = role.attrib
1074glossdiv =
1075 element glossdiv {
1076 glossdiv.attlist, sect.title.content, component.mix*, glossentry+
1077 }
1078# end of glossdiv.element
1079glossdiv.attlist &=
1080 status.attrib,
1081 common.attrib,
1082 glossdiv.role.attrib,
1083 local.glossdiv.attrib
1084# end of glossdiv.attlist
1085
1086# end of glossdiv.module
1087
1088# end of glossary.content.module
1089
1090# ......................................................................
1091
1092# Index and SetIndex ...................................................
1093local.indexes.attrib = empty
1094indexes.role.attrib = role.attrib
1095index =
1096 element index {
1097 index.attlist,
1098 indexinfo?,
1099 bookcomponent.title.content?,
1100 component.mix*,
1101 (indexdiv* | indexentry*)
1102 }
1103# end of index.element
1104index.attlist &=
1105 common.attrib, indexes.role.attrib, local.indexes.attrib
1106# end of index.attlist
1107setindex =
1108 element setindex {
1109 setindex.attlist,
1110 setindexinfo?,
1111 bookcomponent.title.content?,
1112 component.mix*,
1113 (indexdiv* | indexentry*)
1114 }
1115# end of setindex.element
1116setindex.attlist &=
1117 common.attrib, indexes.role.attrib, local.indexes.attrib
1118# end of setindex.attlist
1119
1120# end of indexes.module
1121
1122# SegmentedList in this content is useful for marking up permuted
1123# indices.
1124local.indexdiv.attrib = empty
1125indexdiv.role.attrib = role.attrib
1126indexdiv =
1127 element indexdiv {
1128 indexdiv.attlist,
1129 sect.title.content?,
1130 (indexdivcomponent.mix*, (indexentry+ | segmentedlist))
1131 }
1132# end of indexdiv.element
1133indexdiv.attlist &=
1134 common.attrib, indexdiv.role.attrib, local.indexdiv.attrib
1135# end of indexdiv.attlist
1136
1137# end of indexdiv.module
1138
1139# Index entries appear in the index, not the text.
1140local.indexentry.attrib = empty
1141indexentry.role.attrib = role.attrib
1142indexentry =
1143 element indexentry {
1144 indexentry.attlist,
1145 primaryie,
1146 (seeie | seealsoie)*,
1147 (secondaryie, (seeie | seealsoie | tertiaryie)*)*
1148 }
1149# end of indexentry.element
1150indexentry.attlist &=
1151 common.attrib, indexentry.role.attrib, local.indexentry.attrib
1152# end of indexentry.attlist
1153
1154# end of indexentry.module
1155local.primsecterie.attrib = empty
1156primsecterie.role.attrib = role.attrib
1157primaryie = element primaryie { primaryie.attlist, ndxterm.char.mix* }
1158# end of primaryie.element
1159
1160# to IndexTerms that these entries represent
1161primaryie.attlist &=
1162 linkends.attrib,
1163 common.attrib,
1164 primsecterie.role.attrib,
1165 local.primsecterie.attrib
1166# end of primaryie.attlist
1167secondaryie =
1168 element secondaryie { secondaryie.attlist, ndxterm.char.mix* }
1169# end of secondaryie.element
1170
1171# to IndexTerms that these entries represent
1172secondaryie.attlist &=
1173 linkends.attrib,
1174 common.attrib,
1175 primsecterie.role.attrib,
1176 local.primsecterie.attrib
1177# end of secondaryie.attlist
1178tertiaryie =
1179 element tertiaryie { tertiaryie.attlist, ndxterm.char.mix* }
1180# end of tertiaryie.element
1181
1182# to IndexTerms that these entries represent
1183tertiaryie.attlist &=
1184 linkends.attrib,
1185 common.attrib,
1186 primsecterie.role.attrib,
1187 local.primsecterie.attrib
1188# end of tertiaryie.attlist
1189
1190# end of primsecterie.module
1191local.seeie.attrib = empty
1192seeie.role.attrib = role.attrib
1193seeie = element seeie { seeie.attlist, ndxterm.char.mix* }
1194# end of seeie.element
1195
1196# to IndexEntry to look up
1197seeie.attlist &=
1198 linkend.attrib, common.attrib, seeie.role.attrib, local.seeie.attrib
1199# end of seeie.attlist
1200
1201# end of seeie.module
1202local.seealsoie.attrib = empty
1203seealsoie.role.attrib = role.attrib
1204seealsoie = element seealsoie { seealsoie.attlist, ndxterm.char.mix* }
1205# end of seealsoie.element
1206
1207# to related IndexEntries
1208seealsoie.attlist &=
1209 linkends.attrib,
1210 common.attrib,
1211 seealsoie.role.attrib,
1212 local.seealsoie.attrib
1213# end of seealsoie.attlist
1214
1215# end of seealsoie.module
1216
1217# end of index.content.module
1218
1219# ......................................................................
1220
1221# RefEntry .............................................................
1222local.refentry.attrib = empty
1223refentry.role.attrib = role.attrib
1224refentry =
1225 element refentry {
1226 refentry.attlist,
1227 beginpage?,
1228 ndxterm.class*,
1229 refentryinfo?,
1230 refmeta?,
1231 (remark | link.char.class)*,
1232 refnamediv,
1233 refsynopsisdiv?,
1234 (refsect1+ | refsection+)
1235 }
1236# end of refentry.element
1237refentry.attlist &=
1238 status.attrib,
1239 common.attrib,
1240 refentry.role.attrib,
1241 local.refentry.attrib
1242# end of refentry.attlist
1243
1244# end of refentry.module
1245local.refmeta.attrib = empty
1246refmeta.role.attrib = role.attrib
1247refmeta =
1248 element refmeta {
1249 refmeta.attlist,
1250 ndxterm.class*,
1251 refentrytitle,
1252 manvolnum?,
1253 refmiscinfo*,
1254 ndxterm.class*
1255 }
1256# end of refmeta.element
1257refmeta.attlist &=
1258 common.attrib, refmeta.role.attrib, local.refmeta.attrib
1259# end of refmeta.attlist
1260
1261# end of refmeta.module
1262local.refmiscinfo.attrib = empty
1263refmiscinfo.role.attrib = role.attrib
1264refmiscinfo =
1265 element refmiscinfo { refmiscinfo.attlist, docinfo.char.mix* }
1266# end of refmiscinfo.element
1267
1268# Class: Freely assignable parameter; no default
1269refmiscinfo.attlist &=
1270 attribute class { text }?,
1271 common.attrib,
1272 refmiscinfo.role.attrib,
1273 local.refmiscinfo.attrib
1274# end of refmiscinfo.attlist
1275
1276# end of refmiscinfo.module
1277local.refnamediv.attrib = empty
1278refnamediv.role.attrib = role.attrib
1279refnamediv =
1280 element refnamediv {
1281 refnamediv.attlist,
1282 refdescriptor?,
1283 refname+,
1284 refpurpose,
1285 refclass*,
1286 (remark | link.char.class)*
1287 }
1288# end of refnamediv.element
1289refnamediv.attlist &=
1290 common.attrib, refnamediv.role.attrib, local.refnamediv.attrib
1291# end of refnamediv.attlist
1292
1293# end of refnamediv.module
1294local.refdescriptor.attrib = empty
1295refdescriptor.role.attrib = role.attrib
1296refdescriptor =
1297 element refdescriptor { refdescriptor.attlist, refname.char.mix* }
1298# end of refdescriptor.element
1299refdescriptor.attlist &=
1300 common.attrib, refdescriptor.role.attrib, local.refdescriptor.attrib
1301# end of refdescriptor.attlist
1302
1303# end of refdescriptor.module
1304local.refname.attrib = empty
1305refname.role.attrib = role.attrib
1306refname = element refname { refname.attlist, refname.char.mix* }
1307# end of refname.element
1308refname.attlist &=
1309 common.attrib, refname.role.attrib, local.refname.attrib
1310# end of refname.attlist
1311
1312# end of refname.module
1313local.refpurpose.attrib = empty
1314refpurpose.role.attrib = role.attrib
1315refpurpose =
1316 element refpurpose { refpurpose.attlist, refinline.char.mix* }
1317# end of refpurpose.element
1318refpurpose.attlist &=
1319 common.attrib, refpurpose.role.attrib, local.refpurpose.attrib
1320# end of refpurpose.attlist
1321
1322# end of refpurpose.module
1323local.refclass.attrib = empty
1324refclass.role.attrib = role.attrib
1325refclass = element refclass { refclass.attlist, refclass.char.mix* }
1326# end of refclass.element
1327refclass.attlist &=
1328 common.attrib, refclass.role.attrib, local.refclass.attrib
1329# end of refclass.attlist
1330
1331# end of refclass.module
1332local.refsynopsisdiv.attrib = empty
1333refsynopsisdiv.role.attrib = role.attrib
1334refsynopsisdiv =
1335 element refsynopsisdiv {
1336 refsynopsisdiv.attlist,
1337 refsynopsisdivinfo?,
1338 refsect.title.content?,
1339 ((refcomponent.mix+, refsect2*) | refsect2+)
1340 }
1341# end of refsynopsisdiv.element
1342refsynopsisdiv.attlist &=
1343 common.attrib, refsynopsisdiv.role.attrib, local.refsynopsisdiv.attrib
1344# end of refsynopsisdiv.attlist
1345
1346# end of refsynopsisdiv.module
1347local.refsection.attrib = empty
1348refsection.role.attrib = role.attrib
1349refsection =
1350 element refsection {
1351 refsection.attlist,
1352 refsectioninfo?,
1353 refsect.title.content,
1354 ((refcomponent.mix+, refsection*) | refsection+)
1355 }
1356# end of refsection.element
1357refsection.attlist &=
1358 status.attrib,
1359 common.attrib,
1360 refsection.role.attrib,
1361 local.refsection.attrib
1362# end of refsection.attlist
1363
1364# end of refsection.module
1365local.refsect1.attrib = empty
1366refsect1.role.attrib = role.attrib
1367refsect1 =
1368 element refsect1 {
1369 refsect1.attlist,
1370 refsect1info?,
1371 refsect.title.content,
1372 ((refcomponent.mix+, refsect2*) | refsect2+)
1373 }
1374# end of refsect1.element
1375refsect1.attlist &=
1376 status.attrib,
1377 common.attrib,
1378 refsect1.role.attrib,
1379 local.refsect1.attrib
1380# end of refsect1.attlist
1381
1382# end of refsect1.module
1383local.refsect2.attrib = empty
1384refsect2.role.attrib = role.attrib
1385refsect2 =
1386 element refsect2 {
1387 refsect2.attlist,
1388 refsect2info?,
1389 refsect.title.content,
1390 ((refcomponent.mix+, refsect3*) | refsect3+)
1391 }
1392# end of refsect2.element
1393refsect2.attlist &=
1394 status.attrib,
1395 common.attrib,
1396 refsect2.role.attrib,
1397 local.refsect2.attrib
1398# end of refsect2.attlist
1399
1400# end of refsect2.module
1401local.refsect3.attrib = empty
1402refsect3.role.attrib = role.attrib
1403refsect3 =
1404 element refsect3 {
1405 refsect3.attlist,
1406 refsect3info?,
1407 refsect.title.content,
1408 refcomponent.mix+
1409 }
1410# end of refsect3.element
1411refsect3.attlist &=
1412 status.attrib,
1413 common.attrib,
1414 refsect3.role.attrib,
1415 local.refsect3.attrib
1416# end of refsect3.attlist
1417
1418# end of refsect3.module
1419
1420# end of refentry.content.module
1421
1422# ......................................................................
1423
1424# Article ..............................................................
1425
1426# An Article is a chapter-level, stand-alone document that is often,
1427# but need not be, collected into a Book.
1428local.article.attrib = empty
1429article.role.attrib = role.attrib
1430article =
1431 element article {
1432 article.attlist,
1433 div.title.content?,
1434 articleinfo?,
1435 tocchap?,
1436 lot*,
1437 bookcomponent.content,
1438 (nav.class | appendix.class | ackno)*
1439 }
1440# end of article.element
1441
1442# Class: Indicates the type of a particular article;
1443# all articles have the same structure and general purpose.
1444# No default.
1445
1446# ParentBook: ID of the enclosing Book
1447article.attlist &=
1448 attribute class {
1449 "journalarticle"
1450 | "productsheet"
1451 | "whitepaper"
1452 | "techreport"
1453 | "specification"
1454 | "faq"
1455 }?,
1456 attribute parentbook { xsd:IDREF }?,
1457 status.attrib,
1458 common.attrib,
1459 article.role.attrib,
1460 local.article.attrib
1461# end of article.attlist
1462
1463# end of article.module
1464
1465# End of DocBook document hierarchy module V4.2 ........................
1466
1467# ......................................................................
diff --git a/etc/schema/dbnotn.rnc b/etc/schema/dbnotn.rnc
new file mode 100644
index 00000000000..2a6185f27fd
--- /dev/null
+++ b/etc/schema/dbnotn.rnc
@@ -0,0 +1,84 @@
1# ......................................................................
2
3# DocBook notations module V4.2 ........................................
4
5# File dbnotnx.mod .....................................................
6
7# Copyright 1992-2002 HaL Computer Systems, Inc.,
8# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
9# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
10# Organization for the Advancement of Structured Information
11# Standards (OASIS).
12#
13# $Id: dbnotn.rnc,v 1.1 2003/08/30 04:19:27 jjc Exp $
14#
15# Permission to use, copy, modify and distribute the DocBook DTD
16# and its accompanying documentation for any purpose and without fee
17# is hereby granted in perpetuity, provided that the above copyright
18# notice and this paragraph appear in all copies. The copyright
19# holders make no representation about the suitability of the DTD for
20# any purpose. It is provided "as is" without expressed or implied
21# warranty.
22#
23# If you modify the DocBook DTD in any way, except for declaring and
24# referencing additional sets of general entities and declaring
25# additional notations, label your DTD as a variant of DocBook. See
26# the maintenance documentation for more information.
27#
28# Please direct all questions, bug reports, or suggestions for
29# changes to the docbook@lists.oasis-open.org mailing list. For more
30# information, see http://www.oasis-open.org/docbook/.
31
32# ......................................................................
33
34# This module contains the entity declarations for the standard ISO
35# entity sets used by DocBook.
36#
37# In DTD driver files referring to this module, please use an entity
38# declaration that uses the public identifier shown below:
39#
40# <!ENTITY % dbnotn PUBLIC
41# "-//OASIS//ENTITIES DocBook Notations V4.2//EN"
42# "dbnotnx.mod">
43# %dbnotn;
44#
45# See the documentation for detailed information on the parameter
46# entity and module scheme used in DocBook, customizing DocBook and
47# planning for interchange, and changes made since the last release
48# of DocBook.
49
50local.notation.class = notAllowed
51notation.class =
52 "BMP"
53 | "CGM-CHAR"
54 | "CGM-BINARY"
55 | "CGM-CLEAR"
56 | "DITROFF"
57 | "DVI"
58 | "EPS"
59 | "EQN"
60 | "FAX"
61 | "GIF"
62 | "GIF87a"
63 | "GIF89a"
64 | "JPG"
65 | "JPEG"
66 | "IGES"
67 | "PCX"
68 | "PIC"
69 | "PNG"
70 | "PS"
71 | "SGML"
72 | "TBL"
73 | "TEX"
74 | "TIFF"
75 | "WMF"
76 | "WPG"
77 | "SVG"
78 | "linespecific"
79 | local.notation.class
80# WordPerfect Graphic format
81
82# End of DocBook notations module V4.2 .................................
83
84# ......................................................................
diff --git a/etc/schema/dbpool.rnc b/etc/schema/dbpool.rnc
new file mode 100644
index 00000000000..46236eb7b7b
--- /dev/null
+++ b/etc/schema/dbpool.rnc
@@ -0,0 +1,5083 @@
1# This file was generated automatically by Trang. The table model
2# dependent definitions have been moved into separate files.
3
4# ......................................................................
5
6# DocBook XML information pool module V4.2 .............................
7
8# File dbpoolx.mod .....................................................
9
10# Copyright 1992-2002 HaL Computer Systems, Inc.,
11# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
12# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
13# Organization for the Advancement of Structured Information
14# Standards (OASIS).
15#
16# $Id: dbpool.rnc,v 1.4 2003/08/30 07:48:31 jjc Exp $
17#
18# Permission to use, copy, modify and distribute the DocBook XML DTD
19# and its accompanying documentation for any purpose and without fee
20# is hereby granted in perpetuity, provided that the above copyright
21# notice and this paragraph appear in all copies. The copyright
22# holders make no representation about the suitability of the DTD for
23# any purpose. It is provided "as is" without expressed or implied
24# warranty.
25#
26# If you modify the DocBook XML DTD in any way, except for declaring and
27# referencing additional sets of general entities and declaring
28# additional notations, label your DTD as a variant of DocBook. See
29# the maintenance documentation for more information.
30#
31# Please direct all questions, bug reports, or suggestions for
32# changes to the docbook@lists.oasis-open.org mailing list. For more
33# information, see http://www.oasis-open.org/docbook/.
34
35# ......................................................................
36
37# This module contains the definitions for the objects, inline
38# elements, and so on that are available to be used as the main
39# content of DocBook documents. Some elements are useful for general
40# publishing, and others are useful specifically for computer
41# documentation.
42#
43# This module has the following dependencies on other modules:
44#
45# o It assumes that a %notation.class; entity is defined by the
46# driver file or other high-level module. This entity is
47# referenced in the NOTATION attributes for the graphic-related and
48# ModeSpec elements.
49#
50# o It assumes that an appropriately parameterized table module is
51# available for use with the table-related elements.
52#
53# In DTD driver files referring to this module, please use an entity
54# declaration that uses the public identifier shown below:
55#
56# <!ENTITY % dbpool PUBLIC
57# "-//OASIS//ELEMENTS DocBook XML Information Pool V4.2//EN"
58# "dbpoolx.mod">
59# %dbpool;
60#
61# See the documentation for detailed information on the parameter
62# entity and module scheme used in DocBook, customizing DocBook and
63# planning for interchange, and changes made since the last release
64# of DocBook.
65
66# ......................................................................
67
68# General-purpose semantics entities ...................................
69
70namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
71
72yesorno.attvals = string
73# ......................................................................
74
75# Entities for module inclusions .......................................
76
77# ......................................................................
78
79# Entities for element classes and mixtures ............................
80
81# "Ubiquitous" classes: ndxterm.class and beginpage
82local.ndxterm.class = notAllowed
83ndxterm.class = indexterm | local.ndxterm.class
84# Object-level classes .................................................
85local.list.class = notAllowed
86list.class =
87 calloutlist
88 | glosslist
89 | itemizedlist
90 | orderedlist
91 | segmentedlist
92 | simplelist
93 | variablelist
94 | local.list.class
95local.admon.class = notAllowed
96admon.class =
97 caution | important | note | tip | warning | local.admon.class
98local.linespecific.class = notAllowed
99linespecific.class =
100 literallayout
101 | programlisting
102 | programlistingco
103 | screen
104 | screenco
105 | screenshot
106 | local.linespecific.class
107local.method.synop.class = notAllowed
108method.synop.class =
109 constructorsynopsis
110 | destructorsynopsis
111 | methodsynopsis
112 | local.method.synop.class
113local.synop.class = notAllowed
114synop.class =
115 synopsis
116 | cmdsynopsis
117 | funcsynopsis
118 | classsynopsis
119 | fieldsynopsis
120 | method.synop.class
121 | local.synop.class
122local.para.class = notAllowed
123para.class = formalpara | para | simpara | local.para.class
124local.informal.class = notAllowed
125informal.class =
126 address
127 | blockquote
128 | graphic
129 | graphicco
130 | mediaobject
131 | mediaobjectco
132 | informalequation
133 | informalexample
134 | informalfigure
135 | informaltable
136 | local.informal.class
137local.formal.class = notAllowed
138formal.class = equation | example | figure | table | local.formal.class
139# The DocBook TC may produce an official EBNF module for DocBook.
140
141# This PE provides the hook by which it can be inserted into the DTD.
142ebnf.block.hook = notAllowed
143local.compound.class = notAllowed
144compound.class =
145 msgset
146 | procedure
147 | sidebar
148 | qandaset
149 | ebnf.block.hook
150 | local.compound.class
151local.genobj.class = notAllowed
152genobj.class =
153 anchor | bridgehead | remark | highlights | local.genobj.class
154local.descobj.class = notAllowed
155descobj.class = abstract | authorblurb | epigraph | local.descobj.class
156# Character-level classes ..............................................
157local.xref.char.class = notAllowed
158xref.char.class = footnoteref | xref | local.xref.char.class
159local.gen.char.class = notAllowed
160gen.char.class =
161 abbrev
162 | acronym
163 | citation
164 | citerefentry
165 | citetitle
166 | emphasis
167 | firstterm
168 | foreignphrase
169 | glossterm
170 | footnote
171 | phrase
172 | quote
173 | trademark
174 | wordasword
175 | personname
176 | local.gen.char.class
177local.link.char.class = notAllowed
178link.char.class = link | olink | ulink | local.link.char.class
179# The DocBook TC may produce an official EBNF module for DocBook.
180
181# This PE provides the hook by which it can be inserted into the DTD.
182ebnf.inline.hook = notAllowed
183local.tech.char.class = notAllowed
184tech.char.class =
185 action
186 | application
187 | classname
188 | methodname
189 | interfacename
190 | exceptionname
191 | ooclass
192 | oointerface
193 | ooexception
194 | command
195 | computeroutput
196 | database
197 | email
198 | envar
199 | errorcode
200 | errorname
201 | errortype
202 | errortext
203 | filename
204 | function
205 | guibutton
206 | guiicon
207 | guilabel
208 | guimenu
209 | guimenuitem
210 | guisubmenu
211 | hardware
212 | interface
213 | keycap
214 | keycode
215 | keycombo
216 | keysym
217 | literal
218 | constant
219 | markup
220 | medialabel
221 | menuchoice
222 | mousebutton
223 | option
224 | optional
225 | parameter
226 | prompt
227 | property
228 | replaceable
229 | returnvalue
230 | sgmltag
231 | structfield
232 | structname
233 | symbol
234 | systemitem
235 | \token
236 | type
237 | userinput
238 | varname
239 | ebnf.inline.hook
240 | local.tech.char.class
241local.base.char.class = notAllowed
242base.char.class = anchor | local.base.char.class
243local.docinfo.char.class = notAllowed
244docinfo.char.class =
245 author
246 | authorinitials
247 | corpauthor
248 | modespec
249 | othercredit
250 | productname
251 | productnumber
252 | revhistory
253 | local.docinfo.char.class
254local.other.char.class = notAllowed
255other.char.class =
256 remark | subscript | superscript | local.other.char.class
257local.inlineobj.char.class = notAllowed
258inlineobj.char.class =
259 inlinegraphic
260 | inlinemediaobject
261 | inlineequation
262 | local.inlineobj.char.class
263# ......................................................................
264
265# Entities for content models ..........................................
266formalobject.title.content = title, titleabbrev?
267# Redeclaration placeholder ............................................
268
269# For redeclaring entities that are declared after this point while
270# retaining their references to the entities that are declared before
271# this point
272
273# Object-level mixtures ................................................
274
275# list admn line synp para infm form cmpd gen desc
276# Component mixture X X X X X X X X X X
277# Sidebar mixture X X X X X X X a X
278# Footnote mixture X X X X X
279# Example mixture X X X X X
280# Highlights mixture X X X
281# Paragraph mixture X X X X
282# Admonition mixture X X X X X X b c
283# Figure mixture X X X
284# Table entry mixture X X X X d
285# Glossary def mixture X X X X X e
286# Legal notice mixture X X X X f
287#
288# a. Just Procedure; not Sidebar itself or MsgSet.
289# b. No MsgSet.
290# c. No Highlights.
291# d. Just Graphic; no other informal objects.
292# e. No Anchor, BridgeHead, or Highlights.
293# f. Just BlockQuote; no other informal objects.
294local.component.mix = notAllowed
295component.mix =
296 list.class
297 | admon.class
298 | linespecific.class
299 | synop.class
300 | para.class
301 | informal.class
302 | formal.class
303 | compound.class
304 | genobj.class
305 | descobj.class
306 | ndxterm.class
307 | beginpage
308 | local.component.mix
309local.sidebar.mix = notAllowed
310sidebar.mix =
311 list.class
312 | admon.class
313 | linespecific.class
314 | synop.class
315 | para.class
316 | informal.class
317 | formal.class
318 | procedure
319 | genobj.class
320 | ndxterm.class
321 | beginpage
322 | local.sidebar.mix
323local.qandaset.mix = notAllowed
324qandaset.mix =
325 list.class
326 | admon.class
327 | linespecific.class
328 | synop.class
329 | para.class
330 | informal.class
331 | formal.class
332 | procedure
333 | genobj.class
334 | ndxterm.class
335 | local.qandaset.mix
336local.revdescription.mix = notAllowed
337revdescription.mix =
338 list.class
339 | admon.class
340 | linespecific.class
341 | synop.class
342 | para.class
343 | informal.class
344 | formal.class
345 | procedure
346 | genobj.class
347 | ndxterm.class
348 | local.revdescription.mix
349local.footnote.mix = notAllowed
350footnote.mix =
351 list.class
352 | linespecific.class
353 | synop.class
354 | para.class
355 | informal.class
356 | local.footnote.mix
357local.example.mix = notAllowed
358example.mix =
359 list.class
360 | linespecific.class
361 | synop.class
362 | para.class
363 | informal.class
364 | ndxterm.class
365 | beginpage
366 | local.example.mix
367local.highlights.mix = notAllowed
368highlights.mix =
369 list.class
370 | admon.class
371 | para.class
372 | ndxterm.class
373 | local.highlights.mix
374# %formal.class; is explicitly excluded from many contexts in which
375# paragraphs are used
376local.para.mix = notAllowed
377para.mix =
378 list.class
379 | admon.class
380 | linespecific.class
381 | informal.class
382 | formal.class
383 | local.para.mix
384local.admon.mix = notAllowed
385admon.mix =
386 list.class
387 | linespecific.class
388 | synop.class
389 | para.class
390 | informal.class
391 | formal.class
392 | procedure
393 | sidebar
394 | anchor
395 | bridgehead
396 | remark
397 | ndxterm.class
398 | beginpage
399 | local.admon.mix
400local.figure.mix = notAllowed
401figure.mix =
402 linespecific.class
403 | synop.class
404 | informal.class
405 | ndxterm.class
406 | beginpage
407 | local.figure.mix
408local.tabentry.mix = notAllowed
409tabentry.mix =
410 list.class
411 | admon.class
412 | linespecific.class
413 | para.class
414 | graphic
415 | mediaobject
416 | local.tabentry.mix
417local.glossdef.mix = notAllowed
418glossdef.mix =
419 list.class
420 | linespecific.class
421 | synop.class
422 | para.class
423 | informal.class
424 | formal.class
425 | remark
426 | ndxterm.class
427 | beginpage
428 | local.glossdef.mix
429local.legalnotice.mix = notAllowed
430legalnotice.mix =
431 list.class
432 | admon.class
433 | linespecific.class
434 | para.class
435 | blockquote
436 | ndxterm.class
437 | beginpage
438 | local.legalnotice.mix
439local.textobject.mix = notAllowed
440textobject.mix =
441 list.class
442 | admon.class
443 | linespecific.class
444 | para.class
445 | blockquote
446 | local.textobject.mix
447local.mediaobject.mix = notAllowed
448mediaobject.mix =
449 videoobject
450 | audioobject
451 | imageobject
452 | textobject
453 | local.mediaobject.mix
454local.listpreamble.mix = notAllowed
455listpreamble.mix =
456 admon.class
457 | linespecific.class
458 | synop.class
459 | para.class
460 | informal.class
461 | genobj.class
462 | descobj.class
463 | ndxterm.class
464 | beginpage
465 | local.listpreamble.mix
466# Character-level mixtures .............................................
467
468# sgml.features
469
470# not [sgml.features[
471
472# ]] not sgml.features
473
474# #PCD xref word link cptr base dnfo othr inob (synop)
475# para.char.mix X X X X X X X X X
476# title.char.mix X X X X X X X X X
477# ndxterm.char.mix X X X X X X X X a
478# cptr.char.mix X X X X X a
479# smallcptr.char.mix X b a
480# word.char.mix X c X X X a
481# docinfo.char.mix X d X b X a
482#
483# a. Just InlineGraphic; no InlineEquation.
484# b. Just Replaceable; no other computer terms.
485# c. Just Emphasis and Trademark; no other word elements.
486# d. Just Acronym, Emphasis, and Trademark; no other word elements.
487
488# The DocBook TC may produce an official forms module for DocBook.
489
490# This PE provides the hook by which it can be inserted into the DTD.
491forminlines.hook = notAllowed
492local.para.char.mix = notAllowed
493para.char.mix =
494 text
495 | xref.char.class
496 | gen.char.class
497 | link.char.class
498 | tech.char.class
499 | base.char.class
500 | docinfo.char.class
501 | other.char.class
502 | inlineobj.char.class
503 | synop.class
504 | ndxterm.class
505 | beginpage
506 | forminlines.hook
507 | local.para.char.mix
508local.title.char.mix = notAllowed
509title.char.mix =
510 text
511 | xref.char.class
512 | gen.char.class
513 | link.char.class
514 | tech.char.class
515 | base.char.class
516 | docinfo.char.class
517 | other.char.class
518 | inlineobj.char.class
519 | ndxterm.class
520 | local.title.char.mix
521local.ndxterm.char.mix = notAllowed
522ndxterm.char.mix =
523 text
524 | xref.char.class
525 | gen.char.class
526 | link.char.class
527 | tech.char.class
528 | base.char.class
529 | docinfo.char.class
530 | other.char.class
531 | inlinegraphic
532 | inlinemediaobject
533 | local.ndxterm.char.mix
534local.cptr.char.mix = notAllowed
535cptr.char.mix =
536 text
537 | link.char.class
538 | tech.char.class
539 | base.char.class
540 | other.char.class
541 | inlinegraphic
542 | inlinemediaobject
543 | ndxterm.class
544 | beginpage
545 | local.cptr.char.mix
546local.smallcptr.char.mix = notAllowed
547smallcptr.char.mix =
548 text
549 | replaceable
550 | inlinegraphic
551 | inlinemediaobject
552 | ndxterm.class
553 | beginpage
554 | local.smallcptr.char.mix
555local.word.char.mix = notAllowed
556word.char.mix =
557 text
558 | acronym
559 | emphasis
560 | trademark
561 | link.char.class
562 | base.char.class
563 | other.char.class
564 | inlinegraphic
565 | inlinemediaobject
566 | ndxterm.class
567 | beginpage
568 | local.word.char.mix
569local.docinfo.char.mix = notAllowed
570docinfo.char.mix =
571 text
572 | link.char.class
573 | emphasis
574 | trademark
575 | replaceable
576 | other.char.class
577 | inlinegraphic
578 | inlinemediaobject
579 | ndxterm.class
580 | local.docinfo.char.mix
581# ENTITY % bibliocomponent.mix (see Bibliographic section, below)
582
583# ENTITY % person.ident.mix (see Bibliographic section, below)
584
585# ......................................................................
586
587# Entities for attributes and attribute components .....................
588
589# Effectivity attributes ...............................................
590
591# Arch: Computer or chip architecture to which element applies; no
592# default
593arch.attrib = attribute arch { text }?
594# Condition: General-purpose effectivity attribute
595condition.attrib = attribute condition { text }?
596# Conformance: Standards conformance characteristics
597conformance.attrib = attribute conformance { xsd:NMTOKENS }?
598# OS: Operating system to which element applies; no default
599os.attrib = attribute os { text }?
600# Revision: Editorial revision to which element belongs; no default
601revision.attrib = attribute revision { text }?
602# Security: Security classification; no default
603security.attrib = attribute security { text }?
604# UserLevel: Level of user experience to which element applies; no
605# default
606userlevel.attrib = attribute userlevel { text }?
607# Vendor: Computer vendor to which element applies; no default
608vendor.attrib = attribute vendor { text }?
609local.effectivity.attrib = empty
610effectivity.attrib =
611 arch.attrib,
612 condition.attrib,
613 conformance.attrib,
614 os.attrib,
615 revision.attrib,
616 security.attrib,
617 userlevel.attrib,
618 vendor.attrib,
619 local.effectivity.attrib
620# Common attributes ....................................................
621
622# Id: Unique identifier of element; no default
623id.attrib = attribute id { xsd:ID }?
624# Id: Unique identifier of element; a value must be supplied; no
625# default
626idreq.attrib = attribute id { xsd:ID }
627# Lang: Indicator of language in which element is written, for
628# translation, character set management, etc.; no default
629lang.attrib = attribute lang { text }?
630# Remap: Previous role of element before conversion; no default
631remap.attrib = attribute remap { text }?
632# Role: New role of element in local environment; no default
633role.attrib = attribute role { text }?
634# XRefLabel: Alternate labeling string for XRef text generation;
635# default is usually title or other appropriate label text already
636# contained in element
637xreflabel.attrib = attribute xreflabel { text }?
638# RevisionFlag: Revision status of element; default is that element
639# wasn't revised
640revisionflag.attrib =
641 attribute revisionflag { "changed" | "added" | "deleted" | "off" }?
642local.common.attrib = empty
643# Role is included explicitly on each element
644common.attrib =
645 id.attrib,
646 lang.attrib,
647 remap.attrib,
648 xreflabel.attrib,
649 revisionflag.attrib,
650 effectivity.attrib,
651 local.common.attrib
652# Role is included explicitly on each element
653idreq.common.attrib =
654 idreq.attrib,
655 lang.attrib,
656 remap.attrib,
657 xreflabel.attrib,
658 revisionflag.attrib,
659 effectivity.attrib,
660 local.common.attrib
661# Semi-common attributes and other attribute entities ..................
662local.graphics.attrib = empty
663# EntityRef: Name of an external entity containing the content
664# of the graphic
665
666# FileRef: Filename, qualified by a pathname if desired,
667# designating the file containing the content of the graphic
668
669# Format: Notation of the element content, if any
670
671# SrcCredit: Information about the source of the Graphic
672
673# Width: Same as CALS reprowid (desired width)
674
675# Depth: Same as CALS reprodep (desired depth)
676
677# Align: Same as CALS hplace with 'none' removed; #IMPLIED means
678# application-specific
679
680# Scale: Conflation of CALS hscale and vscale
681
682# Scalefit: Same as CALS scalefit
683graphics.attrib =
684 attribute entityref { xsd:ENTITY }?,
685 attribute fileref { text }?,
686 attribute format { notation.class }?,
687 attribute srccredit { text }?,
688 attribute width { text }?,
689 attribute contentwidth { text }?,
690 attribute depth { text }?,
691 attribute contentdepth { text }?,
692 attribute align { "left" | "right" | "center" }?,
693 attribute valign { "top" | "middle" | "bottom" }?,
694 attribute scale { text }?,
695 attribute scalefit { yesorno.attvals }?,
696 local.graphics.attrib
697local.keyaction.attrib = empty
698# Action: Key combination type; default is unspecified if one
699# child element, Simul if there is more than one; if value is
700# Other, the OtherAction attribute must have a nonempty value
701
702# OtherAction: User-defined key combination type
703keyaction.attrib =
704 attribute action {
705 "click" | "double-click" | "press" | "seq" | "simul" | "other"
706 }?,
707 attribute otheraction { text }?,
708 local.keyaction.attrib
709# Label: Identifying number or string; default is usually the
710# appropriate number or string autogenerated by a formatter
711label.attrib = attribute label { text }?
712# Format: whether element is assumed to contain significant white
713# space
714linespecific.attrib =
715 [ a:defaultValue = "linespecific" ]
716 attribute format { "linespecific" }?,
717 attribute linenumbering { "numbered" | "unnumbered" }?
718# Linkend: link to related information; no default
719linkend.attrib = attribute linkend { xsd:IDREF }?
720# Linkend: required link to related information
721linkendreq.attrib = attribute linkend { xsd:IDREF }
722# Linkends: link to one or more sets of related information; no
723# default
724linkends.attrib = attribute linkends { xsd:IDREFS }?
725local.mark.attrib = empty
726mark.attrib =
727 attribute mark { text }?,
728 local.mark.attrib
729# MoreInfo: whether element's content has an associated RefEntry
730moreinfo.attrib =
731 [ a:defaultValue = "none" ]
732 attribute moreinfo { "refentry" | "none" }?
733# Pagenum: number of page on which element appears; no default
734pagenum.attrib = attribute pagenum { text }?
735local.status.attrib = empty
736# Status: Editorial or publication status of the element
737# it applies to, such as "in review" or "approved for distribution"
738status.attrib =
739 attribute status { text }?,
740 local.status.attrib
741# Width: width of the longest line in the element to which it
742# pertains, in number of characters
743width.attrib = attribute width { text }?
744# ......................................................................
745
746# Title elements .......................................................
747local.title.attrib = empty
748title.role.attrib = role.attrib
749title = element title { title.attlist, title.char.mix* }
750# end of title.element
751title.attlist &=
752 pagenum.attrib, common.attrib, title.role.attrib, local.title.attrib
753# end of title.attlist
754
755# end of title.module
756local.titleabbrev.attrib = empty
757titleabbrev.role.attrib = role.attrib
758titleabbrev =
759 element titleabbrev { titleabbrev.attlist, title.char.mix* }
760# end of titleabbrev.element
761titleabbrev.attlist &=
762 common.attrib, titleabbrev.role.attrib, local.titleabbrev.attrib
763# end of titleabbrev.attlist
764
765# end of titleabbrev.module
766local.subtitle.attrib = empty
767subtitle.role.attrib = role.attrib
768subtitle = element subtitle { subtitle.attlist, title.char.mix* }
769# end of subtitle.element
770subtitle.attlist &=
771 common.attrib, subtitle.role.attrib, local.subtitle.attrib
772# end of subtitle.attlist
773
774# end of subtitle.module
775
776# ......................................................................
777
778# Bibliographic entities and elements ..................................
779
780# The bibliographic elements are typically used in the document
781# hierarchy. They do not appear in content models of information
782# pool elements. See also the document information elements,
783# below.
784local.person.ident.mix = notAllowed
785person.ident.mix =
786 honorific
787 | firstname
788 | surname
789 | lineage
790 | othername
791 | affiliation
792 | authorblurb
793 | contrib
794 | local.person.ident.mix
795local.bibliocomponent.mix = notAllowed
796bibliocomponent.mix =
797 abbrev
798 | abstract
799 | address
800 | artpagenums
801 | author
802 | authorgroup
803 | authorinitials
804 | bibliomisc
805 | biblioset
806 | collab
807 | confgroup
808 | contractnum
809 | contractsponsor
810 | copyright
811 | corpauthor
812 | corpname
813 | date
814 | edition
815 | editor
816 | invpartnumber
817 | isbn
818 | issn
819 | issuenum
820 | orgname
821 | biblioid
822 | citebiblioid
823 | bibliosource
824 | bibliorelation
825 | bibliocoverage
826 | othercredit
827 | pagenums
828 | printhistory
829 | productname
830 | productnumber
831 | pubdate
832 | publisher
833 | publishername
834 | pubsnumber
835 | releaseinfo
836 | revhistory
837 | seriesvolnums
838 | subtitle
839 | title
840 | titleabbrev
841 | volumenum
842 | citetitle
843 | personname
844 | person.ident.mix
845 | ndxterm.class
846 | local.bibliocomponent.mix
847# I don't think this is well placed, but it needs to be here because of
848
849# the reference to bibliocomponent.mix
850local.info.class = notAllowed
851info.class =
852 graphic
853 | mediaobject
854 | legalnotice
855 | modespec
856 | subjectset
857 | keywordset
858 | itermset
859 | bibliocomponent.mix
860 | local.info.class
861local.biblioentry.attrib = empty
862biblioentry.role.attrib = role.attrib
863biblioentry =
864 element biblioentry {
865 biblioentry.attlist, (articleinfo | bibliocomponent.mix)+
866 }
867# end of biblioentry.element
868biblioentry.attlist &=
869 common.attrib, biblioentry.role.attrib, local.biblioentry.attrib
870# end of biblioentry.attlist
871
872# end of biblioentry.module
873local.bibliomixed.attrib = empty
874bibliomixed.role.attrib = role.attrib
875bibliomixed =
876 element bibliomixed {
877 bibliomixed.attlist, (text | bibliocomponent.mix | bibliomset)*
878 }
879# end of bibliomixed.element
880bibliomixed.attlist &=
881 common.attrib, bibliomixed.role.attrib, local.bibliomixed.attrib
882# end of bibliomixed.attlist
883
884# end of bibliomixed.module
885local.articleinfo.attrib = empty
886articleinfo.role.attrib = role.attrib
887articleinfo = element articleinfo { articleinfo.attlist, info.class+ }
888# end of articleinfo.element
889articleinfo.attlist &=
890 common.attrib, articleinfo.role.attrib, local.articleinfo.attrib
891# end of articleinfo.attlist
892
893# end of articleinfo.module
894local.biblioset.attrib = empty
895biblioset.role.attrib = role.attrib
896biblioset =
897 element biblioset { biblioset.attlist, bibliocomponent.mix+ }
898# end of biblioset.element
899
900# Relation: Relationship of elements contained within BiblioSet
901biblioset.attlist &=
902 attribute relation { text }?,
903 common.attrib,
904 biblioset.role.attrib,
905 local.biblioset.attrib
906# end of biblioset.attlist
907
908# end of biblioset.module
909bibliomset.role.attrib = role.attrib
910local.bibliomset.attrib = empty
911bibliomset =
912 element bibliomset {
913 bibliomset.attlist, (text | bibliocomponent.mix | bibliomset)*
914 }
915# end of bibliomset.element
916
917# Relation: Relationship of elements contained within BiblioMSet
918bibliomset.attlist &=
919 attribute relation { text }?,
920 common.attrib,
921 bibliomset.role.attrib,
922 local.bibliomset.attrib
923# end of bibliomset.attlist
924
925# end of bibliomset.module
926local.bibliomisc.attrib = empty
927bibliomisc.role.attrib = role.attrib
928bibliomisc = element bibliomisc { bibliomisc.attlist, para.char.mix* }
929# end of bibliomisc.element
930bibliomisc.attlist &=
931 common.attrib, bibliomisc.role.attrib, local.bibliomisc.attrib
932# end of bibliomisc.attlist
933
934# end of bibliomisc.module
935
936# ......................................................................
937
938# Subject, Keyword, and ITermSet elements ..............................
939local.subjectset.attrib = empty
940subjectset.role.attrib = role.attrib
941subjectset = element subjectset { subjectset.attlist, subject+ }
942# end of subjectset.element
943
944# Scheme: Controlled vocabulary employed in SubjectTerms
945subjectset.attlist &=
946 attribute scheme { xsd:NMTOKEN }?,
947 common.attrib,
948 subjectset.role.attrib,
949 local.subjectset.attrib
950# end of subjectset.attlist
951
952# end of subjectset.module
953local.subject.attrib = empty
954subject.role.attrib = role.attrib
955subject = element subject { subject.attlist, subjectterm+ }
956# end of subject.element
957
958# Weight: Ranking of this group of SubjectTerms relative
959# to others, 0 is low, no highest value specified
960subject.attlist &=
961 attribute weight { text }?,
962 common.attrib,
963 subject.role.attrib,
964 local.subject.attrib
965# end of subject.attlist
966
967# end of subject.module
968local.subjectterm.attrib = empty
969subjectterm.role.attrib = role.attrib
970subjectterm = element subjectterm { subjectterm.attlist, text }
971# end of subjectterm.element
972subjectterm.attlist &=
973 common.attrib, subjectterm.role.attrib, local.subjectterm.attrib
974# end of subjectterm.attlist
975
976# end of subjectterm.module
977
978# end of subjectset.content.module
979local.keywordset.attrib = empty
980keywordset.role.attrib = role.attrib
981keywordset = element keywordset { keywordset.attlist, keyword+ }
982# end of keywordset.element
983keywordset.attlist &=
984 common.attrib, keywordset.role.attrib, local.keywordset.attrib
985# end of keywordset.attlist
986
987# end of keywordset.module
988local.keyword.attrib = empty
989keyword.role.attrib = role.attrib
990keyword = element keyword { keyword.attlist, text }
991# end of keyword.element
992keyword.attlist &=
993 common.attrib, keyword.role.attrib, local.keyword.attrib
994# end of keyword.attlist
995
996# end of keyword.module
997
998# end of keywordset.content.module
999local.itermset.attrib = empty
1000itermset.role.attrib = role.attrib
1001itermset = element itermset { itermset.attlist, indexterm+ }
1002# end of itermset.element
1003itermset.attlist &=
1004 common.attrib, itermset.role.attrib, local.itermset.attrib
1005# end of itermset.attlist
1006
1007# end of itermset.module
1008
1009# Bibliographic info for "blocks"
1010local.blockinfo.attrib = empty
1011blockinfo.role.attrib = role.attrib
1012blockinfo = element blockinfo { blockinfo.attlist, info.class+ }
1013# end of blockinfo.element
1014blockinfo.attlist &=
1015 common.attrib, blockinfo.role.attrib, local.blockinfo.attrib
1016# end of blockinfo.attlist
1017
1018# end of blockinfo.module
1019
1020# ......................................................................
1021
1022# Compound (section-ish) elements ......................................
1023
1024# Message set ......................
1025local.msgset.attrib = empty
1026msgset.role.attrib = role.attrib
1027msgset =
1028 element msgset {
1029 msgset.attlist,
1030 blockinfo?,
1031 formalobject.title.content?,
1032 (msgentry+ | simplemsgentry+)
1033 }
1034# end of msgset.element
1035msgset.attlist &= common.attrib, msgset.role.attrib, local.msgset.attrib
1036# end of msgset.attlist
1037
1038# end of msgset.module
1039local.msgentry.attrib = empty
1040msgentry.role.attrib = role.attrib
1041msgentry =
1042 element msgentry { msgentry.attlist, msg+, msginfo?, msgexplan* }
1043# end of msgentry.element
1044msgentry.attlist &=
1045 common.attrib, msgentry.role.attrib, local.msgentry.attrib
1046# end of msgentry.attlist
1047
1048# end of msgentry.module
1049local.simplemsgentry.attrib = empty
1050simplemsgentry.role.attrib = role.attrib
1051simplemsgentry =
1052 element simplemsgentry { simplemsgentry.attlist, msgtext, msgexplan+ }
1053# end of simplemsgentry.element
1054simplemsgentry.attlist &=
1055 attribute audience { text }?,
1056 attribute level { text }?,
1057 attribute origin { text }?,
1058 common.attrib,
1059 simplemsgentry.role.attrib,
1060 local.simplemsgentry.attrib
1061# end of simplemsgentry.attlist
1062
1063# end of simplemsgentry.module
1064local.msg.attrib = empty
1065msg.role.attrib = role.attrib
1066msg = element msg { msg.attlist, title?, msgmain, (msgsub | msgrel)* }
1067# end of msg.element
1068msg.attlist &= common.attrib, msg.role.attrib, local.msg.attrib
1069# end of msg.attlist
1070
1071# end of msg.module
1072local.msgmain.attrib = empty
1073msgmain.role.attrib = role.attrib
1074msgmain = element msgmain { msgmain.attlist, title?, msgtext }
1075# end of msgmain.element
1076msgmain.attlist &=
1077 common.attrib, msgmain.role.attrib, local.msgmain.attrib
1078# end of msgmain.attlist
1079
1080# end of msgmain.module
1081local.msgsub.attrib = empty
1082msgsub.role.attrib = role.attrib
1083msgsub = element msgsub { msgsub.attlist, title?, msgtext }
1084# end of msgsub.element
1085msgsub.attlist &= common.attrib, msgsub.role.attrib, local.msgsub.attrib
1086# end of msgsub.attlist
1087
1088# end of msgsub.module
1089local.msgrel.attrib = empty
1090msgrel.role.attrib = role.attrib
1091msgrel = element msgrel { msgrel.attlist, title?, msgtext }
1092# end of msgrel.element
1093msgrel.attlist &= common.attrib, msgrel.role.attrib, local.msgrel.attrib
1094# end of msgrel.attlist
1095
1096# end of msgrel.module
1097
1098# MsgText (defined in the Inlines section, below)
1099local.msginfo.attrib = empty
1100msginfo.role.attrib = role.attrib
1101msginfo =
1102 element msginfo { msginfo.attlist, (msglevel | msgorig | msgaud)* }
1103# end of msginfo.element
1104msginfo.attlist &=
1105 common.attrib, msginfo.role.attrib, local.msginfo.attrib
1106# end of msginfo.attlist
1107
1108# end of msginfo.module
1109local.msglevel.attrib = empty
1110msglevel.role.attrib = role.attrib
1111msglevel = element msglevel { msglevel.attlist, smallcptr.char.mix* }
1112# end of msglevel.element
1113msglevel.attlist &=
1114 common.attrib, msglevel.role.attrib, local.msglevel.attrib
1115# end of msglevel.attlist
1116
1117# end of msglevel.module
1118local.msgorig.attrib = empty
1119msgorig.role.attrib = role.attrib
1120msgorig = element msgorig { msgorig.attlist, smallcptr.char.mix* }
1121# end of msgorig.element
1122msgorig.attlist &=
1123 common.attrib, msgorig.role.attrib, local.msgorig.attrib
1124# end of msgorig.attlist
1125
1126# end of msgorig.module
1127local.msgaud.attrib = empty
1128msgaud.role.attrib = role.attrib
1129msgaud = element msgaud { msgaud.attlist, para.char.mix* }
1130# end of msgaud.element
1131msgaud.attlist &= common.attrib, msgaud.role.attrib, local.msgaud.attrib
1132# end of msgaud.attlist
1133
1134# end of msgaud.module
1135local.msgexplan.attrib = empty
1136msgexplan.role.attrib = role.attrib
1137msgexplan =
1138 element msgexplan { msgexplan.attlist, title?, component.mix+ }
1139# end of msgexplan.element
1140msgexplan.attlist &=
1141 common.attrib, msgexplan.role.attrib, local.msgexplan.attrib
1142# end of msgexplan.attlist
1143
1144# end of msgexplan.module
1145
1146# end of msgset.content.module
1147
1148# QandASet ........................
1149local.qandaset.attrib = empty
1150qandaset.role.attrib = role.attrib
1151qandaset =
1152 element qandaset {
1153 qandaset.attlist,
1154 blockinfo?,
1155 formalobject.title.content?,
1156 qandaset.mix*,
1157 (qandadiv+ | qandaentry+)
1158 }
1159# end of qandaset.element
1160qandaset.attlist &=
1161 attribute defaultlabel { "qanda" | "number" | "none" }?,
1162 common.attrib,
1163 qandaset.role.attrib,
1164 local.qandaset.attrib
1165# end of qandaset.attlist
1166
1167# end of qandaset.module
1168local.qandadiv.attrib = empty
1169qandadiv.role.attrib = role.attrib
1170qandadiv =
1171 element qandadiv {
1172 qandadiv.attlist,
1173 blockinfo?,
1174 formalobject.title.content?,
1175 qandaset.mix*,
1176 (qandadiv+ | qandaentry+)
1177 }
1178# end of qandadiv.element
1179qandadiv.attlist &=
1180 common.attrib, qandadiv.role.attrib, local.qandadiv.attrib
1181# end of qandadiv.attlist
1182
1183# end of qandadiv.module
1184local.qandaentry.attrib = empty
1185qandaentry.role.attrib = role.attrib
1186qandaentry =
1187 element qandaentry {
1188 qandaentry.attlist, blockinfo?, revhistory?, question, answer*
1189 }
1190# end of qandaentry.element
1191qandaentry.attlist &=
1192 common.attrib, qandaentry.role.attrib, local.qandaentry.attrib
1193# end of qandaentry.attlist
1194
1195# end of qandaentry.module
1196local.question.attrib = empty
1197question.role.attrib = role.attrib
1198question = element question { question.attlist, label?, qandaset.mix+ }
1199# end of question.element
1200question.attlist &=
1201 common.attrib, question.role.attrib, local.question.attrib
1202# end of question.attlist
1203
1204# end of question.module
1205local.answer.attrib = empty
1206answer.role.attrib = role.attrib
1207answer =
1208 element answer { answer.attlist, label?, qandaset.mix*, qandaentry* }
1209# end of answer.element
1210answer.attlist &= common.attrib, answer.role.attrib, local.answer.attrib
1211# end of answer.attlist
1212
1213# end of answer.module
1214local.label.attrib = empty
1215label.role.attrib = role.attrib
1216label = element label { label.attlist, word.char.mix* }
1217# end of label.element
1218label.attlist &= common.attrib, label.role.attrib, local.label.attrib
1219# end of label.attlist
1220
1221# end of label.module
1222
1223# end of qandaset.content.module
1224
1225# Procedure ........................
1226local.procedure.attrib = empty
1227procedure.role.attrib = role.attrib
1228procedure =
1229 element procedure {
1230 procedure.attlist,
1231 blockinfo?,
1232 formalobject.title.content?,
1233 component.mix*,
1234 step+
1235 }
1236# end of procedure.element
1237procedure.attlist &=
1238 common.attrib, procedure.role.attrib, local.procedure.attrib
1239# end of procedure.attlist
1240
1241# end of procedure.module
1242local.step.attrib = empty
1243step.role.attrib = role.attrib
1244step =
1245 element step {
1246 step.attlist,
1247 title?,
1248 ((component.mix+, (substeps, component.mix*)?)
1249 | (substeps, component.mix*))
1250 }
1251# end of step.element
1252
1253# Performance: Whether the Step must be performed
1254
1255# not #REQUIRED!
1256step.attlist &=
1257 [ a:defaultValue = "required" ]
1258 attribute performance { "optional" | "required" }?,
1259 common.attrib,
1260 step.role.attrib,
1261 local.step.attrib
1262# end of step.attlist
1263
1264# end of step.module
1265local.substeps.attrib = empty
1266substeps.role.attrib = role.attrib
1267substeps = element substeps { substeps.attlist, step+ }
1268# end of substeps.element
1269
1270# Performance: whether entire set of substeps must be performed
1271
1272# not #REQUIRED!
1273substeps.attlist &=
1274 [ a:defaultValue = "required" ]
1275 attribute performance { "optional" | "required" }?,
1276 common.attrib,
1277 substeps.role.attrib,
1278 local.substeps.attrib
1279# end of substeps.attlist
1280
1281# end of substeps.module
1282
1283# end of procedure.content.module
1284
1285# Sidebar ..........................
1286local.sidebarinfo.attrib = empty
1287sidebarinfo.role.attrib = role.attrib
1288sidebarinfo = element sidebarinfo { sidebarinfo.attlist, info.class+ }
1289# end of sidebarinfo.element
1290sidebarinfo.attlist &=
1291 common.attrib, sidebarinfo.role.attrib, local.sidebarinfo.attrib
1292# end of sidebarinfo.attlist
1293
1294# end of sidebarinfo.module
1295local.sidebar.attrib = empty
1296sidebar.role.attrib = role.attrib
1297sidebar =
1298 element sidebar {
1299 sidebar.attlist,
1300 sidebarinfo?,
1301 formalobject.title.content?,
1302 sidebar.mix+
1303 }
1304# end of sidebar.element
1305sidebar.attlist &=
1306 common.attrib, sidebar.role.attrib, local.sidebar.attrib
1307# end of sidebar.attlist
1308
1309# end of sidebar.module
1310
1311# end of sidebar.content.model
1312
1313# ......................................................................
1314
1315# Paragraph-related elements ...........................................
1316local.abstract.attrib = empty
1317abstract.role.attrib = role.attrib
1318abstract = element abstract { abstract.attlist, title?, para.class+ }
1319# end of abstract.element
1320abstract.attlist &=
1321 common.attrib, abstract.role.attrib, local.abstract.attrib
1322# end of abstract.attlist
1323
1324# end of abstract.module
1325local.authorblurb.attrib = empty
1326authorblurb.role.attrib = role.attrib
1327authorblurb =
1328 element authorblurb { authorblurb.attlist, title?, para.class+ }
1329# end of authorblurb.element
1330authorblurb.attlist &=
1331 common.attrib, authorblurb.role.attrib, local.authorblurb.attrib
1332# end of authorblurb.attlist
1333
1334# end of authorblurb.module
1335local.personblurb.attrib = empty
1336personblurb.role.attrib = role.attrib
1337personblurb =
1338 element personblurb { personblurb.attlist, title?, para.class+ }
1339# end of personblurb.element
1340personblurb.attlist &=
1341 common.attrib, personblurb.role.attrib, local.personblurb.attrib
1342# end of personblurb.attlist
1343
1344# end of personblurb.module
1345local.blockquote.attrib = empty
1346blockquote.role.attrib = role.attrib
1347blockquote =
1348 element blockquote {
1349 blockquote.attlist, title?, attribution?, component.mix+
1350 }
1351# end of blockquote.element
1352blockquote.attlist &=
1353 common.attrib, blockquote.role.attrib, local.blockquote.attrib
1354# end of blockquote.attlist
1355
1356# end of blockquote.module
1357local.attribution.attrib = empty
1358attribution.role.attrib = role.attrib
1359attribution =
1360 element attribution { attribution.attlist, para.char.mix* }
1361# end of attribution.element
1362attribution.attlist &=
1363 common.attrib, attribution.role.attrib, local.attribution.attrib
1364# end of attribution.attlist
1365
1366# end of attribution.module
1367local.bridgehead.attrib = empty
1368bridgehead.role.attrib = role.attrib
1369bridgehead = element bridgehead { bridgehead.attlist, title.char.mix* }
1370# end of bridgehead.element
1371
1372# Renderas: Indicates the format in which the BridgeHead
1373# should appear
1374bridgehead.attlist &=
1375 attribute renderas {
1376 "other" | "sect1" | "sect2" | "sect3" | "sect4" | "sect5"
1377 }?,
1378 common.attrib,
1379 bridgehead.role.attrib,
1380 local.bridgehead.attrib
1381# end of bridgehead.attlist
1382
1383# end of bridgehead.module
1384local.remark.attrib = empty
1385remark.role.attrib = role.attrib
1386remark = element remark { remark.attlist, para.char.mix* }
1387# end of remark.element
1388remark.attlist &= common.attrib, remark.role.attrib, local.remark.attrib
1389# end of remark.attlist
1390
1391# end of remark.module
1392local.epigraph.attrib = empty
1393epigraph.role.attrib = role.attrib
1394epigraph =
1395 element epigraph {
1396 epigraph.attlist, attribution?, (para.class | literallayout)+
1397 }
1398# end of epigraph.element
1399epigraph.attlist &=
1400 common.attrib, epigraph.role.attrib, local.epigraph.attrib
1401# end of epigraph.attlist
1402
1403# Attribution (defined above)
1404
1405# end of epigraph.module
1406local.footnote.attrib = empty
1407footnote.role.attrib = role.attrib
1408footnote = element footnote { footnote.attlist, footnote.mix+ }
1409# end of footnote.element
1410footnote.attlist &=
1411 label.attrib,
1412 common.attrib,
1413 footnote.role.attrib,
1414 local.footnote.attrib
1415# end of footnote.attlist
1416
1417# end of footnote.module
1418local.highlights.attrib = empty
1419highlights.role.attrib = role.attrib
1420highlights = element highlights { highlights.attlist, highlights.mix+ }
1421# end of highlights.element
1422highlights.attlist &=
1423 common.attrib, highlights.role.attrib, local.highlights.attrib
1424# end of highlights.attlist
1425
1426# end of highlights.module
1427local.formalpara.attrib = empty
1428formalpara.role.attrib = role.attrib
1429formalpara =
1430 element formalpara { formalpara.attlist, title, ndxterm.class*, para }
1431# end of formalpara.element
1432formalpara.attlist &=
1433 common.attrib, formalpara.role.attrib, local.formalpara.attrib
1434# end of formalpara.attlist
1435
1436# end of formalpara.module
1437local.para.attrib = empty
1438para.role.attrib = role.attrib
1439para = element para { para.attlist, (para.char.mix | para.mix)* }
1440# end of para.element
1441para.attlist &= common.attrib, para.role.attrib, local.para.attrib
1442# end of para.attlist
1443
1444# end of para.module
1445local.simpara.attrib = empty
1446simpara.role.attrib = role.attrib
1447simpara = element simpara { simpara.attlist, para.char.mix* }
1448# end of simpara.element
1449simpara.attlist &=
1450 common.attrib, simpara.role.attrib, local.simpara.attrib
1451# end of simpara.attlist
1452
1453# end of simpara.module
1454local.admon.attrib = empty
1455admon.role.attrib = role.attrib
1456caution = element caution { caution.attlist, title?, admon.mix+ }
1457# end of caution.element
1458caution.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
1459# end of caution.attlist
1460important = element important { important.attlist, title?, admon.mix+ }
1461# end of important.element
1462important.attlist &=
1463 common.attrib, admon.role.attrib, local.admon.attrib
1464# end of important.attlist
1465note = element note { note.attlist, title?, admon.mix+ }
1466# end of note.element
1467note.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
1468# end of note.attlist
1469tip = element tip { tip.attlist, title?, admon.mix+ }
1470# end of tip.element
1471tip.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
1472# end of tip.attlist
1473warning = element warning { warning.attlist, title?, admon.mix+ }
1474# end of warning.element
1475warning.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
1476# end of warning.attlist
1477
1478# end of admon.module
1479
1480# ......................................................................
1481
1482# Lists ................................................................
1483
1484# GlossList ........................
1485local.glosslist.attrib = empty
1486glosslist.role.attrib = role.attrib
1487glosslist = element glosslist { glosslist.attlist, glossentry+ }
1488# end of glosslist.element
1489glosslist.attlist &=
1490 common.attrib, glosslist.role.attrib, local.glosslist.attrib
1491# end of glosslist.attlist
1492
1493# end of glosslist.module
1494local.glossentry.attrib = empty
1495glossentry.role.attrib = role.attrib
1496glossentry =
1497 element glossentry {
1498 glossentry.attlist,
1499 glossterm,
1500 acronym?,
1501 abbrev?,
1502 ndxterm.class*,
1503 revhistory?,
1504 (glosssee | glossdef+)
1505 }
1506# end of glossentry.element
1507
1508# SortAs: String by which the GlossEntry is to be sorted
1509# (alphabetized) in lieu of its proper content
1510glossentry.attlist &=
1511 attribute sortas { text }?,
1512 common.attrib,
1513 glossentry.role.attrib,
1514 local.glossentry.attrib
1515# end of glossentry.attlist
1516
1517# end of glossentry.module
1518
1519# GlossTerm (defined in the Inlines section, below)
1520local.glossdef.attrib = empty
1521glossdef.role.attrib = role.attrib
1522glossdef =
1523 element glossdef { glossdef.attlist, glossdef.mix+, glossseealso* }
1524# end of glossdef.element
1525
1526# Subject: List of subjects; keywords for the definition
1527glossdef.attlist &=
1528 attribute subject { text }?,
1529 common.attrib,
1530 glossdef.role.attrib,
1531 local.glossdef.attrib
1532# end of glossdef.attlist
1533
1534# end of glossdef.module
1535local.glosssee.attrib = empty
1536glosssee.role.attrib = role.attrib
1537glosssee = element glosssee { glosssee.attlist, para.char.mix* }
1538# end of glosssee.element
1539
1540# OtherTerm: Reference to the GlossEntry whose GlossTerm
1541# should be displayed at the point of the GlossSee
1542glosssee.attlist &=
1543 attribute otherterm { xsd:IDREF }?,
1544 common.attrib,
1545 glosssee.role.attrib,
1546 local.glosssee.attrib
1547# end of glosssee.attlist
1548
1549# end of glosssee.module
1550local.glossseealso.attrib = empty
1551glossseealso.role.attrib = role.attrib
1552glossseealso =
1553 element glossseealso { glossseealso.attlist, para.char.mix* }
1554# end of glossseealso.element
1555
1556# OtherTerm: Reference to the GlossEntry whose GlossTerm
1557# should be displayed at the point of the GlossSeeAlso
1558glossseealso.attlist &=
1559 attribute otherterm { xsd:IDREF }?,
1560 common.attrib,
1561 glossseealso.role.attrib,
1562 local.glossseealso.attrib
1563# end of glossseealso.attlist
1564
1565# end of glossseealso.module
1566
1567# end of glossentry.content.module
1568
1569# ItemizedList and OrderedList .....
1570local.itemizedlist.attrib = empty
1571itemizedlist.role.attrib = role.attrib
1572itemizedlist =
1573 element itemizedlist {
1574 itemizedlist.attlist,
1575 blockinfo?,
1576 formalobject.title.content?,
1577 listpreamble.mix*,
1578 listitem+
1579 }
1580# end of itemizedlist.element
1581
1582# Spacing: Whether the vertical space in the list should be
1583# compressed
1584
1585# Mark: Keyword, e.g., bullet, dash, checkbox, none;
1586# list of keywords and defaults are implementation specific
1587itemizedlist.attlist &=
1588 attribute spacing { "normal" | "compact" }?,
1589 mark.attrib,
1590 common.attrib,
1591 itemizedlist.role.attrib,
1592 local.itemizedlist.attrib
1593# end of itemizedlist.attlist
1594
1595# end of itemizedlist.module
1596local.orderedlist.attrib = empty
1597orderedlist.role.attrib = role.attrib
1598orderedlist =
1599 element orderedlist {
1600 orderedlist.attlist,
1601 blockinfo?,
1602 formalobject.title.content?,
1603 listpreamble.mix*,
1604 listitem+
1605 }
1606# end of orderedlist.element
1607
1608# Numeration: Style of ListItem numbered; default is expected
1609# to be Arabic
1610
1611# InheritNum: Specifies for a nested list that the numbering
1612# of ListItems should include the number of the item
1613# within which they are nested (e.g., 1a and 1b within 1,
1614# rather than a and b)
1615
1616# Continuation: Where list numbering begins afresh (Restarts,
1617# the default) or continues that of the immediately preceding
1618# list (Continues)
1619
1620# Spacing: Whether the vertical space in the list should be
1621# compressed
1622orderedlist.attlist &=
1623 attribute numeration {
1624 "arabic" | "upperalpha" | "loweralpha" | "upperroman" | "lowerroman"
1625 }?,
1626 [ a:defaultValue = "ignore" ]
1627 attribute inheritnum { "inherit" | "ignore" }?,
1628 [ a:defaultValue = "restarts" ]
1629 attribute continuation { "continues" | "restarts" }?,
1630 attribute spacing { "normal" | "compact" }?,
1631 common.attrib,
1632 orderedlist.role.attrib,
1633 local.orderedlist.attrib
1634# end of orderedlist.attlist
1635
1636# end of orderedlist.module
1637local.listitem.attrib = empty
1638listitem.role.attrib = role.attrib
1639listitem = element listitem { listitem.attlist, component.mix+ }
1640# end of listitem.element
1641
1642# Override: Indicates the mark to be used for this ListItem
1643# instead of the default mark or the mark specified by
1644# the Mark attribute on the enclosing ItemizedList
1645listitem.attlist &=
1646 attribute override { text }?,
1647 common.attrib,
1648 listitem.role.attrib,
1649 local.listitem.attrib
1650# end of listitem.attlist
1651
1652# end of listitem.module
1653
1654# SegmentedList ....................
1655local.segmentedlist.attrib = empty
1656segmentedlist.role.attrib = role.attrib
1657segmentedlist =
1658 element segmentedlist {
1659 segmentedlist.attlist,
1660 formalobject.title.content?,
1661 segtitle+,
1662 seglistitem+
1663 }
1664# end of segmentedlist.element
1665segmentedlist.attlist &=
1666 common.attrib, segmentedlist.role.attrib, local.segmentedlist.attrib
1667# end of segmentedlist.attlist
1668
1669# end of segmentedlist.module
1670local.segtitle.attrib = empty
1671segtitle.role.attrib = role.attrib
1672segtitle = element segtitle { segtitle.attlist, title.char.mix* }
1673# end of segtitle.element
1674segtitle.attlist &=
1675 common.attrib, segtitle.role.attrib, local.segtitle.attrib
1676# end of segtitle.attlist
1677
1678# end of segtitle.module
1679local.seglistitem.attrib = empty
1680seglistitem.role.attrib = role.attrib
1681seglistitem = element seglistitem { seglistitem.attlist, seg+ }
1682# end of seglistitem.element
1683seglistitem.attlist &=
1684 common.attrib, seglistitem.role.attrib, local.seglistitem.attrib
1685# end of seglistitem.attlist
1686
1687# end of seglistitem.module
1688local.seg.attrib = empty
1689seg.role.attrib = role.attrib
1690seg = element seg { seg.attlist, para.char.mix* }
1691# end of seg.element
1692seg.attlist &= common.attrib, seg.role.attrib, local.seg.attrib
1693# end of seg.attlist
1694
1695# end of seg.module
1696
1697# end of segmentedlist.content.module
1698
1699# SimpleList .......................
1700local.simplelist.attrib = empty
1701simplelist.role.attrib = role.attrib
1702simplelist = element simplelist { simplelist.attlist, member+ }
1703# end of simplelist.element
1704
1705# Columns: The number of columns the array should contain
1706
1707# Type: How the Members of the SimpleList should be
1708# formatted: Inline (members separated with commas etc.
1709# inline), Vert (top to bottom in n Columns), or Horiz (in
1710# the direction of text flow) in n Columns. If Column
1711# is 1 or implied, Type=Vert and Type=Horiz give the same
1712# results.
1713simplelist.attlist &=
1714 attribute columns { text }?,
1715 [ a:defaultValue = "vert" ]
1716 attribute type { "inline" | "vert" | "horiz" }?,
1717 common.attrib,
1718 simplelist.role.attrib,
1719 local.simplelist.attrib
1720# end of simplelist.attlist
1721
1722# end of simplelist.module
1723local.member.attrib = empty
1724member.role.attrib = role.attrib
1725member = element member { member.attlist, para.char.mix* }
1726# end of member.element
1727member.attlist &= common.attrib, member.role.attrib, local.member.attrib
1728# end of member.attlist
1729
1730# end of member.module
1731
1732# end of simplelist.content.module
1733
1734# VariableList .....................
1735local.variablelist.attrib = empty
1736variablelist.role.attrib = role.attrib
1737variablelist =
1738 element variablelist {
1739 variablelist.attlist,
1740 blockinfo?,
1741 formalobject.title.content?,
1742 listpreamble.mix*,
1743 varlistentry+
1744 }
1745# end of variablelist.element
1746
1747# TermLength: Length beyond which the presentation engine
1748# may consider the Term too long and select an alternate
1749# presentation of the Term and, or, its associated ListItem.
1750variablelist.attlist &=
1751 attribute termlength { text }?,
1752 common.attrib,
1753 variablelist.role.attrib,
1754 local.variablelist.attrib
1755# end of variablelist.attlist
1756
1757# end of variablelist.module
1758local.varlistentry.attrib = empty
1759varlistentry.role.attrib = role.attrib
1760varlistentry =
1761 element varlistentry { varlistentry.attlist, term+, listitem }
1762# end of varlistentry.element
1763varlistentry.attlist &=
1764 common.attrib, varlistentry.role.attrib, local.varlistentry.attrib
1765# end of varlistentry.attlist
1766
1767# end of varlistentry.module
1768local.term.attrib = empty
1769term.role.attrib = role.attrib
1770term = element term { term.attlist, para.char.mix* }
1771# end of term.element
1772term.attlist &= common.attrib, term.role.attrib, local.term.attrib
1773# end of term.attlist
1774
1775# end of term.module
1776
1777# ListItem (defined above)
1778
1779# end of variablelist.content.module
1780
1781# CalloutList ......................
1782local.calloutlist.attrib = empty
1783calloutlist.role.attrib = role.attrib
1784calloutlist =
1785 element calloutlist {
1786 calloutlist.attlist, formalobject.title.content?, callout+
1787 }
1788# end of calloutlist.element
1789calloutlist.attlist &=
1790 common.attrib, calloutlist.role.attrib, local.calloutlist.attrib
1791# end of calloutlist.attlist
1792
1793# end of calloutlist.module
1794local.callout.attrib = empty
1795callout.role.attrib = role.attrib
1796callout = element callout { callout.attlist, component.mix+ }
1797# end of callout.element
1798
1799# AreaRefs: IDs of one or more Areas or AreaSets described
1800# by this Callout
1801callout.attlist &=
1802 attribute arearefs { xsd:IDREFS },
1803 common.attrib,
1804 callout.role.attrib,
1805 local.callout.attrib
1806# end of callout.attlist
1807
1808# end of callout.module
1809
1810# end of calloutlist.content.module
1811
1812# ......................................................................
1813
1814# Objects ..............................................................
1815
1816# Examples etc. ....................
1817local.example.attrib = empty
1818example.role.attrib = role.attrib
1819example =
1820 element example {
1821 example.attlist,
1822 blockinfo?,
1823 formalobject.title.content,
1824 example.mix+
1825 }
1826# end of example.element
1827example.attlist &=
1828 label.attrib,
1829 width.attrib,
1830 common.attrib,
1831 example.role.attrib,
1832 local.example.attrib
1833# end of example.attlist
1834
1835# end of example.module
1836local.informalexample.attrib = empty
1837informalexample.role.attrib = role.attrib
1838informalexample =
1839 element informalexample {
1840 informalexample.attlist, blockinfo?, example.mix+
1841 }
1842# end of informalexample.element
1843informalexample.attlist &=
1844 width.attrib,
1845 common.attrib,
1846 informalexample.role.attrib,
1847 local.informalexample.attrib
1848# end of informalexample.attlist
1849
1850# end of informalexample.module
1851local.programlistingco.attrib = empty
1852programlistingco.role.attrib = role.attrib
1853programlistingco =
1854 element programlistingco {
1855 programlistingco.attlist, areaspec, programlisting, calloutlist*
1856 }
1857# end of programlistingco.element
1858programlistingco.attlist &=
1859 common.attrib,
1860 programlistingco.role.attrib,
1861 local.programlistingco.attrib
1862# end of programlistingco.attlist
1863
1864# CalloutList (defined above in Lists)
1865
1866# end of informalexample.module
1867local.areaspec.attrib = empty
1868areaspec.role.attrib = role.attrib
1869areaspec = element areaspec { areaspec.attlist, (area | areaset)+ }
1870# end of areaspec.element
1871
1872# Units: global unit of measure in which coordinates in
1873# this spec are expressed:
1874#
1875# - CALSPair "x1,y1 x2,y2": lower-left and upper-right
1876# coordinates in a rectangle describing repro area in which
1877# graphic is placed, where X and Y dimensions are each some
1878# number 0..10000 (taken from CALS graphic attributes)
1879#
1880# - LineColumn "line column": line number and column number
1881# at which to start callout text in "linespecific" content
1882#
1883# - LineRange "startline endline": whole lines from startline
1884# to endline in "linespecific" content
1885#
1886# - LineColumnPair "line1 col1 line2 col2": starting and ending
1887# points of area in "linespecific" content that starts at
1888# first position and ends at second position (including the
1889# beginnings of any intervening lines)
1890#
1891# - Other: directive to look at value of OtherUnits attribute
1892# to get implementation-specific keyword
1893#
1894# The default is implementation-specific; usually dependent on
1895# the parent element (GraphicCO gets CALSPair, ProgramListingCO
1896# and ScreenCO get LineColumn)
1897
1898# OtherUnits: User-defined units
1899areaspec.attlist &=
1900 attribute units {
1901 "calspair" | "linecolumn" | "linerange" | "linecolumnpair" | "other"
1902 }?,
1903 attribute otherunits { xsd:NMTOKEN }?,
1904 common.attrib,
1905 areaspec.role.attrib,
1906 local.areaspec.attrib
1907# end of areaspec.attlist
1908
1909# end of areaspec.module
1910local.area.attrib = empty
1911area.role.attrib = role.attrib
1912area = element area { area.attlist, empty }
1913# end of area.element
1914
1915# bug number/symbol override or initialization
1916
1917# to any related information
1918
1919# Units: unit of measure in which coordinates in this
1920# area are expressed; inherits from AreaSet and AreaSpec
1921
1922# OtherUnits: User-defined units
1923area.attlist &=
1924 label.attrib,
1925 linkends.attrib,
1926 attribute units {
1927 "calspair" | "linecolumn" | "linerange" | "linecolumnpair" | "other"
1928 }?,
1929 attribute otherunits { xsd:NMTOKEN }?,
1930 attribute coords { text },
1931 idreq.common.attrib,
1932 area.role.attrib,
1933 local.area.attrib
1934# end of area.attlist
1935
1936# end of area.module
1937local.areaset.attrib = empty
1938areaset.role.attrib = role.attrib
1939areaset = element areaset { areaset.attlist, area+ }
1940# end of areaset.element
1941
1942# bug number/symbol override or initialization
1943
1944# Units: unit of measure in which coordinates in this
1945# area are expressed; inherits from AreaSpec
1946areaset.attlist &=
1947 label.attrib,
1948 attribute units {
1949 "calspair" | "linecolumn" | "linerange" | "linecolumnpair" | "other"
1950 }?,
1951 attribute otherunits { xsd:NMTOKEN }?,
1952 attribute coords { text },
1953 idreq.common.attrib,
1954 areaset.role.attrib,
1955 local.areaset.attrib
1956# end of areaset.attlist
1957
1958# end of areaset.module
1959
1960# end of areaspec.content.module
1961local.programlisting.attrib = empty
1962programlisting.role.attrib = role.attrib
1963programlisting =
1964 element programlisting {
1965 programlisting.attlist,
1966 (para.char.mix | co | coref | lineannotation | textobject)*
1967 }
1968# end of programlisting.element
1969programlisting.attlist &=
1970 width.attrib,
1971 linespecific.attrib,
1972 common.attrib,
1973 programlisting.role.attrib,
1974 local.programlisting.attrib
1975# end of programlisting.attlist
1976
1977# end of programlisting.module
1978local.literallayout.attrib = empty
1979literallayout.role.attrib = role.attrib
1980literallayout =
1981 element literallayout {
1982 literallayout.attlist,
1983 (para.char.mix | co | coref | textobject | lineannotation)*
1984 }
1985# end of literallayout.element
1986literallayout.attlist &=
1987 width.attrib,
1988 linespecific.attrib,
1989 [ a:defaultValue = "normal" ]
1990 attribute class { "monospaced" | "normal" }?,
1991 common.attrib,
1992 literallayout.role.attrib,
1993 local.literallayout.attrib
1994# end of literallayout.attlist
1995
1996# LineAnnotation (defined in the Inlines section, below)
1997
1998# end of literallayout.module
1999local.screenco.attrib = empty
2000screenco.role.attrib = role.attrib
2001screenco =
2002 element screenco { screenco.attlist, areaspec, screen, calloutlist* }
2003# end of screenco.element
2004screenco.attlist &=
2005 common.attrib, screenco.role.attrib, local.screenco.attrib
2006# end of screenco.attlist
2007
2008# AreaSpec (defined above)
2009
2010# CalloutList (defined above in Lists)
2011
2012# end of screenco.module
2013local.screen.attrib = empty
2014screen.role.attrib = role.attrib
2015screen =
2016 element screen {
2017 screen.attlist,
2018 (para.char.mix | co | coref | textobject | lineannotation)*
2019 }
2020# end of screen.element
2021screen.attlist &=
2022 width.attrib,
2023 linespecific.attrib,
2024 common.attrib,
2025 screen.role.attrib,
2026 local.screen.attrib
2027# end of screen.attlist
2028
2029# end of screen.module
2030local.screenshot.attrib = empty
2031screenshot.role.attrib = role.attrib
2032screenshot =
2033 element screenshot {
2034 screenshot.attlist,
2035 screeninfo?,
2036 (graphic | graphicco | mediaobject | mediaobjectco)
2037 }
2038# end of screenshot.element
2039screenshot.attlist &=
2040 common.attrib, screenshot.role.attrib, local.screenshot.attrib
2041# end of screenshot.attlist
2042
2043# end of screenshot.module
2044local.screeninfo.attrib = empty
2045screeninfo.role.attrib = role.attrib
2046screeninfo = element screeninfo { screeninfo.attlist, para.char.mix* }
2047# end of screeninfo.element
2048screeninfo.attlist &=
2049 common.attrib, screeninfo.role.attrib, local.screeninfo.attrib
2050# end of screeninfo.attlist
2051
2052# end of screeninfo.module
2053
2054# end of screenshot.content.module
2055
2056# Figures etc. .....................
2057local.figure.attrib = empty
2058figure.role.attrib = role.attrib
2059figure =
2060 element figure {
2061 figure.attlist,
2062 blockinfo?,
2063 formalobject.title.content,
2064 (figure.mix | link.char.class)+
2065 }
2066# end of figure.element
2067
2068# Float: Whether the Figure is supposed to be rendered
2069# where convenient (yes (1) value) or at the place it occurs
2070# in the text (no (0) value, the default)
2071figure.attlist &=
2072 [ a:defaultValue = "0" ] attribute float { yesorno.attvals }?,
2073 attribute pgwide { yesorno.attvals }?,
2074 label.attrib,
2075 common.attrib,
2076 figure.role.attrib,
2077 local.figure.attrib
2078# end of figure.attlist
2079
2080# end of figure.module
2081local.informalfigure.attrib = empty
2082informalfigure.role.attrib = role.attrib
2083informalfigure =
2084 element informalfigure {
2085 informalfigure.attlist, blockinfo?, (figure.mix | link.char.class)+
2086 }
2087# end of informalfigure.element
2088
2089# Float: Whether the Figure is supposed to be rendered
2090# where convenient (yes (1) value) or at the place it occurs
2091# in the text (no (0) value, the default)
2092informalfigure.attlist &=
2093 [ a:defaultValue = "0" ] attribute float { yesorno.attvals }?,
2094 attribute pgwide { yesorno.attvals }?,
2095 label.attrib,
2096 common.attrib,
2097 informalfigure.role.attrib,
2098 local.informalfigure.attrib
2099# end of informalfigure.attlist
2100
2101# end of informalfigure.module
2102local.graphicco.attrib = empty
2103graphicco.role.attrib = role.attrib
2104graphicco =
2105 element graphicco {
2106 graphicco.attlist, areaspec, graphic, calloutlist*
2107 }
2108# end of graphicco.element
2109graphicco.attlist &=
2110 common.attrib, graphicco.role.attrib, local.graphicco.attrib
2111# end of graphicco.attlist
2112
2113# AreaSpec (defined above in Examples)
2114
2115# CalloutList (defined above in Lists)
2116
2117# end of graphicco.module
2118
2119# Graphical data can be the content of Graphic, or you can reference
2120# an external file either as an entity (Entitref) or a filename
2121# (Fileref).
2122local.graphic.attrib = empty
2123graphic.role.attrib = role.attrib
2124graphic = element graphic { graphic.attlist, empty }
2125# end of graphic.element
2126graphic.attlist &=
2127 graphics.attrib,
2128 common.attrib,
2129 graphic.role.attrib,
2130 local.graphic.attrib
2131# end of graphic.attlist
2132
2133# end of graphic.module
2134local.inlinegraphic.attrib = empty
2135inlinegraphic.role.attrib = role.attrib
2136inlinegraphic = element inlinegraphic { inlinegraphic.attlist, empty }
2137# end of inlinegraphic.element
2138inlinegraphic.attlist &=
2139 graphics.attrib,
2140 common.attrib,
2141 inlinegraphic.role.attrib,
2142 local.inlinegraphic.attrib
2143# end of inlinegraphic.attlist
2144
2145# end of inlinegraphic.module
2146local.mediaobject.attrib = empty
2147mediaobject.role.attrib = role.attrib
2148mediaobject =
2149 element mediaobject {
2150 mediaobject.attlist, objectinfo?, mediaobject.mix+, caption?
2151 }
2152# end of mediaobject.element
2153mediaobject.attlist &=
2154 common.attrib, mediaobject.role.attrib, local.mediaobject.attrib
2155# end of mediaobject.attlist
2156
2157# end of mediaobject.module
2158local.inlinemediaobject.attrib = empty
2159inlinemediaobject.role.attrib = role.attrib
2160inlinemediaobject =
2161 element inlinemediaobject {
2162 inlinemediaobject.attlist, objectinfo?, mediaobject.mix+
2163 }
2164# end of inlinemediaobject.element
2165inlinemediaobject.attlist &=
2166 common.attrib,
2167 inlinemediaobject.role.attrib,
2168 local.inlinemediaobject.attrib
2169# end of inlinemediaobject.attlist
2170
2171# end of inlinemediaobject.module
2172local.videoobject.attrib = empty
2173videoobject.role.attrib = role.attrib
2174videoobject =
2175 element videoobject { videoobject.attlist, objectinfo?, videodata }
2176# end of videoobject.element
2177videoobject.attlist &=
2178 common.attrib, videoobject.role.attrib, local.videoobject.attrib
2179# end of videoobject.attlist
2180
2181# end of videoobject.module
2182local.audioobject.attrib = empty
2183audioobject.role.attrib = role.attrib
2184audioobject =
2185 element audioobject { audioobject.attlist, objectinfo?, audiodata }
2186# end of audioobject.element
2187audioobject.attlist &=
2188 common.attrib, audioobject.role.attrib, local.audioobject.attrib
2189# end of audioobject.attlist
2190
2191# end of audioobject.module
2192local.imageobject.attrib = empty
2193imageobject.role.attrib = role.attrib
2194imageobject =
2195 element imageobject { imageobject.attlist, objectinfo?, imagedata }
2196# end of imageobject.element
2197imageobject.attlist &=
2198 common.attrib, imageobject.role.attrib, local.imageobject.attrib
2199# end of imageobject.attlist
2200
2201# end of imageobject.module
2202local.textobject.attrib = empty
2203textobject.role.attrib = role.attrib
2204textobject =
2205 element textobject {
2206 textobject.attlist,
2207 objectinfo?,
2208 (phrase | textdata | textobject.mix+)
2209 }
2210# end of textobject.element
2211textobject.attlist &=
2212 common.attrib, textobject.role.attrib, local.textobject.attrib
2213# end of textobject.attlist
2214
2215# end of textobject.module
2216local.objectinfo.attrib = empty
2217objectinfo.role.attrib = role.attrib
2218objectinfo = element objectinfo { objectinfo.attlist, info.class+ }
2219# end of objectinfo.element
2220objectinfo.attlist &=
2221 common.attrib, objectinfo.role.attrib, local.objectinfo.attrib
2222# end of objectinfo.attlist
2223
2224# end of objectinfo.module
2225
2226# EntityRef: Name of an external entity containing the content
2227# of the object data
2228
2229# FileRef: Filename, qualified by a pathname if desired,
2230# designating the file containing the content of the object data
2231
2232# Format: Notation of the element content, if any
2233
2234# SrcCredit: Information about the source of the image
2235local.objectdata.attrib = empty
2236objectdata.attrib =
2237 attribute entityref { xsd:ENTITY }?,
2238 attribute fileref { text }?,
2239 attribute format { notation.class }?,
2240 attribute srccredit { text }?,
2241 local.objectdata.attrib
2242local.videodata.attrib = empty
2243videodata.role.attrib = role.attrib
2244videodata = element videodata { videodata.attlist, empty }
2245# end of videodata.element
2246
2247# Width: Same as CALS reprowid (desired width)
2248
2249# Depth: Same as CALS reprodep (desired depth)
2250
2251# Align: Same as CALS hplace with 'none' removed; #IMPLIED means
2252# application-specific
2253
2254# Scale: Conflation of CALS hscale and vscale
2255
2256# Scalefit: Same as CALS scalefit
2257videodata.attlist &=
2258 attribute width { text }?,
2259 attribute contentwidth { text }?,
2260 attribute depth { text }?,
2261 attribute contentdepth { text }?,
2262 attribute align { "left" | "right" | "center" }?,
2263 attribute valign { "top" | "middle" | "bottom" }?,
2264 attribute scale { text }?,
2265 attribute scalefit { yesorno.attvals }?,
2266 objectdata.attrib,
2267 common.attrib,
2268 videodata.role.attrib,
2269 local.videodata.attrib
2270# end of videodata.attlist
2271
2272# end of videodata.module
2273local.audiodata.attrib = empty
2274audiodata.role.attrib = role.attrib
2275audiodata = element audiodata { audiodata.attlist, empty }
2276# end of audiodata.element
2277audiodata.attlist &=
2278 objectdata.attrib,
2279 common.attrib,
2280 audiodata.role.attrib,
2281 local.audiodata.attrib
2282# end of audiodata.attlist
2283
2284# end of audiodata.module
2285local.imagedata.attrib = empty
2286imagedata.role.attrib = role.attrib
2287imagedata = element imagedata { imagedata.attlist, empty }
2288# end of imagedata.element
2289
2290# Width: Same as CALS reprowid (desired width)
2291
2292# Depth: Same as CALS reprodep (desired depth)
2293
2294# Align: Same as CALS hplace with 'none' removed; #IMPLIED means
2295# application-specific
2296
2297# Scale: Conflation of CALS hscale and vscale
2298
2299# Scalefit: Same as CALS scalefit
2300imagedata.attlist &=
2301 attribute width { text }?,
2302 attribute contentwidth { text }?,
2303 attribute depth { text }?,
2304 attribute contentdepth { text }?,
2305 attribute align { "left" | "right" | "center" }?,
2306 attribute valign { "top" | "middle" | "bottom" }?,
2307 attribute scale { text }?,
2308 attribute scalefit { yesorno.attvals }?,
2309 objectdata.attrib,
2310 common.attrib,
2311 imagedata.role.attrib,
2312 local.imagedata.attrib
2313# end of imagedata.attlist
2314
2315# end of imagedata.module
2316local.textdata.attrib = empty
2317textdata.role.attrib = role.attrib
2318textdata = element textdata { textdata.attlist, empty }
2319# end of textdata.element
2320textdata.attlist &=
2321 attribute encoding { text }?,
2322 objectdata.attrib,
2323 common.attrib,
2324 textdata.role.attrib,
2325 local.textdata.attrib
2326# end of textdata.attlist
2327
2328# end of textdata.module
2329local.caption.attrib = empty
2330caption.role.attrib = role.attrib
2331caption = element caption { caption.attlist, textobject.mix* }
2332# end of caption.element
2333caption.attlist &=
2334 common.attrib, caption.role.attrib, local.caption.attrib
2335# end of caption.attlist
2336
2337# end of caption.module
2338local.mediaobjectco.attrib = empty
2339mediaobjectco.role.attrib = role.attrib
2340mediaobjectco =
2341 element mediaobjectco {
2342 mediaobjectco.attlist,
2343 objectinfo?,
2344 imageobjectco,
2345 (imageobjectco | textobject)*
2346 }
2347# end of mediaobjectco.element
2348mediaobjectco.attlist &=
2349 common.attrib, mediaobjectco.role.attrib, local.mediaobjectco.attrib
2350# end of mediaobjectco.attlist
2351
2352# end of mediaobjectco.module
2353local.imageobjectco.attrib = empty
2354imageobjectco.role.attrib = role.attrib
2355imageobjectco =
2356 element imageobjectco {
2357 imageobjectco.attlist, areaspec, imageobject, calloutlist*
2358 }
2359# end of imageobjectco.element
2360imageobjectco.attlist &=
2361 common.attrib, imageobjectco.role.attrib, local.imageobjectco.attrib
2362# end of imageobjectco.attlist
2363
2364# end of imageobjectco.module
2365
2366# end of mediaobject.content.module
2367
2368# Equations ........................
2369
2370# This PE provides a mechanism for replacing equation content,
2371
2372# perhaps adding a new or different model (e.g., MathML)
2373equation.content = alt?, (graphic+ | mediaobject+)
2374inlineequation.content = alt?, (graphic+ | inlinemediaobject+)
2375local.equation.attrib = empty
2376equation.role.attrib = role.attrib
2377equation =
2378 element equation {
2379 equation.attlist,
2380 blockinfo?,
2381 formalobject.title.content?,
2382 (informalequation | equation.content)
2383 }
2384# end of equation.element
2385equation.attlist &=
2386 label.attrib,
2387 common.attrib,
2388 equation.role.attrib,
2389 local.equation.attrib
2390# end of equation.attlist
2391
2392# end of equation.module
2393local.informalequation.attrib = empty
2394informalequation.role.attrib = role.attrib
2395informalequation =
2396 element informalequation {
2397 informalequation.attlist, blockinfo?, equation.content
2398 }
2399# end of informalequation.element
2400informalequation.attlist &=
2401 common.attrib,
2402 informalequation.role.attrib,
2403 local.informalequation.attrib
2404# end of informalequation.attlist
2405
2406# end of informalequation.module
2407local.inlineequation.attrib = empty
2408inlineequation.role.attrib = role.attrib
2409inlineequation =
2410 element inlineequation {
2411 inlineequation.attlist, inlineequation.content
2412 }
2413# end of inlineequation.element
2414inlineequation.attlist &=
2415 common.attrib, inlineequation.role.attrib, local.inlineequation.attrib
2416# end of inlineequation.attlist
2417
2418# end of inlineequation.module
2419local.alt.attrib = empty
2420alt.role.attrib = role.attrib
2421alt = element alt { alt.attlist, text }
2422# end of alt.element
2423alt.attlist &= common.attrib, alt.role.attrib, local.alt.attrib
2424# end of alt.attlist
2425
2426# end of alt.module
2427
2428# Tables ...........................
2429
2430tables.role.attrib = role.attrib
2431
2432# Note that InformalTable is dependent on some of the entity
2433# declarations that customize Table.
2434local.informaltable.attrib = empty
2435informaltable =
2436 element informaltable {
2437 informaltable.attlist,
2438 blockinfo?,
2439 textobject*,
2440 (graphic+ | mediaobject+ | tgroup+)
2441 }
2442# end of informaltable.element
2443
2444# Frame, Colsep, and Rowsep must be repeated because
2445# they are not in entities in the table module.
2446
2447# includes TabStyle, ToCentry, ShortEntry,
2448# Orient, PgWide
2449
2450# includes Label
2451
2452# includes common attributes
2453informaltable.attlist &=
2454 attribute frame {
2455 "top" | "bottom" | "topbot" | "all" | "sides" | "none"
2456 }?,
2457 attribute colsep { yesorno.attvals }?,
2458 attribute rowsep { yesorno.attvals }?,
2459 common.table.attribs,
2460 tbl.table.att,
2461 local.informaltable.attrib
2462# end of informaltable.attlist
2463
2464# end of informaltable.module
2465
2466# ......................................................................
2467
2468# Synopses .............................................................
2469
2470# Synopsis .........................
2471local.synopsis.attrib = empty
2472synopsis.role.attrib = role.attrib
2473synopsis =
2474 element synopsis {
2475 synopsis.attlist,
2476 (para.char.mix
2477 | graphic
2478 | mediaobject
2479 | co
2480 | coref
2481 | textobject
2482 | lineannotation)*
2483 }
2484# end of synopsis.element
2485synopsis.attlist &=
2486 label.attrib,
2487 linespecific.attrib,
2488 common.attrib,
2489 synopsis.role.attrib,
2490 local.synopsis.attrib
2491# end of synopsis.attlist
2492
2493# LineAnnotation (defined in the Inlines section, below)
2494
2495# end of synopsis.module
2496
2497# CmdSynopsis ......................
2498local.cmdsynopsis.attrib = empty
2499cmdsynopsis.role.attrib = role.attrib
2500cmdsynopsis =
2501 element cmdsynopsis {
2502 cmdsynopsis.attlist, (command | arg | group | sbr)+, synopfragment*
2503 }
2504# end of cmdsynopsis.element
2505
2506# Sepchar: Character that should separate command and all
2507# top-level arguments; alternate value might be e.g., &Delta;
2508cmdsynopsis.attlist &=
2509 label.attrib,
2510 [ a:defaultValue = " " ] attribute sepchar { text }?,
2511 attribute cmdlength { text }?,
2512 common.attrib,
2513 cmdsynopsis.role.attrib,
2514 local.cmdsynopsis.attrib
2515# end of cmdsynopsis.attlist
2516
2517# end of cmdsynopsis.module
2518local.arg.attrib = empty
2519arg.role.attrib = role.attrib
2520arg =
2521 element arg {
2522 arg.attlist,
2523 (text
2524 | arg
2525 | group
2526 | option
2527 | synopfragmentref
2528 | replaceable
2529 | sbr)*
2530 }
2531# end of arg.element
2532
2533# Choice: Whether Arg must be supplied: Opt (optional to
2534# supply, e.g. [arg]; the default), Req (required to supply,
2535# e.g. {arg}), or Plain (required to supply, e.g. arg)
2536
2537# Rep: whether Arg is repeatable: Norepeat (e.g. arg without
2538# ellipsis; the default), or Repeat (e.g. arg...)
2539arg.attlist &=
2540 [ a:defaultValue = "opt" ]
2541 attribute choice { "opt" | "req" | "plain" }?,
2542 [ a:defaultValue = "norepeat" ]
2543 attribute rep { "norepeat" | "repeat" }?,
2544 common.attrib,
2545 arg.role.attrib,
2546 local.arg.attrib
2547# end of arg.attlist
2548
2549# end of arg.module
2550local.group.attrib = empty
2551group.role.attrib = role.attrib
2552group =
2553 element group {
2554 group.attlist,
2555 (arg | group | option | synopfragmentref | replaceable | sbr)+
2556 }
2557# end of group.element
2558
2559# Choice: Whether Group must be supplied: Opt (optional to
2560# supply, e.g. [g1|g2|g3]; the default), Req (required to
2561# supply, e.g. {g1|g2|g3}), Plain (required to supply,
2562# e.g. g1|g2|g3), OptMult (can supply zero or more, e.g.
2563# [[g1|g2|g3]]), or ReqMult (must supply one or more, e.g.
2564# {{g1|g2|g3}})
2565
2566# Rep: whether Group is repeatable: Norepeat (e.g. group
2567# without ellipsis; the default), or Repeat (e.g. group...)
2568group.attlist &=
2569 [ a:defaultValue = "opt" ]
2570 attribute choice { "opt" | "req" | "plain" }?,
2571 [ a:defaultValue = "norepeat" ]
2572 attribute rep { "norepeat" | "repeat" }?,
2573 common.attrib,
2574 group.role.attrib,
2575 local.group.attrib
2576# end of group.attlist
2577
2578# end of group.module
2579local.sbr.attrib = empty
2580# Synopsis break
2581sbr.role.attrib = role.attrib
2582sbr = element sbr { sbr.attlist, empty }
2583# end of sbr.element
2584sbr.attlist &= common.attrib, sbr.role.attrib, local.sbr.attrib
2585# end of sbr.attlist
2586
2587# end of sbr.module
2588local.synopfragmentref.attrib = empty
2589synopfragmentref.role.attrib = role.attrib
2590synopfragmentref =
2591 element synopfragmentref { synopfragmentref.attlist, text }
2592# end of synopfragmentref.element
2593
2594# to SynopFragment of complex synopsis
2595# material for separate referencing
2596synopfragmentref.attlist &=
2597 linkendreq.attrib,
2598 common.attrib,
2599 synopfragmentref.role.attrib,
2600 local.synopfragmentref.attrib
2601# end of synopfragmentref.attlist
2602
2603# end of synopfragmentref.module
2604local.synopfragment.attrib = empty
2605synopfragment.role.attrib = role.attrib
2606synopfragment =
2607 element synopfragment { synopfragment.attlist, (arg | group)+ }
2608# end of synopfragment.element
2609synopfragment.attlist &=
2610 idreq.common.attrib,
2611 synopfragment.role.attrib,
2612 local.synopfragment.attrib
2613# end of synopfragment.attlist
2614
2615# end of synopfragment.module
2616
2617# Command (defined in the Inlines section, below)
2618
2619# Option (defined in the Inlines section, below)
2620
2621# Replaceable (defined in the Inlines section, below)
2622
2623# end of cmdsynopsis.content.module
2624
2625# FuncSynopsis .....................
2626local.funcsynopsis.attrib = empty
2627funcsynopsis.role.attrib = role.attrib
2628funcsynopsis =
2629 element funcsynopsis {
2630 funcsynopsis.attlist, (funcsynopsisinfo | funcprototype)+
2631 }
2632# end of funcsynopsis.element
2633funcsynopsis.attlist &=
2634 label.attrib,
2635 common.attrib,
2636 funcsynopsis.role.attrib,
2637 local.funcsynopsis.attrib
2638# end of funcsynopsis.attlist
2639
2640# end of funcsynopsis.module
2641local.funcsynopsisinfo.attrib = empty
2642funcsynopsisinfo.role.attrib = role.attrib
2643funcsynopsisinfo =
2644 element funcsynopsisinfo {
2645 funcsynopsisinfo.attlist,
2646 (cptr.char.mix | textobject | lineannotation)*
2647 }
2648# end of funcsynopsisinfo.element
2649funcsynopsisinfo.attlist &=
2650 linespecific.attrib,
2651 common.attrib,
2652 funcsynopsisinfo.role.attrib,
2653 local.funcsynopsisinfo.attrib
2654# end of funcsynopsisinfo.attlist
2655
2656# end of funcsynopsisinfo.module
2657local.funcprototype.attrib = empty
2658funcprototype.role.attrib = role.attrib
2659funcprototype =
2660 element funcprototype {
2661 funcprototype.attlist, funcdef, (void | varargs | paramdef+)
2662 }
2663# end of funcprototype.element
2664funcprototype.attlist &=
2665 common.attrib, funcprototype.role.attrib, local.funcprototype.attrib
2666# end of funcprototype.attlist
2667
2668# end of funcprototype.module
2669local.funcdef.attrib = empty
2670funcdef.role.attrib = role.attrib
2671funcdef =
2672 element funcdef {
2673 funcdef.attlist, (text | type | replaceable | function)*
2674 }
2675# end of funcdef.element
2676funcdef.attlist &=
2677 common.attrib, funcdef.role.attrib, local.funcdef.attrib
2678# end of funcdef.attlist
2679
2680# end of funcdef.module
2681local.void.attrib = empty
2682void.role.attrib = role.attrib
2683void = element void { void.attlist, empty }
2684# end of void.element
2685void.attlist &= common.attrib, void.role.attrib, local.void.attrib
2686# end of void.attlist
2687
2688# end of void.module
2689local.varargs.attrib = empty
2690varargs.role.attrib = role.attrib
2691varargs = element varargs { varargs.attlist, empty }
2692# end of varargs.element
2693varargs.attlist &=
2694 common.attrib, varargs.role.attrib, local.varargs.attrib
2695# end of varargs.attlist
2696
2697# end of varargs.module
2698
2699# Processing assumes that only one Parameter will appear in a
2700# ParamDef, and that FuncParams will be used at most once, for
2701# providing information on the "inner parameters" for parameters that
2702# are pointers to functions.
2703local.paramdef.attrib = empty
2704paramdef.role.attrib = role.attrib
2705paramdef =
2706 element paramdef {
2707 paramdef.attlist,
2708 (text | type | replaceable | parameter | funcparams)*
2709 }
2710# end of paramdef.element
2711paramdef.attlist &=
2712 common.attrib, paramdef.role.attrib, local.paramdef.attrib
2713# end of paramdef.attlist
2714
2715# end of paramdef.module
2716local.funcparams.attrib = empty
2717funcparams.role.attrib = role.attrib
2718funcparams = element funcparams { funcparams.attlist, cptr.char.mix* }
2719# end of funcparams.element
2720funcparams.attlist &=
2721 common.attrib, funcparams.role.attrib, local.funcparams.attrib
2722# end of funcparams.attlist
2723
2724# end of funcparams.module
2725
2726# LineAnnotation (defined in the Inlines section, below)
2727
2728# Replaceable (defined in the Inlines section, below)
2729
2730# Function (defined in the Inlines section, below)
2731
2732# Parameter (defined in the Inlines section, below)
2733
2734# end of funcsynopsis.content.module
2735
2736# ClassSynopsis .....................
2737local.classsynopsis.attrib = empty
2738classsynopsis.role.attrib = role.attrib
2739classsynopsis =
2740 element classsynopsis {
2741 classsynopsis.attlist,
2742 (ooclass | oointerface | ooexception)+,
2743 (classsynopsisinfo | fieldsynopsis | method.synop.class)*
2744 }
2745# end of classsynopsis.element
2746classsynopsis.attlist &=
2747 attribute language { text }?,
2748 [ a:defaultValue = "class" ]
2749 attribute class { "class" | "interface" }?,
2750 common.attrib,
2751 classsynopsis.role.attrib,
2752 local.classsynopsis.attrib
2753# end of classsynopsis.attlist
2754
2755# end of classsynopsis.module
2756local.classsynopsisinfo.attrib = empty
2757classsynopsisinfo.role.attrib = role.attrib
2758classsynopsisinfo =
2759 element classsynopsisinfo {
2760 classsynopsisinfo.attlist,
2761 (cptr.char.mix | textobject | lineannotation)*
2762 }
2763# end of classsynopsisinfo.element
2764classsynopsisinfo.attlist &=
2765 linespecific.attrib,
2766 common.attrib,
2767 classsynopsisinfo.role.attrib,
2768 local.classsynopsisinfo.attrib
2769# end of classsynopsisinfo.attlist
2770
2771# end of classsynopsisinfo.module
2772local.ooclass.attrib = empty
2773ooclass.role.attrib = role.attrib
2774ooclass = element ooclass { ooclass.attlist, modifier*, classname }
2775# end of ooclass.element
2776ooclass.attlist &=
2777 common.attrib, ooclass.role.attrib, local.ooclass.attrib
2778# end of ooclass.attlist
2779
2780# end of ooclass.module
2781local.oointerface.attrib = empty
2782oointerface.role.attrib = role.attrib
2783oointerface =
2784 element oointerface { oointerface.attlist, modifier*, interfacename }
2785# end of oointerface.element
2786oointerface.attlist &=
2787 common.attrib, oointerface.role.attrib, local.oointerface.attrib
2788# end of oointerface.attlist
2789
2790# end of oointerface.module
2791local.ooexception.attrib = empty
2792ooexception.role.attrib = role.attrib
2793ooexception =
2794 element ooexception { ooexception.attlist, modifier*, exceptionname }
2795# end of ooexception.element
2796ooexception.attlist &=
2797 common.attrib, ooexception.role.attrib, local.ooexception.attrib
2798# end of ooexception.attlist
2799
2800# end of ooexception.module
2801local.modifier.attrib = empty
2802modifier.role.attrib = role.attrib
2803modifier = element modifier { modifier.attlist, smallcptr.char.mix* }
2804# end of modifier.element
2805modifier.attlist &=
2806 common.attrib, modifier.role.attrib, local.modifier.attrib
2807# end of modifier.attlist
2808
2809# end of modifier.module
2810local.interfacename.attrib = empty
2811interfacename.role.attrib = role.attrib
2812interfacename =
2813 element interfacename { interfacename.attlist, cptr.char.mix* }
2814# end of interfacename.element
2815interfacename.attlist &=
2816 common.attrib, interfacename.role.attrib, local.interfacename.attrib
2817# end of interfacename.attlist
2818
2819# end of interfacename.module
2820local.exceptionname.attrib = empty
2821exceptionname.role.attrib = role.attrib
2822exceptionname =
2823 element exceptionname { exceptionname.attlist, smallcptr.char.mix* }
2824# end of exceptionname.element
2825exceptionname.attlist &=
2826 common.attrib, exceptionname.role.attrib, local.exceptionname.attrib
2827# end of exceptionname.attlist
2828
2829# end of exceptionname.module
2830local.fieldsynopsis.attrib = empty
2831fieldsynopsis.role.attrib = role.attrib
2832fieldsynopsis =
2833 element fieldsynopsis {
2834 fieldsynopsis.attlist, modifier*, type?, varname, initializer?
2835 }
2836# end of fieldsynopsis.element
2837fieldsynopsis.attlist &=
2838 attribute language { text }?,
2839 common.attrib,
2840 fieldsynopsis.role.attrib,
2841 local.fieldsynopsis.attrib
2842# end of fieldsynopsis.attlist
2843
2844# end of fieldsynopsis.module
2845local.initializer.attrib = empty
2846initializer.role.attrib = role.attrib
2847initializer =
2848 element initializer { initializer.attlist, smallcptr.char.mix* }
2849# end of initializer.element
2850initializer.attlist &=
2851 common.attrib, initializer.role.attrib, local.initializer.attrib
2852# end of initializer.attlist
2853
2854# end of initializer.module
2855local.constructorsynopsis.attrib = empty
2856constructorsynopsis.role.attrib = role.attrib
2857constructorsynopsis =
2858 element constructorsynopsis {
2859 constructorsynopsis.attlist,
2860 modifier*,
2861 methodname?,
2862 (methodparam+ | void),
2863 exceptionname*
2864 }
2865# end of constructorsynopsis.element
2866constructorsynopsis.attlist &=
2867 attribute language { text }?,
2868 common.attrib,
2869 constructorsynopsis.role.attrib,
2870 local.constructorsynopsis.attrib
2871# end of constructorsynopsis.attlist
2872
2873# end of constructorsynopsis.module
2874local.destructorsynopsis.attrib = empty
2875destructorsynopsis.role.attrib = role.attrib
2876destructorsynopsis =
2877 element destructorsynopsis {
2878 destructorsynopsis.attlist,
2879 modifier*,
2880 methodname?,
2881 (methodparam+ | void),
2882 exceptionname*
2883 }
2884# end of destructorsynopsis.element
2885destructorsynopsis.attlist &=
2886 attribute language { text }?,
2887 common.attrib,
2888 destructorsynopsis.role.attrib,
2889 local.destructorsynopsis.attrib
2890# end of destructorsynopsis.attlist
2891
2892# end of destructorsynopsis.module
2893local.methodsynopsis.attrib = empty
2894methodsynopsis.role.attrib = role.attrib
2895methodsynopsis =
2896 element methodsynopsis {
2897 methodsynopsis.attlist,
2898 modifier*,
2899 (type | void)?,
2900 methodname,
2901 (methodparam+ | void),
2902 exceptionname*,
2903 modifier*
2904 }
2905# end of methodsynopsis.element
2906methodsynopsis.attlist &=
2907 attribute language { text }?,
2908 common.attrib,
2909 methodsynopsis.role.attrib,
2910 local.methodsynopsis.attrib
2911# end of methodsynopsis.attlist
2912
2913# end of methodsynopsis.module
2914local.methodname.attrib = empty
2915methodname.role.attrib = role.attrib
2916methodname =
2917 element methodname { methodname.attlist, smallcptr.char.mix* }
2918# end of methodname.element
2919methodname.attlist &=
2920 common.attrib, methodname.role.attrib, local.methodname.attrib
2921# end of methodname.attlist
2922
2923# end of methodname.module
2924local.methodparam.attrib = empty
2925methodparam.role.attrib = role.attrib
2926methodparam =
2927 element methodparam {
2928 methodparam.attlist,
2929 modifier*,
2930 type?,
2931 ((parameter, initializer?) | funcparams),
2932 modifier*
2933 }
2934# end of methodparam.element
2935methodparam.attlist &=
2936 [ a:defaultValue = "req" ]
2937 attribute choice { "opt" | "req" | "plain" }?,
2938 [ a:defaultValue = "norepeat" ]
2939 attribute rep { "norepeat" | "repeat" }?,
2940 common.attrib,
2941 methodparam.role.attrib,
2942 local.methodparam.attrib
2943# end of methodparam.attlist
2944
2945# end of methodparam.module
2946
2947# end of classsynopsis.content.module
2948
2949# ......................................................................
2950
2951# Document information entities and elements ...........................
2952
2953# The document information elements include some elements that are
2954# currently used only in the document hierarchy module. They are
2955# defined here so that they will be available for use in customized
2956# document hierarchies.
2957
2958# ..................................
2959
2960# Ackno ............................
2961local.ackno.attrib = empty
2962ackno.role.attrib = role.attrib
2963ackno = element ackno { ackno.attlist, docinfo.char.mix* }
2964# end of ackno.element
2965ackno.attlist &= common.attrib, ackno.role.attrib, local.ackno.attrib
2966# end of ackno.attlist
2967
2968# end of ackno.module
2969
2970# Address ..........................
2971local.address.attrib = empty
2972address.role.attrib = role.attrib
2973address =
2974 element address {
2975 address.attlist,
2976 (text
2977 | personname
2978 | person.ident.mix
2979 | street
2980 | pob
2981 | postcode
2982 | city
2983 | state
2984 | country
2985 | phone
2986 | fax
2987 | email
2988 | otheraddr)*
2989 }
2990# end of address.element
2991address.attlist &=
2992 linespecific.attrib,
2993 common.attrib,
2994 address.role.attrib,
2995 local.address.attrib
2996# end of address.attlist
2997
2998# end of address.module
2999local.street.attrib = empty
3000street.role.attrib = role.attrib
3001street = element street { street.attlist, docinfo.char.mix* }
3002# end of street.element
3003street.attlist &= common.attrib, street.role.attrib, local.street.attrib
3004# end of street.attlist
3005
3006# end of street.module
3007local.pob.attrib = empty
3008pob.role.attrib = role.attrib
3009pob = element pob { pob.attlist, docinfo.char.mix* }
3010# end of pob.element
3011pob.attlist &= common.attrib, pob.role.attrib, local.pob.attrib
3012# end of pob.attlist
3013
3014# end of pob.module
3015local.postcode.attrib = empty
3016postcode.role.attrib = role.attrib
3017postcode = element postcode { postcode.attlist, docinfo.char.mix* }
3018# end of postcode.element
3019postcode.attlist &=
3020 common.attrib, postcode.role.attrib, local.postcode.attrib
3021# end of postcode.attlist
3022
3023# end of postcode.module
3024local.city.attrib = empty
3025city.role.attrib = role.attrib
3026city = element city { city.attlist, docinfo.char.mix* }
3027# end of city.element
3028city.attlist &= common.attrib, city.role.attrib, local.city.attrib
3029# end of city.attlist
3030
3031# end of city.module
3032local.state.attrib = empty
3033state.role.attrib = role.attrib
3034state = element state { state.attlist, docinfo.char.mix* }
3035# end of state.element
3036state.attlist &= common.attrib, state.role.attrib, local.state.attrib
3037# end of state.attlist
3038
3039# end of state.module
3040local.country.attrib = empty
3041country.role.attrib = role.attrib
3042country = element country { country.attlist, docinfo.char.mix* }
3043# end of country.element
3044country.attlist &=
3045 common.attrib, country.role.attrib, local.country.attrib
3046# end of country.attlist
3047
3048# end of country.module
3049local.phone.attrib = empty
3050phone.role.attrib = role.attrib
3051phone = element phone { phone.attlist, docinfo.char.mix* }
3052# end of phone.element
3053phone.attlist &= common.attrib, phone.role.attrib, local.phone.attrib
3054# end of phone.attlist
3055
3056# end of phone.module
3057local.fax.attrib = empty
3058fax.role.attrib = role.attrib
3059fax = element fax { fax.attlist, docinfo.char.mix* }
3060# end of fax.element
3061fax.attlist &= common.attrib, fax.role.attrib, local.fax.attrib
3062# end of fax.attlist
3063
3064# end of fax.module
3065
3066# Email (defined in the Inlines section, below)
3067local.otheraddr.attrib = empty
3068otheraddr.role.attrib = role.attrib
3069otheraddr = element otheraddr { otheraddr.attlist, docinfo.char.mix* }
3070# end of otheraddr.element
3071otheraddr.attlist &=
3072 common.attrib, otheraddr.role.attrib, local.otheraddr.attrib
3073# end of otheraddr.attlist
3074
3075# end of otheraddr.module
3076
3077# end of address.content.module
3078
3079# Affiliation ......................
3080local.affiliation.attrib = empty
3081affiliation.role.attrib = role.attrib
3082affiliation =
3083 element affiliation {
3084 affiliation.attlist,
3085 shortaffil?,
3086 jobtitle*,
3087 orgname?,
3088 orgdiv*,
3089 address*
3090 }
3091# end of affiliation.element
3092affiliation.attlist &=
3093 common.attrib, affiliation.role.attrib, local.affiliation.attrib
3094# end of affiliation.attlist
3095
3096# end of affiliation.module
3097local.shortaffil.attrib = empty
3098shortaffil.role.attrib = role.attrib
3099shortaffil =
3100 element shortaffil { shortaffil.attlist, docinfo.char.mix* }
3101# end of shortaffil.element
3102shortaffil.attlist &=
3103 common.attrib, shortaffil.role.attrib, local.shortaffil.attrib
3104# end of shortaffil.attlist
3105
3106# end of shortaffil.module
3107local.jobtitle.attrib = empty
3108jobtitle.role.attrib = role.attrib
3109jobtitle = element jobtitle { jobtitle.attlist, docinfo.char.mix* }
3110# end of jobtitle.element
3111jobtitle.attlist &=
3112 common.attrib, jobtitle.role.attrib, local.jobtitle.attrib
3113# end of jobtitle.attlist
3114
3115# end of jobtitle.module
3116
3117# OrgName (defined elsewhere in this section)
3118local.orgdiv.attrib = empty
3119orgdiv.role.attrib = role.attrib
3120orgdiv = element orgdiv { orgdiv.attlist, docinfo.char.mix* }
3121# end of orgdiv.element
3122orgdiv.attlist &= common.attrib, orgdiv.role.attrib, local.orgdiv.attrib
3123# end of orgdiv.attlist
3124
3125# end of orgdiv.module
3126
3127# Address (defined elsewhere in this section)
3128
3129# end of affiliation.content.module
3130
3131# ArtPageNums ......................
3132local.artpagenums.attrib = empty
3133artpagenums.role.attrib = role.attrib
3134artpagenums =
3135 element artpagenums { artpagenums.attlist, docinfo.char.mix* }
3136# end of artpagenums.element
3137artpagenums.attlist &=
3138 common.attrib, artpagenums.role.attrib, local.artpagenums.attrib
3139# end of artpagenums.attlist
3140
3141# end of artpagenums.module
3142
3143# PersonName
3144local.personname.attrib = empty
3145personname.role.attrib = role.attrib
3146personname =
3147 element personname {
3148 personname.attlist,
3149 (honorific | firstname | surname | lineage | othername)+
3150 }
3151# end of personname.element
3152personname.attlist &=
3153 common.attrib, personname.role.attrib, local.personname.attrib
3154# end of personname.attlist
3155
3156# end of personname.module
3157
3158# Author ...........................
3159local.author.attrib = empty
3160author.role.attrib = role.attrib
3161author =
3162 element author {
3163 author.attlist,
3164 (personname | person.ident.mix+),
3165 (personblurb | email | address)*
3166 }
3167# end of author.element
3168author.attlist &= common.attrib, author.role.attrib, local.author.attrib
3169# end of author.attlist
3170
3171# (see "Personal identity elements" for %person.ident.mix;)
3172
3173# end of author.module
3174
3175# AuthorGroup ......................
3176local.authorgroup.attrib = empty
3177authorgroup.role.attrib = role.attrib
3178authorgroup =
3179 element authorgroup {
3180 authorgroup.attlist,
3181 (author | editor | collab | corpauthor | othercredit)+
3182 }
3183# end of authorgroup.element
3184authorgroup.attlist &=
3185 common.attrib, authorgroup.role.attrib, local.authorgroup.attrib
3186# end of authorgroup.attlist
3187
3188# end of authorgroup.module
3189
3190# Author (defined elsewhere in this section)
3191
3192# Editor (defined elsewhere in this section)
3193local.collab.attrib = empty
3194collab.role.attrib = role.attrib
3195collab = element collab { collab.attlist, collabname, affiliation* }
3196# end of collab.element
3197collab.attlist &= common.attrib, collab.role.attrib, local.collab.attrib
3198# end of collab.attlist
3199
3200# end of collab.module
3201local.collabname.attrib = empty
3202collabname.role.attrib = role.attrib
3203collabname =
3204 element collabname { collabname.attlist, docinfo.char.mix* }
3205# end of collabname.element
3206collabname.attlist &=
3207 common.attrib, collabname.role.attrib, local.collabname.attrib
3208# end of collabname.attlist
3209
3210# end of collabname.module
3211
3212# Affiliation (defined elsewhere in this section)
3213
3214# end of collab.content.module
3215
3216# CorpAuthor (defined elsewhere in this section)
3217
3218# OtherCredit (defined elsewhere in this section)
3219
3220# end of authorgroup.content.module
3221
3222# AuthorInitials ...................
3223local.authorinitials.attrib = empty
3224authorinitials.role.attrib = role.attrib
3225authorinitials =
3226 element authorinitials { authorinitials.attlist, docinfo.char.mix* }
3227# end of authorinitials.element
3228authorinitials.attlist &=
3229 common.attrib, authorinitials.role.attrib, local.authorinitials.attrib
3230# end of authorinitials.attlist
3231
3232# end of authorinitials.module
3233
3234# ConfGroup ........................
3235local.confgroup.attrib = empty
3236confgroup.role.attrib = role.attrib
3237confgroup =
3238 element confgroup {
3239 confgroup.attlist,
3240 (confdates | conftitle | confnum | address | confsponsor)*
3241 }
3242# end of confgroup.element
3243confgroup.attlist &=
3244 common.attrib, confgroup.role.attrib, local.confgroup.attrib
3245# end of confgroup.attlist
3246
3247# end of confgroup.module
3248local.confdates.attrib = empty
3249confdates.role.attrib = role.attrib
3250confdates = element confdates { confdates.attlist, docinfo.char.mix* }
3251# end of confdates.element
3252confdates.attlist &=
3253 common.attrib, confdates.role.attrib, local.confdates.attrib
3254# end of confdates.attlist
3255
3256# end of confdates.module
3257local.conftitle.attrib = empty
3258conftitle.role.attrib = role.attrib
3259conftitle = element conftitle { conftitle.attlist, docinfo.char.mix* }
3260# end of conftitle.element
3261conftitle.attlist &=
3262 common.attrib, conftitle.role.attrib, local.conftitle.attrib
3263# end of conftitle.attlist
3264
3265# end of conftitle.module
3266local.confnum.attrib = empty
3267confnum.role.attrib = role.attrib
3268confnum = element confnum { confnum.attlist, docinfo.char.mix* }
3269# end of confnum.element
3270confnum.attlist &=
3271 common.attrib, confnum.role.attrib, local.confnum.attrib
3272# end of confnum.attlist
3273
3274# end of confnum.module
3275
3276# Address (defined elsewhere in this section)
3277local.confsponsor.attrib = empty
3278confsponsor.role.attrib = role.attrib
3279confsponsor =
3280 element confsponsor { confsponsor.attlist, docinfo.char.mix* }
3281# end of confsponsor.element
3282confsponsor.attlist &=
3283 common.attrib, confsponsor.role.attrib, local.confsponsor.attrib
3284# end of confsponsor.attlist
3285
3286# end of confsponsor.module
3287
3288# end of confgroup.content.module
3289
3290# ContractNum ......................
3291local.contractnum.attrib = empty
3292contractnum.role.attrib = role.attrib
3293contractnum =
3294 element contractnum { contractnum.attlist, docinfo.char.mix* }
3295# end of contractnum.element
3296contractnum.attlist &=
3297 common.attrib, contractnum.role.attrib, local.contractnum.attrib
3298# end of contractnum.attlist
3299
3300# end of contractnum.module
3301
3302# ContractSponsor ..................
3303local.contractsponsor.attrib = empty
3304contractsponsor.role.attrib = role.attrib
3305contractsponsor =
3306 element contractsponsor { contractsponsor.attlist, docinfo.char.mix* }
3307# end of contractsponsor.element
3308contractsponsor.attlist &=
3309 common.attrib,
3310 contractsponsor.role.attrib,
3311 local.contractsponsor.attrib
3312# end of contractsponsor.attlist
3313
3314# end of contractsponsor.module
3315
3316# Copyright ........................
3317local.copyright.attrib = empty
3318copyright.role.attrib = role.attrib
3319copyright = element copyright { copyright.attlist, year+, holder* }
3320# end of copyright.element
3321copyright.attlist &=
3322 common.attrib, copyright.role.attrib, local.copyright.attrib
3323# end of copyright.attlist
3324
3325# end of copyright.module
3326local.year.attrib = empty
3327year.role.attrib = role.attrib
3328year = element year { year.attlist, docinfo.char.mix* }
3329# end of year.element
3330year.attlist &= common.attrib, year.role.attrib, local.year.attrib
3331# end of year.attlist
3332
3333# end of year.module
3334local.holder.attrib = empty
3335holder.role.attrib = role.attrib
3336holder = element holder { holder.attlist, docinfo.char.mix* }
3337# end of holder.element
3338holder.attlist &= common.attrib, holder.role.attrib, local.holder.attrib
3339# end of holder.attlist
3340
3341# end of holder.module
3342
3343# end of copyright.content.module
3344
3345# CorpAuthor .......................
3346local.corpauthor.attrib = empty
3347corpauthor.role.attrib = role.attrib
3348corpauthor =
3349 element corpauthor { corpauthor.attlist, docinfo.char.mix* }
3350# end of corpauthor.element
3351corpauthor.attlist &=
3352 common.attrib, corpauthor.role.attrib, local.corpauthor.attrib
3353# end of corpauthor.attlist
3354
3355# end of corpauthor.module
3356
3357# CorpName .........................
3358local.corpname.attrib = empty
3359corpname = element corpname { corpname.attlist, docinfo.char.mix* }
3360# end of corpname.element
3361corpname.role.attrib = role.attrib
3362corpname.attlist &=
3363 common.attrib, corpname.role.attrib, local.corpname.attrib
3364# end of corpname.attlist
3365
3366# end of corpname.module
3367
3368# Date .............................
3369local.date.attrib = empty
3370date.role.attrib = role.attrib
3371date = element date { date.attlist, docinfo.char.mix* }
3372# end of date.element
3373date.attlist &= common.attrib, date.role.attrib, local.date.attrib
3374# end of date.attlist
3375
3376# end of date.module
3377
3378# Edition ..........................
3379local.edition.attrib = empty
3380edition.role.attrib = role.attrib
3381edition = element edition { edition.attlist, docinfo.char.mix* }
3382# end of edition.element
3383edition.attlist &=
3384 common.attrib, edition.role.attrib, local.edition.attrib
3385# end of edition.attlist
3386
3387# end of edition.module
3388
3389# Editor ...........................
3390local.editor.attrib = empty
3391editor.role.attrib = role.attrib
3392editor =
3393 element editor {
3394 editor.attlist,
3395 (personname | person.ident.mix+),
3396 (personblurb | email | address)*
3397 }
3398# end of editor.element
3399editor.attlist &= common.attrib, editor.role.attrib, local.editor.attrib
3400# end of editor.attlist
3401
3402# (see "Personal identity elements" for %person.ident.mix;)
3403
3404# end of editor.module
3405
3406# ISBN .............................
3407local.isbn.attrib = empty
3408isbn.role.attrib = role.attrib
3409isbn = element isbn { isbn.attlist, docinfo.char.mix* }
3410# end of isbn.element
3411isbn.attlist &= common.attrib, isbn.role.attrib, local.isbn.attrib
3412# end of isbn.attlist
3413
3414# end of isbn.module
3415
3416# ISSN .............................
3417local.issn.attrib = empty
3418issn.role.attrib = role.attrib
3419issn = element issn { issn.attlist, docinfo.char.mix* }
3420# end of issn.element
3421issn.attlist &= common.attrib, issn.role.attrib, local.issn.attrib
3422# end of issn.attlist
3423
3424# end of issn.module
3425
3426# BiblioId .................
3427biblio.class.attrib =
3428 attribute class {
3429 "uri"
3430 | "doi"
3431 | "isbn"
3432 | "issn"
3433 | "libraryofcongress"
3434 | "pubnumber"
3435 | "other"
3436 }?,
3437 attribute otherclass { text }?
3438local.biblioid.attrib = empty
3439biblioid.role.attrib = role.attrib
3440biblioid = element biblioid { biblioid.attlist, docinfo.char.mix* }
3441# end of biblioid.element
3442biblioid.attlist &=
3443 biblio.class.attrib,
3444 common.attrib,
3445 biblioid.role.attrib,
3446 local.biblioid.attrib
3447# end of biblioid.attlist
3448
3449# end of biblioid.module
3450
3451# CiteBiblioId .................
3452local.citebiblioid.attrib = empty
3453citebiblioid.role.attrib = role.attrib
3454citebiblioid =
3455 element citebiblioid { citebiblioid.attlist, docinfo.char.mix* }
3456# end of citebiblioid.element
3457citebiblioid.attlist &=
3458 biblio.class.attrib,
3459 common.attrib,
3460 citebiblioid.role.attrib,
3461 local.citebiblioid.attrib
3462# end of citebiblioid.attlist
3463
3464# end of citebiblioid.module
3465
3466# BiblioSource .................
3467local.bibliosource.attrib = empty
3468bibliosource.role.attrib = role.attrib
3469bibliosource =
3470 element bibliosource { bibliosource.attlist, docinfo.char.mix* }
3471# end of bibliosource.element
3472bibliosource.attlist &=
3473 biblio.class.attrib,
3474 common.attrib,
3475 bibliosource.role.attrib,
3476 local.bibliosource.attrib
3477# end of bibliosource.attlist
3478
3479# end of bibliosource.module
3480
3481# BiblioRelation .................
3482local.bibliorelation.attrib = empty
3483local.bibliorelation.types = notAllowed
3484bibliorelation.type.attrib =
3485 attribute type {
3486 "isversionof"
3487 | "hasversion"
3488 | "isreplacedby"
3489 | "replaces"
3490 | "isrequiredby"
3491 | "requires"
3492 | "ispartof"
3493 | "haspart"
3494 | "isreferencedby"
3495 | "references"
3496 | "isformatof"
3497 | "hasformat"
3498 | "othertype"
3499 | local.bibliorelation.types
3500 }?,
3501 attribute othertype { text }?
3502bibliorelation.role.attrib = role.attrib
3503bibliorelation =
3504 element bibliorelation { bibliorelation.attlist, docinfo.char.mix* }
3505# end of bibliorelation.element
3506bibliorelation.attlist &=
3507 biblio.class.attrib,
3508 bibliorelation.type.attrib,
3509 common.attrib,
3510 bibliorelation.role.attrib,
3511 local.bibliorelation.attrib
3512# end of bibliorelation.attlist
3513
3514# end of bibliorelation.module
3515
3516# BiblioCoverage .................
3517local.bibliocoverage.attrib = empty
3518bibliocoverage.role.attrib = role.attrib
3519bibliocoverage =
3520 element bibliocoverage { bibliocoverage.attlist, docinfo.char.mix* }
3521# end of bibliocoverage.element
3522bibliocoverage.attlist &=
3523 attribute spatial {
3524 "dcmipoint" | "iso3166" | "dcmibox" | "tgn" | "otherspatial"
3525 }?,
3526 attribute otherspatial { text }?,
3527 attribute temporal { "dcmiperiod" | "w3c-dtf" | "othertemporal" }?,
3528 attribute othertemporal { text }?,
3529 common.attrib,
3530 bibliocoverage.role.attrib,
3531 local.bibliocoverage.attrib
3532# end of bibliocoverage.attlist
3533
3534# end of bibliocoverage.module
3535
3536# InvPartNumber ....................
3537local.invpartnumber.attrib = empty
3538invpartnumber.role.attrib = role.attrib
3539invpartnumber =
3540 element invpartnumber { invpartnumber.attlist, docinfo.char.mix* }
3541# end of invpartnumber.element
3542invpartnumber.attlist &=
3543 common.attrib, invpartnumber.role.attrib, local.invpartnumber.attrib
3544# end of invpartnumber.attlist
3545
3546# end of invpartnumber.module
3547
3548# IssueNum .........................
3549local.issuenum.attrib = empty
3550issuenum.role.attrib = role.attrib
3551issuenum = element issuenum { issuenum.attlist, docinfo.char.mix* }
3552# end of issuenum.element
3553issuenum.attlist &=
3554 common.attrib, issuenum.role.attrib, local.issuenum.attrib
3555# end of issuenum.attlist
3556
3557# end of issuenum.module
3558
3559# LegalNotice ......................
3560local.legalnotice.attrib = empty
3561legalnotice.role.attrib = role.attrib
3562legalnotice =
3563 element legalnotice {
3564 legalnotice.attlist, blockinfo?, title?, legalnotice.mix+
3565 }
3566# end of legalnotice.element
3567legalnotice.attlist &=
3568 common.attrib, legalnotice.role.attrib, local.legalnotice.attrib
3569# end of legalnotice.attlist
3570
3571# end of legalnotice.module
3572
3573# ModeSpec .........................
3574local.modespec.attrib = empty
3575modespec.role.attrib = role.attrib
3576modespec = element modespec { modespec.attlist, docinfo.char.mix* }
3577# end of modespec.element
3578
3579# Application: Type of action required for completion
3580# of the links to which the ModeSpec is relevant (e.g.,
3581# retrieval query)
3582modespec.attlist &=
3583 attribute application { notation.class }?,
3584 common.attrib,
3585 modespec.role.attrib,
3586 local.modespec.attrib
3587# end of modespec.attlist
3588
3589# end of modespec.module
3590
3591# OrgName ..........................
3592local.orgname.attrib = empty
3593orgname.role.attrib = role.attrib
3594orgname = element orgname { orgname.attlist, docinfo.char.mix* }
3595# end of orgname.element
3596orgname.attlist &=
3597 common.attrib,
3598 attribute class {
3599 "corporation" | "nonprofit" | "consortium" | "informal" | "other"
3600 }?,
3601 attribute otherclass { text }?,
3602 orgname.role.attrib,
3603 local.orgname.attrib
3604# end of orgname.attlist
3605
3606# end of orgname.module
3607
3608# OtherCredit ......................
3609local.othercredit.attrib = empty
3610othercredit.role.attrib = role.attrib
3611othercredit =
3612 element othercredit {
3613 othercredit.attlist,
3614 (personname | person.ident.mix+),
3615 (personblurb | email | address)*
3616 }
3617# end of othercredit.element
3618othercredit.attlist &=
3619 common.attrib, othercredit.role.attrib, local.othercredit.attrib
3620# end of othercredit.attlist
3621
3622# (see "Personal identity elements" for %person.ident.mix;)
3623
3624# end of othercredit.module
3625
3626# PageNums .........................
3627local.pagenums.attrib = empty
3628pagenums.role.attrib = role.attrib
3629pagenums = element pagenums { pagenums.attlist, docinfo.char.mix* }
3630# end of pagenums.element
3631pagenums.attlist &=
3632 common.attrib, pagenums.role.attrib, local.pagenums.attrib
3633# end of pagenums.attlist
3634
3635# end of pagenums.module
3636
3637# Personal identity elements .......
3638
3639# These elements are used only within Author, Editor, and
3640# OtherCredit.
3641local.contrib.attrib = empty
3642contrib.role.attrib = role.attrib
3643contrib = element contrib { contrib.attlist, docinfo.char.mix* }
3644# end of contrib.element
3645contrib.attlist &=
3646 common.attrib, contrib.role.attrib, local.contrib.attrib
3647# end of contrib.attlist
3648
3649# end of contrib.module
3650local.firstname.attrib = empty
3651firstname.role.attrib = role.attrib
3652firstname = element firstname { firstname.attlist, docinfo.char.mix* }
3653# end of firstname.element
3654firstname.attlist &=
3655 common.attrib, firstname.role.attrib, local.firstname.attrib
3656# end of firstname.attlist
3657
3658# end of firstname.module
3659local.honorific.attrib = empty
3660honorific.role.attrib = role.attrib
3661honorific = element honorific { honorific.attlist, docinfo.char.mix* }
3662# end of honorific.element
3663honorific.attlist &=
3664 common.attrib, honorific.role.attrib, local.honorific.attrib
3665# end of honorific.attlist
3666
3667# end of honorific.module
3668local.lineage.attrib = empty
3669lineage.role.attrib = role.attrib
3670lineage = element lineage { lineage.attlist, docinfo.char.mix* }
3671# end of lineage.element
3672lineage.attlist &=
3673 common.attrib, lineage.role.attrib, local.lineage.attrib
3674# end of lineage.attlist
3675
3676# end of lineage.module
3677local.othername.attrib = empty
3678othername.role.attrib = role.attrib
3679othername = element othername { othername.attlist, docinfo.char.mix* }
3680# end of othername.element
3681othername.attlist &=
3682 common.attrib, othername.role.attrib, local.othername.attrib
3683# end of othername.attlist
3684
3685# end of othername.module
3686local.surname.attrib = empty
3687surname.role.attrib = role.attrib
3688surname = element surname { surname.attlist, docinfo.char.mix* }
3689# end of surname.element
3690surname.attlist &=
3691 common.attrib, surname.role.attrib, local.surname.attrib
3692# end of surname.attlist
3693
3694# end of surname.module
3695
3696# end of person.ident.module
3697
3698# PrintHistory .....................
3699local.printhistory.attrib = empty
3700printhistory.role.attrib = role.attrib
3701printhistory =
3702 element printhistory { printhistory.attlist, para.class+ }
3703# end of printhistory.element
3704printhistory.attlist &=
3705 common.attrib, printhistory.role.attrib, local.printhistory.attrib
3706# end of printhistory.attlist
3707
3708# end of printhistory.module
3709
3710# ProductName ......................
3711local.productname.attrib = empty
3712productname.role.attrib = role.attrib
3713productname =
3714 element productname { productname.attlist, para.char.mix* }
3715# end of productname.element
3716
3717# Class: More precisely identifies the item the element names
3718productname.attlist &=
3719 [ a:defaultValue = "trade" ]
3720 attribute class { "service" | "trade" | "registered" | "copyright" }?,
3721 common.attrib,
3722 productname.role.attrib,
3723 local.productname.attrib
3724# end of productname.attlist
3725
3726# end of productname.module
3727
3728# ProductNumber ....................
3729local.productnumber.attrib = empty
3730productnumber.role.attrib = role.attrib
3731productnumber =
3732 element productnumber { productnumber.attlist, docinfo.char.mix* }
3733# end of productnumber.element
3734productnumber.attlist &=
3735 common.attrib, productnumber.role.attrib, local.productnumber.attrib
3736# end of productnumber.attlist
3737
3738# end of productnumber.module
3739
3740# PubDate ..........................
3741local.pubdate.attrib = empty
3742pubdate.role.attrib = role.attrib
3743pubdate = element pubdate { pubdate.attlist, docinfo.char.mix* }
3744# end of pubdate.element
3745pubdate.attlist &=
3746 common.attrib, pubdate.role.attrib, local.pubdate.attrib
3747# end of pubdate.attlist
3748
3749# end of pubdate.module
3750
3751# Publisher ........................
3752local.publisher.attrib = empty
3753publisher.role.attrib = role.attrib
3754publisher =
3755 element publisher { publisher.attlist, publishername, address* }
3756# end of publisher.element
3757publisher.attlist &=
3758 common.attrib, publisher.role.attrib, local.publisher.attrib
3759# end of publisher.attlist
3760
3761# end of publisher.module
3762local.publishername.attrib = empty
3763publishername.role.attrib = role.attrib
3764publishername =
3765 element publishername { publishername.attlist, docinfo.char.mix* }
3766# end of publishername.element
3767publishername.attlist &=
3768 common.attrib, publishername.role.attrib, local.publishername.attrib
3769# end of publishername.attlist
3770
3771# end of publishername.module
3772
3773# Address (defined elsewhere in this section)
3774
3775# end of publisher.content.module
3776
3777# PubsNumber .......................
3778local.pubsnumber.attrib = empty
3779pubsnumber.role.attrib = role.attrib
3780pubsnumber =
3781 element pubsnumber { pubsnumber.attlist, docinfo.char.mix* }
3782# end of pubsnumber.element
3783pubsnumber.attlist &=
3784 common.attrib, pubsnumber.role.attrib, local.pubsnumber.attrib
3785# end of pubsnumber.attlist
3786
3787# end of pubsnumber.module
3788
3789# ReleaseInfo ......................
3790local.releaseinfo.attrib = empty
3791releaseinfo.role.attrib = role.attrib
3792releaseinfo =
3793 element releaseinfo { releaseinfo.attlist, docinfo.char.mix* }
3794# end of releaseinfo.element
3795releaseinfo.attlist &=
3796 common.attrib, releaseinfo.role.attrib, local.releaseinfo.attrib
3797# end of releaseinfo.attlist
3798
3799# end of releaseinfo.module
3800
3801# RevHistory .......................
3802local.revhistory.attrib = empty
3803revhistory.role.attrib = role.attrib
3804revhistory = element revhistory { revhistory.attlist, revision+ }
3805# end of revhistory.element
3806revhistory.attlist &=
3807 common.attrib, revhistory.role.attrib, local.revhistory.attrib
3808# end of revhistory.attlist
3809
3810# end of revhistory.module
3811local.revision.attrib = empty
3812revision.role.attrib = role.attrib
3813revision =
3814 element revision {
3815 revision.attlist,
3816 revnumber,
3817 date,
3818 authorinitials*,
3819 (revremark | revdescription)?
3820 }
3821# end of revision.element
3822revision.attlist &=
3823 common.attrib, revision.role.attrib, local.revision.attrib
3824# end of revision.attlist
3825
3826# end of revision.module
3827local.revnumber.attrib = empty
3828revnumber.role.attrib = role.attrib
3829revnumber = element revnumber { revnumber.attlist, docinfo.char.mix* }
3830# end of revnumber.element
3831revnumber.attlist &=
3832 common.attrib, revnumber.role.attrib, local.revnumber.attrib
3833# end of revnumber.attlist
3834
3835# end of revnumber.module
3836
3837# Date (defined elsewhere in this section)
3838
3839# AuthorInitials (defined elsewhere in this section)
3840local.revremark.attrib = empty
3841revremark.role.attrib = role.attrib
3842revremark = element revremark { revremark.attlist, docinfo.char.mix* }
3843# end of revremark.element
3844revremark.attlist &=
3845 common.attrib, revremark.role.attrib, local.revremark.attrib
3846# end of revremark.attlist
3847
3848# end of revremark.module
3849local.revdescription.attrib = empty
3850revdescription.role.attrib = role.attrib
3851revdescription =
3852 element revdescription { revdescription.attlist, revdescription.mix+ }
3853# end of revdescription.element
3854revdescription.attlist &=
3855 common.attrib, revdescription.role.attrib, local.revdescription.attrib
3856# end of revdescription.attlist
3857
3858# end of revdescription.module
3859
3860# end of revhistory.content.module
3861
3862# SeriesVolNums ....................
3863local.seriesvolnums.attrib = empty
3864seriesvolnums.role.attrib = role.attrib
3865seriesvolnums =
3866 element seriesvolnums { seriesvolnums.attlist, docinfo.char.mix* }
3867# end of seriesvolnums.element
3868seriesvolnums.attlist &=
3869 common.attrib, seriesvolnums.role.attrib, local.seriesvolnums.attrib
3870# end of seriesvolnums.attlist
3871
3872# end of seriesvolnums.module
3873
3874# VolumeNum ........................
3875local.volumenum.attrib = empty
3876volumenum.role.attrib = role.attrib
3877volumenum = element volumenum { volumenum.attlist, docinfo.char.mix* }
3878# end of volumenum.element
3879volumenum.attlist &=
3880 common.attrib, volumenum.role.attrib, local.volumenum.attrib
3881# end of volumenum.attlist
3882
3883# end of volumenum.module
3884
3885# ..................................
3886
3887# end of docinfo.content.module
3888
3889# ......................................................................
3890
3891# Inline, link, and ubiquitous elements ................................
3892
3893# Technical and computer terms .........................................
3894local.accel.attrib = empty
3895accel.role.attrib = role.attrib
3896accel = element accel { accel.attlist, smallcptr.char.mix* }
3897# end of accel.element
3898accel.attlist &= common.attrib, accel.role.attrib, local.accel.attrib
3899# end of accel.attlist
3900
3901# end of accel.module
3902local.action.attrib = empty
3903action.role.attrib = role.attrib
3904action = element action { action.attlist, cptr.char.mix* }
3905# end of action.element
3906action.attlist &=
3907 moreinfo.attrib,
3908 common.attrib,
3909 action.role.attrib,
3910 local.action.attrib
3911# end of action.attlist
3912
3913# end of action.module
3914local.application.attrib = empty
3915application.role.attrib = role.attrib
3916application =
3917 element application { application.attlist, para.char.mix* }
3918# end of application.element
3919application.attlist &=
3920 attribute class { "hardware" | "software" }?,
3921 moreinfo.attrib,
3922 common.attrib,
3923 application.role.attrib,
3924 local.application.attrib
3925# end of application.attlist
3926
3927# end of application.module
3928local.classname.attrib = empty
3929classname.role.attrib = role.attrib
3930classname = element classname { classname.attlist, smallcptr.char.mix* }
3931# end of classname.element
3932classname.attlist &=
3933 common.attrib, classname.role.attrib, local.classname.attrib
3934# end of classname.attlist
3935
3936# end of classname.module
3937local.co.attrib = empty
3938# CO is a callout area of the LineColumn unit type (a single character
3939# position); the position is directly indicated by the location of CO.
3940co.role.attrib = role.attrib
3941co = element co { co.attlist, empty }
3942# end of co.element
3943
3944# bug number/symbol override or initialization
3945
3946# to any related information
3947co.attlist &=
3948 label.attrib,
3949 linkends.attrib,
3950 idreq.common.attrib,
3951 co.role.attrib,
3952 local.co.attrib
3953# end of co.attlist
3954
3955# end of co.module
3956local.coref.attrib = empty
3957# COREF is a reference to a CO
3958coref.role.attrib = role.attrib
3959coref = element coref { coref.attlist, empty }
3960# end of coref.element
3961
3962# bug number/symbol override or initialization
3963
3964# to any related information
3965coref.attlist &=
3966 label.attrib,
3967 linkendreq.attrib,
3968 common.attrib,
3969 coref.role.attrib,
3970 local.coref.attrib
3971# end of coref.attlist
3972
3973# end of coref.module
3974local.command.attrib = empty
3975command.role.attrib = role.attrib
3976command = element command { command.attlist, cptr.char.mix* }
3977# end of command.element
3978command.attlist &=
3979 moreinfo.attrib,
3980 common.attrib,
3981 command.role.attrib,
3982 local.command.attrib
3983# end of command.attlist
3984
3985# end of command.module
3986local.computeroutput.attrib = empty
3987computeroutput.role.attrib = role.attrib
3988computeroutput =
3989 element computeroutput {
3990 computeroutput.attlist, (cptr.char.mix | co)*
3991 }
3992# end of computeroutput.element
3993computeroutput.attlist &=
3994 moreinfo.attrib,
3995 common.attrib,
3996 computeroutput.role.attrib,
3997 local.computeroutput.attrib
3998# end of computeroutput.attlist
3999
4000# end of computeroutput.module
4001local.database.attrib = empty
4002database.role.attrib = role.attrib
4003database = element database { database.attlist, cptr.char.mix* }
4004# end of database.element
4005
4006# Class: Type of database the element names; no default
4007database.attlist &=
4008 attribute class {
4009 "name" | "table" | "field" | "key1" | "key2" | "record"
4010 }?,
4011 moreinfo.attrib,
4012 common.attrib,
4013 database.role.attrib,
4014 local.database.attrib
4015# end of database.attlist
4016
4017# end of database.module
4018local.email.attrib = empty
4019email.role.attrib = role.attrib
4020email = element email { email.attlist, docinfo.char.mix* }
4021# end of email.element
4022email.attlist &= common.attrib, email.role.attrib, local.email.attrib
4023# end of email.attlist
4024
4025# end of email.module
4026local.envar.attrib = empty
4027envar.role.attrib = role.attrib
4028envar = element envar { envar.attlist, smallcptr.char.mix* }
4029# end of envar.element
4030envar.attlist &= common.attrib, envar.role.attrib, local.envar.attrib
4031# end of envar.attlist
4032
4033# end of envar.module
4034local.errorcode.attrib = empty
4035errorcode.role.attrib = role.attrib
4036errorcode = element errorcode { errorcode.attlist, smallcptr.char.mix* }
4037# end of errorcode.element
4038errorcode.attlist &=
4039 moreinfo.attrib,
4040 common.attrib,
4041 errorcode.role.attrib,
4042 local.errorcode.attrib
4043# end of errorcode.attlist
4044
4045# end of errorcode.module
4046local.errorname.attrib = empty
4047errorname.role.attrib = role.attrib
4048errorname = element errorname { errorname.attlist, smallcptr.char.mix* }
4049# end of errorname.element
4050errorname.attlist &=
4051 common.attrib, errorname.role.attrib, local.errorname.attrib
4052# end of errorname.attlist
4053
4054# end of errorname.module
4055local.errortext.attrib = empty
4056errortext.role.attrib = role.attrib
4057errortext = element errortext { errortext.attlist, smallcptr.char.mix* }
4058# end of errortext.element
4059errortext.attlist &=
4060 common.attrib, errortext.role.attrib, local.errortext.attrib
4061# end of errortext.attlist
4062
4063# end of errortext.module
4064local.errortype.attrib = empty
4065errortype.role.attrib = role.attrib
4066errortype = element errortype { errortype.attlist, smallcptr.char.mix* }
4067# end of errortype.element
4068errortype.attlist &=
4069 common.attrib, errortype.role.attrib, local.errortype.attrib
4070# end of errortype.attlist
4071
4072# end of errortype.module
4073local.filename.attrib = empty
4074filename.role.attrib = role.attrib
4075filename = element filename { filename.attlist, cptr.char.mix* }
4076# end of filename.element
4077
4078# Class: Type of filename the element names; no default
4079
4080# Path: Search path (possibly system-specific) in which
4081# file can be found
4082filename.attlist &=
4083 attribute class {
4084 "headerfile"
4085 | "partition"
4086 | "devicefile"
4087 | "libraryfile"
4088 | "directory"
4089 | "extension"
4090 | "symlink"
4091 }?,
4092 attribute path { text }?,
4093 moreinfo.attrib,
4094 common.attrib,
4095 filename.role.attrib,
4096 local.filename.attrib
4097# end of filename.attlist
4098
4099# end of filename.module
4100local.function.attrib = empty
4101function.role.attrib = role.attrib
4102function = element function { function.attlist, cptr.char.mix* }
4103# end of function.element
4104function.attlist &=
4105 moreinfo.attrib,
4106 common.attrib,
4107 function.role.attrib,
4108 local.function.attrib
4109# end of function.attlist
4110
4111# end of function.module
4112local.guibutton.attrib = empty
4113guibutton.role.attrib = role.attrib
4114guibutton =
4115 element guibutton { guibutton.attlist, (smallcptr.char.mix | accel)* }
4116# end of guibutton.element
4117guibutton.attlist &=
4118 moreinfo.attrib,
4119 common.attrib,
4120 guibutton.role.attrib,
4121 local.guibutton.attrib
4122# end of guibutton.attlist
4123
4124# end of guibutton.module
4125local.guiicon.attrib = empty
4126guiicon.role.attrib = role.attrib
4127guiicon =
4128 element guiicon { guiicon.attlist, (smallcptr.char.mix | accel)* }
4129# end of guiicon.element
4130guiicon.attlist &=
4131 moreinfo.attrib,
4132 common.attrib,
4133 guiicon.role.attrib,
4134 local.guiicon.attrib
4135# end of guiicon.attlist
4136
4137# end of guiicon.module
4138local.guilabel.attrib = empty
4139guilabel.role.attrib = role.attrib
4140guilabel =
4141 element guilabel { guilabel.attlist, (smallcptr.char.mix | accel)* }
4142# end of guilabel.element
4143guilabel.attlist &=
4144 moreinfo.attrib,
4145 common.attrib,
4146 guilabel.role.attrib,
4147 local.guilabel.attrib
4148# end of guilabel.attlist
4149
4150# end of guilabel.module
4151local.guimenu.attrib = empty
4152guimenu.role.attrib = role.attrib
4153guimenu =
4154 element guimenu { guimenu.attlist, (smallcptr.char.mix | accel)* }
4155# end of guimenu.element
4156guimenu.attlist &=
4157 moreinfo.attrib,
4158 common.attrib,
4159 guimenu.role.attrib,
4160 local.guimenu.attrib
4161# end of guimenu.attlist
4162
4163# end of guimenu.module
4164local.guimenuitem.attrib = empty
4165guimenuitem.role.attrib = role.attrib
4166guimenuitem =
4167 element guimenuitem {
4168 guimenuitem.attlist, (smallcptr.char.mix | accel)*
4169 }
4170# end of guimenuitem.element
4171guimenuitem.attlist &=
4172 moreinfo.attrib,
4173 common.attrib,
4174 guimenuitem.role.attrib,
4175 local.guimenuitem.attrib
4176# end of guimenuitem.attlist
4177
4178# end of guimenuitem.module
4179local.guisubmenu.attrib = empty
4180guisubmenu.role.attrib = role.attrib
4181guisubmenu =
4182 element guisubmenu {
4183 guisubmenu.attlist, (smallcptr.char.mix | accel)*
4184 }
4185# end of guisubmenu.element
4186guisubmenu.attlist &=
4187 moreinfo.attrib,
4188 common.attrib,
4189 guisubmenu.role.attrib,
4190 local.guisubmenu.attrib
4191# end of guisubmenu.attlist
4192
4193# end of guisubmenu.module
4194local.hardware.attrib = empty
4195hardware.role.attrib = role.attrib
4196hardware = element hardware { hardware.attlist, cptr.char.mix* }
4197# end of hardware.element
4198hardware.attlist &=
4199 moreinfo.attrib,
4200 common.attrib,
4201 hardware.role.attrib,
4202 local.hardware.attrib
4203# end of hardware.attlist
4204
4205# end of hardware.module
4206local.interface.attrib = empty
4207interface.role.attrib = role.attrib
4208interface =
4209 element interface { interface.attlist, (smallcptr.char.mix | accel)* }
4210# end of interface.element
4211
4212# Class: Type of the Interface item; no default
4213interface.attlist &=
4214 moreinfo.attrib,
4215 common.attrib,
4216 interface.role.attrib,
4217 local.interface.attrib
4218# end of interface.attlist
4219
4220# end of interface.module
4221local.keycap.attrib = empty
4222keycap.role.attrib = role.attrib
4223keycap = element keycap { keycap.attlist, cptr.char.mix* }
4224# end of keycap.element
4225keycap.attlist &=
4226 moreinfo.attrib,
4227 common.attrib,
4228 keycap.role.attrib,
4229 local.keycap.attrib
4230# end of keycap.attlist
4231
4232# end of keycap.module
4233local.keycode.attrib = empty
4234keycode.role.attrib = role.attrib
4235keycode = element keycode { keycode.attlist, smallcptr.char.mix* }
4236# end of keycode.element
4237keycode.attlist &=
4238 common.attrib, keycode.role.attrib, local.keycode.attrib
4239# end of keycode.attlist
4240
4241# end of keycode.module
4242local.keycombo.attrib = empty
4243keycombo.role.attrib = role.attrib
4244keycombo =
4245 element keycombo {
4246 keycombo.attlist, (keycap | keycombo | keysym | mousebutton)+
4247 }
4248# end of keycombo.element
4249keycombo.attlist &=
4250 keyaction.attrib,
4251 moreinfo.attrib,
4252 common.attrib,
4253 keycombo.role.attrib,
4254 local.keycombo.attrib
4255# end of keycombo.attlist
4256
4257# end of keycombo.module
4258local.keysym.attrib = empty
4259keysysm.role.attrib = role.attrib
4260keysym = element keysym { keysym.attlist, smallcptr.char.mix* }
4261# end of keysym.element
4262keysym.attlist &=
4263 common.attrib, keysysm.role.attrib, local.keysym.attrib
4264# end of keysym.attlist
4265
4266# end of keysym.module
4267local.lineannotation.attrib = empty
4268lineannotation.role.attrib = role.attrib
4269lineannotation =
4270 element lineannotation { lineannotation.attlist, para.char.mix* }
4271# end of lineannotation.element
4272lineannotation.attlist &=
4273 common.attrib, lineannotation.role.attrib, local.lineannotation.attrib
4274# end of lineannotation.attlist
4275
4276# end of lineannotation.module
4277local.literal.attrib = empty
4278literal.role.attrib = role.attrib
4279literal = element literal { literal.attlist, cptr.char.mix* }
4280# end of literal.element
4281literal.attlist &=
4282 moreinfo.attrib,
4283 common.attrib,
4284 literal.role.attrib,
4285 local.literal.attrib
4286# end of literal.attlist
4287
4288# end of literal.module
4289local.constant.attrib = empty
4290constant.role.attrib = role.attrib
4291constant = element constant { constant.attlist, smallcptr.char.mix* }
4292# end of constant.element
4293constant.attlist &=
4294 attribute class { "limit" }?,
4295 common.attrib,
4296 constant.role.attrib,
4297 local.constant.attrib
4298# end of constant.attlist
4299
4300# end of constant.module
4301local.varname.attrib = empty
4302varname.role.attrib = role.attrib
4303varname = element varname { varname.attlist, smallcptr.char.mix* }
4304# end of varname.element
4305varname.attlist &=
4306 common.attrib, varname.role.attrib, local.varname.attrib
4307# end of varname.attlist
4308
4309# end of varname.module
4310local.markup.attrib = empty
4311markup.role.attrib = role.attrib
4312markup = element markup { markup.attlist, smallcptr.char.mix* }
4313# end of markup.element
4314markup.attlist &= common.attrib, markup.role.attrib, local.markup.attrib
4315# end of markup.attlist
4316
4317# end of markup.module
4318local.medialabel.attrib = empty
4319medialabel.role.attrib = role.attrib
4320medialabel =
4321 element medialabel { medialabel.attlist, smallcptr.char.mix* }
4322# end of medialabel.element
4323
4324# Class: Type of medium named by the element; no default
4325medialabel.attlist &=
4326 attribute class { "cartridge" | "cdrom" | "disk" | "tape" }?,
4327 common.attrib,
4328 medialabel.role.attrib,
4329 local.medialabel.attrib
4330# end of medialabel.attlist
4331
4332# end of medialabel.module
4333local.menuchoice.attrib = empty
4334menuchoice.role.attrib = role.attrib
4335menuchoice =
4336 element menuchoice {
4337 menuchoice.attlist,
4338 shortcut?,
4339 (guibutton
4340 | guiicon
4341 | guilabel
4342 | guimenu
4343 | guimenuitem
4344 | guisubmenu
4345 | interface)+
4346 }
4347# end of menuchoice.element
4348menuchoice.attlist &=
4349 moreinfo.attrib,
4350 common.attrib,
4351 menuchoice.role.attrib,
4352 local.menuchoice.attrib
4353# end of menuchoice.attlist
4354
4355# end of menuchoice.module
4356
4357# See also KeyCombo
4358local.shortcut.attrib = empty
4359shortcut.role.attrib = role.attrib
4360shortcut =
4361 element shortcut {
4362 shortcut.attlist, (keycap | keycombo | keysym | mousebutton)+
4363 }
4364# end of shortcut.element
4365shortcut.attlist &=
4366 keyaction.attrib,
4367 moreinfo.attrib,
4368 common.attrib,
4369 shortcut.role.attrib,
4370 local.shortcut.attrib
4371# end of shortcut.attlist
4372
4373# end of shortcut.module
4374
4375# end of menuchoice.content.module
4376local.mousebutton.attrib = empty
4377mousebutton.role.attrib = role.attrib
4378mousebutton =
4379 element mousebutton { mousebutton.attlist, smallcptr.char.mix* }
4380# end of mousebutton.element
4381mousebutton.attlist &=
4382 moreinfo.attrib,
4383 common.attrib,
4384 mousebutton.role.attrib,
4385 local.mousebutton.attrib
4386# end of mousebutton.attlist
4387
4388# end of mousebutton.module
4389local.msgtext.attrib = empty
4390msgtext.role.attrib = role.attrib
4391msgtext = element msgtext { msgtext.attlist, component.mix+ }
4392# end of msgtext.element
4393msgtext.attlist &=
4394 common.attrib, msgtext.role.attrib, local.msgtext.attrib
4395# end of msgtext.attlist
4396
4397# end of msgtext.module
4398local.option.attrib = empty
4399option.role.attrib = role.attrib
4400option = element option { option.attlist, cptr.char.mix* }
4401# end of option.element
4402option.attlist &= common.attrib, option.role.attrib, local.option.attrib
4403# end of option.attlist
4404
4405# end of option.module
4406local.optional.attrib = empty
4407optional.role.attrib = role.attrib
4408optional = element optional { optional.attlist, cptr.char.mix* }
4409# end of optional.element
4410optional.attlist &=
4411 common.attrib, optional.role.attrib, local.optional.attrib
4412# end of optional.attlist
4413
4414# end of optional.module
4415local.parameter.attrib = empty
4416parameter.role.attrib = role.attrib
4417parameter = element parameter { parameter.attlist, cptr.char.mix* }
4418# end of parameter.element
4419
4420# Class: Type of the Parameter; no default
4421parameter.attlist &=
4422 attribute class { "command" | "function" | "option" }?,
4423 moreinfo.attrib,
4424 common.attrib,
4425 parameter.role.attrib,
4426 local.parameter.attrib
4427# end of parameter.attlist
4428
4429# end of parameter.module
4430local.prompt.attrib = empty
4431prompt.role.attrib = role.attrib
4432prompt = element prompt { prompt.attlist, (smallcptr.char.mix | co)* }
4433# end of prompt.element
4434prompt.attlist &=
4435 moreinfo.attrib,
4436 common.attrib,
4437 prompt.role.attrib,
4438 local.prompt.attrib
4439# end of prompt.attlist
4440
4441# end of prompt.module
4442local.property.attrib = empty
4443property.role.attrib = role.attrib
4444property = element property { property.attlist, cptr.char.mix* }
4445# end of property.element
4446property.attlist &=
4447 moreinfo.attrib,
4448 common.attrib,
4449 property.role.attrib,
4450 local.property.attrib
4451# end of property.attlist
4452
4453# end of property.module
4454local.replaceable.attrib = empty
4455replaceable.role.attrib = role.attrib
4456replaceable =
4457 element replaceable {
4458 replaceable.attlist,
4459 (text
4460 | link.char.class
4461 | optional
4462 | base.char.class
4463 | other.char.class
4464 | inlinegraphic
4465 | inlinemediaobject
4466 | co)*
4467 }
4468# end of replaceable.element
4469
4470# Class: Type of information the element represents; no
4471# default
4472replaceable.attlist &=
4473 attribute class { "command" | "function" | "option" | "parameter" }?,
4474 common.attrib,
4475 replaceable.role.attrib,
4476 local.replaceable.attrib
4477# end of replaceable.attlist
4478
4479# end of replaceable.module
4480local.returnvalue.attrib = empty
4481returnvalue.role.attrib = role.attrib
4482returnvalue =
4483 element returnvalue { returnvalue.attlist, smallcptr.char.mix* }
4484# end of returnvalue.element
4485returnvalue.attlist &=
4486 common.attrib, returnvalue.role.attrib, local.returnvalue.attrib
4487# end of returnvalue.attlist
4488
4489# end of returnvalue.module
4490local.sgmltag.attrib = empty
4491sgmltag.role.attrib = role.attrib
4492sgmltag = element sgmltag { sgmltag.attlist, smallcptr.char.mix* }
4493# end of sgmltag.element
4494
4495# Class: Type of SGML construct the element names; no default
4496sgmltag.attlist &=
4497 attribute class {
4498 "attribute"
4499 | "attvalue"
4500 | "element"
4501 | "endtag"
4502 | "emptytag"
4503 | "genentity"
4504 | "numcharref"
4505 | "paramentity"
4506 | "pi"
4507 | "xmlpi"
4508 | "starttag"
4509 | "sgmlcomment"
4510 }?,
4511 common.attrib,
4512 sgmltag.role.attrib,
4513 local.sgmltag.attrib
4514# end of sgmltag.attlist
4515
4516# end of sgmltag.module
4517local.structfield.attrib = empty
4518structfield.role.attrib = role.attrib
4519structfield =
4520 element structfield { structfield.attlist, smallcptr.char.mix* }
4521# end of structfield.element
4522structfield.attlist &=
4523 common.attrib, structfield.role.attrib, local.structfield.attrib
4524# end of structfield.attlist
4525
4526# end of structfield.module
4527local.structname.attrib = empty
4528structname.role.attrib = role.attrib
4529structname =
4530 element structname { structname.attlist, smallcptr.char.mix* }
4531# end of structname.element
4532structname.attlist &=
4533 common.attrib, structname.role.attrib, local.structname.attrib
4534# end of structname.attlist
4535
4536# end of structname.module
4537local.symbol.attrib = empty
4538symbol.role.attrib = role.attrib
4539symbol = element symbol { symbol.attlist, smallcptr.char.mix* }
4540# end of symbol.element
4541
4542# Class: Type of symbol; no default
4543symbol.attlist &=
4544 attribute class { "limit" }?,
4545 common.attrib,
4546 symbol.role.attrib,
4547 local.symbol.attrib
4548# end of symbol.attlist
4549
4550# end of symbol.module
4551local.systemitem.attrib = empty
4552systemitem.role.attrib = role.attrib
4553systemitem =
4554 element systemitem {
4555 systemitem.attlist, (cptr.char.mix | acronym | co)*
4556 }
4557# end of systemitem.element
4558
4559# Class: Type of system item the element names; no default
4560systemitem.attlist &=
4561 attribute class {
4562 "constant"
4563 | "event"
4564 | "eventhandler"
4565 | "domainname"
4566 | "fqdomainname"
4567 | "ipaddress"
4568 | "netmask"
4569 | "etheraddress"
4570 | "groupname"
4571 | "library"
4572 | "macro"
4573 | "osname"
4574 | "filesystem"
4575 | "resource"
4576 | "systemname"
4577 | "username"
4578 | "newsgroup"
4579 }?,
4580 moreinfo.attrib,
4581 common.attrib,
4582 systemitem.role.attrib,
4583 local.systemitem.attrib
4584# end of systemitem.attlist
4585
4586# end of systemitem.module
4587local.token.attrib = empty
4588token.role.attrib = role.attrib
4589\token = element token { token.attlist, smallcptr.char.mix* }
4590# end of token.element
4591token.attlist &= common.attrib, token.role.attrib, local.token.attrib
4592# end of token.attlist
4593
4594# end of token.module
4595local.type.attrib = empty
4596type.role.attrib = role.attrib
4597type = element type { type.attlist, smallcptr.char.mix* }
4598# end of type.element
4599type.attlist &= common.attrib, type.role.attrib, local.type.attrib
4600# end of type.attlist
4601
4602# end of type.module
4603local.userinput.attrib = empty
4604userinput.role.attrib = role.attrib
4605userinput =
4606 element userinput { userinput.attlist, (cptr.char.mix | co)* }
4607# end of userinput.element
4608userinput.attlist &=
4609 moreinfo.attrib,
4610 common.attrib,
4611 userinput.role.attrib,
4612 local.userinput.attrib
4613# end of userinput.attlist
4614
4615# end of userinput.module
4616
4617# General words and phrases ............................................
4618local.abbrev.attrib = empty
4619abbrev.role.attrib = role.attrib
4620abbrev = element abbrev { abbrev.attlist, word.char.mix* }
4621# end of abbrev.element
4622abbrev.attlist &= common.attrib, abbrev.role.attrib, local.abbrev.attrib
4623# end of abbrev.attlist
4624
4625# end of abbrev.module
4626local.acronym.attrib = empty
4627acronym.role.attrib = role.attrib
4628acronym = element acronym { acronym.attlist, word.char.mix* }
4629# end of acronym.element
4630acronym.attlist &=
4631 common.attrib, acronym.role.attrib, local.acronym.attrib
4632# end of acronym.attlist
4633
4634# end of acronym.module
4635local.citation.attrib = empty
4636citation.role.attrib = role.attrib
4637citation = element citation { citation.attlist, para.char.mix* }
4638# end of citation.element
4639citation.attlist &=
4640 common.attrib, citation.role.attrib, local.citation.attrib
4641# end of citation.attlist
4642
4643# end of citation.module
4644local.citerefentry.attrib = empty
4645citerefentry.role.attrib = role.attrib
4646citerefentry =
4647 element citerefentry {
4648 citerefentry.attlist, refentrytitle, manvolnum?
4649 }
4650# end of citerefentry.element
4651citerefentry.attlist &=
4652 common.attrib, citerefentry.role.attrib, local.citerefentry.attrib
4653# end of citerefentry.attlist
4654
4655# end of citerefentry.module
4656local.refentrytitle.attrib = empty
4657refentrytitle.role.attrib = role.attrib
4658refentrytitle =
4659 element refentrytitle { refentrytitle.attlist, para.char.mix* }
4660# end of refentrytitle.element
4661refentrytitle.attlist &=
4662 common.attrib, refentrytitle.role.attrib, local.refentrytitle.attrib
4663# end of refentrytitle.attlist
4664
4665# end of refentrytitle.module
4666local.manvolnum.attrib = empty
4667namvolnum.role.attrib = role.attrib
4668manvolnum = element manvolnum { manvolnum.attlist, word.char.mix* }
4669# end of manvolnum.element
4670manvolnum.attlist &=
4671 common.attrib, namvolnum.role.attrib, local.manvolnum.attrib
4672# end of manvolnum.attlist
4673
4674# end of manvolnum.module
4675local.citetitle.attrib = empty
4676citetitle.role.attrib = role.attrib
4677citetitle = element citetitle { citetitle.attlist, para.char.mix* }
4678# end of citetitle.element
4679
4680# Pubwork: Genre of published work cited; no default
4681citetitle.attlist &=
4682 attribute pubwork {
4683 "article"
4684 | "book"
4685 | "chapter"
4686 | "part"
4687 | "refentry"
4688 | "section"
4689 | "journal"
4690 | "series"
4691 | "set"
4692 | "manuscript"
4693 }?,
4694 common.attrib,
4695 citetitle.role.attrib,
4696 local.citetitle.attrib
4697# end of citetitle.attlist
4698
4699# end of citetitle.module
4700local.emphasis.attrib = empty
4701emphasis.role.attrib = role.attrib
4702emphasis = element emphasis { emphasis.attlist, para.char.mix* }
4703# end of emphasis.element
4704emphasis.attlist &=
4705 common.attrib, emphasis.role.attrib, local.emphasis.attrib
4706# end of emphasis.attlist
4707
4708# end of emphasis.module
4709local.firstterm.attrib = empty
4710firstterm.role.attrib = role.attrib
4711firstterm = element firstterm { firstterm.attlist, word.char.mix* }
4712# end of firstterm.element
4713
4714# to GlossEntry or other explanation
4715firstterm.attlist &=
4716 linkend.attrib,
4717 common.attrib,
4718 firstterm.role.attrib,
4719 local.firstterm.attrib
4720# end of firstterm.attlist
4721
4722# end of firstterm.module
4723local.foreignphrase.attrib = empty
4724foreignphrase.role.attrib = role.attrib
4725foreignphrase =
4726 element foreignphrase { foreignphrase.attlist, para.char.mix* }
4727# end of foreignphrase.element
4728foreignphrase.attlist &=
4729 common.attrib, foreignphrase.role.attrib, local.foreignphrase.attrib
4730# end of foreignphrase.attlist
4731
4732# end of foreignphrase.module
4733local.glossterm.attrib = empty
4734glossterm.role.attrib = role.attrib
4735glossterm = element glossterm { glossterm.attlist, para.char.mix* }
4736# end of glossterm.element
4737
4738# to GlossEntry if Glossterm used in text
4739
4740# BaseForm: Provides the form of GlossTerm to be used
4741# for indexing
4742glossterm.attlist &=
4743 linkend.attrib,
4744 attribute baseform { text }?,
4745 common.attrib,
4746 glossterm.role.attrib,
4747 local.glossterm.attrib
4748# end of glossterm.attlist
4749
4750# end of glossterm.module
4751local.phrase.attrib = empty
4752phrase.role.attrib = role.attrib
4753phrase = element phrase { phrase.attlist, para.char.mix* }
4754# end of phrase.element
4755phrase.attlist &= common.attrib, phrase.role.attrib, local.phrase.attrib
4756# end of phrase.attlist
4757
4758# end of phrase.module
4759local.quote.attrib = empty
4760quote.role.attrib = role.attrib
4761quote = element quote { quote.attlist, para.char.mix* }
4762# end of quote.element
4763quote.attlist &= common.attrib, quote.role.attrib, local.quote.attrib
4764# end of quote.attlist
4765
4766# end of quote.module
4767local.ssscript.attrib = empty
4768ssscript.role.attrib = role.attrib
4769subscript =
4770 element subscript {
4771 subscript.attlist,
4772 (text
4773 | link.char.class
4774 | emphasis
4775 | replaceable
4776 | symbol
4777 | inlinegraphic
4778 | inlinemediaobject
4779 | base.char.class
4780 | other.char.class)*
4781 }
4782# end of subscript.element
4783subscript.attlist &=
4784 common.attrib, ssscript.role.attrib, local.ssscript.attrib
4785# end of subscript.attlist
4786superscript =
4787 element superscript {
4788 superscript.attlist,
4789 (text
4790 | link.char.class
4791 | emphasis
4792 | replaceable
4793 | symbol
4794 | inlinegraphic
4795 | inlinemediaobject
4796 | base.char.class
4797 | other.char.class)*
4798 }
4799# end of superscript.element
4800superscript.attlist &=
4801 common.attrib, ssscript.role.attrib, local.ssscript.attrib
4802# end of superscript.attlist
4803
4804# end of ssscript.module
4805local.trademark.attrib = empty
4806trademark.role.attrib = role.attrib
4807trademark =
4808 element trademark {
4809 trademark.attlist,
4810 (text
4811 | link.char.class
4812 | tech.char.class
4813 | base.char.class
4814 | other.char.class
4815 | inlinegraphic
4816 | inlinemediaobject
4817 | emphasis)*
4818 }
4819# end of trademark.element
4820
4821# Class: More precisely identifies the item the element names
4822trademark.attlist &=
4823 [ a:defaultValue = "trade" ]
4824 attribute class { "service" | "trade" | "registered" | "copyright" }?,
4825 common.attrib,
4826 trademark.role.attrib,
4827 local.trademark.attrib
4828# end of trademark.attlist
4829
4830# end of trademark.module
4831local.wordasword.attrib = empty
4832wordasword.role.attrib = role.attrib
4833wordasword = element wordasword { wordasword.attlist, word.char.mix* }
4834# end of wordasword.element
4835wordasword.attlist &=
4836 common.attrib, wordasword.role.attrib, local.wordasword.attrib
4837# end of wordasword.attlist
4838
4839# end of wordasword.module
4840
4841# Links and cross-references ...........................................
4842local.link.attrib = empty
4843link.role.attrib = role.attrib
4844link = element link { link.attlist, para.char.mix* }
4845# end of link.element
4846
4847# Endterm: ID of element containing text that is to be
4848# fetched from elsewhere in the document to appear as
4849# the content of this element
4850
4851# to linked-to object
4852
4853# Type: Freely assignable parameter
4854link.attlist &=
4855 attribute endterm { xsd:IDREF }?,
4856 linkendreq.attrib,
4857 attribute type { text }?,
4858 common.attrib,
4859 link.role.attrib,
4860 local.link.attrib
4861# end of link.attlist
4862
4863# end of link.module
4864local.olink.attrib = empty
4865olink.role.attrib = role.attrib
4866olink = element olink { olink.attlist, para.char.mix* }
4867# end of olink.element
4868
4869# TargetDocEnt: Name of an entity to be the target of the link
4870
4871# LinkMode: ID of a ModeSpec containing instructions for
4872# operating on the entity named by TargetDocEnt
4873
4874# LocalInfo: Information that may be passed to ModeSpec
4875
4876# Type: Freely assignable parameter
4877olink.attlist &=
4878 attribute targetdocent { xsd:ENTITY }?,
4879 attribute linkmode { xsd:IDREF }?,
4880 attribute localinfo { text }?,
4881 attribute type { text }?,
4882 attribute targetdoc { text }?,
4883 attribute targetptr { text }?,
4884 common.attrib,
4885 olink.role.attrib,
4886 local.olink.attrib
4887# end of olink.attlist
4888
4889# end of olink.module
4890local.ulink.attrib = empty
4891ulink.role.attrib = role.attrib
4892ulink = element ulink { ulink.attlist, para.char.mix* }
4893# end of ulink.element
4894
4895# URL: uniform resource locator; the target of the ULink
4896
4897# Type: Freely assignable parameter
4898ulink.attlist &=
4899 attribute url { text },
4900 attribute type { text }?,
4901 common.attrib,
4902 ulink.role.attrib,
4903 local.ulink.attrib
4904# end of ulink.attlist
4905
4906# end of ulink.module
4907local.footnoteref.attrib = empty
4908footnoteref.role.attrib = role.attrib
4909footnoteref = element footnoteref { footnoteref.attlist, empty }
4910# end of footnoteref.element
4911
4912# to footnote content supplied elsewhere
4913footnoteref.attlist &=
4914 linkendreq.attrib,
4915 label.attrib,
4916 common.attrib,
4917 footnoteref.role.attrib,
4918 local.footnoteref.attrib
4919# end of footnoteref.attlist
4920
4921# end of footnoteref.module
4922local.xref.attrib = empty
4923xref.role.attrib = role.attrib
4924xref = element xref { xref.attlist, empty }
4925# end of xref.element
4926
4927# Endterm: ID of element containing text that is to be
4928# fetched from elsewhere in the document to appear as
4929# the content of this element
4930
4931# to linked-to object
4932xref.attlist &=
4933 attribute endterm { xsd:IDREF }?,
4934 linkendreq.attrib,
4935 common.attrib,
4936 xref.role.attrib,
4937 local.xref.attrib
4938# end of xref.attlist
4939
4940# end of xref.module
4941
4942# Ubiquitous elements ..................................................
4943local.anchor.attrib = empty
4944anchor.role.attrib = role.attrib
4945anchor = element anchor { anchor.attlist, empty }
4946# end of anchor.element
4947
4948# required
4949
4950# replaces Lang
4951anchor.attlist &=
4952 idreq.attrib,
4953 pagenum.attrib,
4954 remap.attrib,
4955 xreflabel.attrib,
4956 revisionflag.attrib,
4957 effectivity.attrib,
4958 anchor.role.attrib,
4959 local.anchor.attrib
4960# end of anchor.attlist
4961
4962# end of anchor.module
4963local.beginpage.attrib = empty
4964beginpage.role.attrib = role.attrib
4965beginpage = element beginpage { beginpage.attlist, empty }
4966# end of beginpage.element
4967
4968# PageNum: Number of page that begins at this point
4969beginpage.attlist &=
4970 pagenum.attrib,
4971 common.attrib,
4972 beginpage.role.attrib,
4973 local.beginpage.attrib
4974# end of beginpage.attlist
4975
4976# end of beginpage.module
4977
4978# IndexTerms appear in the text flow for generating or linking an
4979# index.
4980local.indexterm.attrib = empty
4981indexterm.role.attrib = role.attrib
4982indexterm =
4983 element indexterm {
4984 indexterm.attlist,
4985 primary?,
4986 ((secondary,
4987 ((tertiary, (see | seealso+)?)
4988 | see
4989 | seealso+)?)
4990 | see
4991 | seealso+)?
4992 }
4993# end of indexterm.element
4994
4995# Scope: Indicates which generated indices the IndexTerm
4996# should appear in: Global (whole document set), Local (this
4997# document only), or All (both)
4998
4999# Significance: Whether this IndexTerm is the most pertinent
5000# of its series (Preferred) or not (Normal, the default)
5001
5002# Class: Indicates type of IndexTerm; default is Singular,
5003# or EndOfRange if StartRef is supplied; StartOfRange value
5004# must be supplied explicitly on starts of ranges
5005
5006# StartRef: ID of the IndexTerm that starts the indexing
5007# range ended by this IndexTerm
5008
5009# Zone: IDs of the elements to which the IndexTerm applies,
5010# and indicates that the IndexTerm applies to those entire
5011# elements rather than the point at which the IndexTerm
5012# occurs
5013indexterm.attlist &=
5014 pagenum.attrib,
5015 attribute scope { "all" | "global" | "local" }?,
5016 [ a:defaultValue = "normal" ]
5017 attribute significance { "preferred" | "normal" }?,
5018 attribute class { "singular" | "startofrange" | "endofrange" }?,
5019 attribute startref { xsd:IDREF }?,
5020 attribute zone { xsd:IDREFS }?,
5021 common.attrib,
5022 indexterm.role.attrib,
5023 local.indexterm.attrib
5024# end of indexterm.attlist
5025
5026# end of indexterm.module
5027local.primsecter.attrib = empty
5028primsecter.role.attrib = role.attrib
5029primary = element primary { primary.attlist, ndxterm.char.mix* }
5030# end of primary.element
5031
5032# SortAs: Alternate sort string for index sorting, e.g.,
5033# "fourteen" for an element containing "14"
5034primary.attlist &=
5035 attribute sortas { text }?,
5036 common.attrib,
5037 primsecter.role.attrib,
5038 local.primsecter.attrib
5039# end of primary.attlist
5040secondary = element secondary { secondary.attlist, ndxterm.char.mix* }
5041# end of secondary.element
5042
5043# SortAs: Alternate sort string for index sorting, e.g.,
5044# "fourteen" for an element containing "14"
5045secondary.attlist &=
5046 attribute sortas { text }?,
5047 common.attrib,
5048 primsecter.role.attrib,
5049 local.primsecter.attrib
5050# end of secondary.attlist
5051tertiary = element tertiary { tertiary.attlist, ndxterm.char.mix* }
5052# end of tertiary.element
5053
5054# SortAs: Alternate sort string for index sorting, e.g.,
5055# "fourteen" for an element containing "14"
5056tertiary.attlist &=
5057 attribute sortas { text }?,
5058 common.attrib,
5059 primsecter.role.attrib,
5060 local.primsecter.attrib
5061# end of tertiary.attlist
5062
5063# end of primsecter.module
5064local.seeseealso.attrib = empty
5065seeseealso.role.attrib = role.attrib
5066see = element see { see.attlist, ndxterm.char.mix* }
5067# end of see.element
5068see.attlist &=
5069 common.attrib, seeseealso.role.attrib, local.seeseealso.attrib
5070# end of see.attlist
5071seealso = element seealso { seealso.attlist, ndxterm.char.mix* }
5072# end of seealso.element
5073seealso.attlist &=
5074 common.attrib, seeseealso.role.attrib, local.seeseealso.attrib
5075# end of seealso.attlist
5076
5077# end of seeseealso.module
5078
5079# end of indexterm.content.module
5080
5081# End of DocBook XML information pool module V4.2 ......................
5082
5083# ......................................................................
diff --git a/etc/schema/dbsoextbl.rnc b/etc/schema/dbsoextbl.rnc
new file mode 100644
index 00000000000..a547586ca17
--- /dev/null
+++ b/etc/schema/dbsoextbl.rnc
@@ -0,0 +1,30 @@
1# Definitions specific to the OASIS XML Exchange Table Model.
2
3# Reference OASIS Exchange Table Model
4include "soextbl.rnc" {
5 # Override definition of start
6 start |= notAllowed
7 # Add common attributes and the Label attribute to Table and
8 # InformalTable.
9 bodyatt = common.attrib, label.attrib, tables.role.attrib
10 # Add common attributes to TGroup, ColSpec, TBody, THead, Row, Entry
11 tbl.tgroup.att = common.attrib
12 tbl.colspec.att = common.attrib
13 tbl.tbody.att = common.attrib
14 tbl.thead.att = common.attrib
15 tbl.row.att = common.attrib
16 tbl.entry.att = common.attrib
17 # Content model for Table.
18 tbl.table.mdl =
19 blockinfo?,
20 formalobject.title.content,
21 ndxterm.class*,
22 textobject*,
23 (graphic+ | mediaobject+ | tgroup+)
24 # Allow either objects or inlines; beware of REs between elements.
25 tbl.entry.mdl = (para.char.mix | tabentry.mix)*
26}
27
28common.table.attribs = bodyatt
29
30# end of table.module
diff --git a/etc/schema/dbstart.rnc b/etc/schema/dbstart.rnc
new file mode 100644
index 00000000000..284f9b5b5a5
--- /dev/null
+++ b/etc/schema/dbstart.rnc
@@ -0,0 +1,23 @@
1# This choice of root elements comes from the 1.0b1 RNG schema at
2# http://www.oasis-open.org/docbook/relaxng/1.0b1/index.shtml
3
4start =
5 set
6 | setindex
7 | book
8 | part
9 | reference
10 | preface
11 | chapter
12 | appendix
13 | article
14 | bibliography
15 | glossary
16 | index
17 | refentry
18 | sect1
19 | sect2
20 | sect3
21 | sect4
22 | sect5
23 | section
diff --git a/etc/schema/docbook-dyntbl.rnc b/etc/schema/docbook-dyntbl.rnc
new file mode 100644
index 00000000000..9bb997ff734
--- /dev/null
+++ b/etc/schema/docbook-dyntbl.rnc
@@ -0,0 +1,18 @@
1# Variant of docbook.rnc that allows the table model to be selected
2# dynamically based on the definitions of cals.table.module and
3# exchange.table.module. See dbdyntbl.rnc.
4
5# Document (root) elements
6include "dbstart.rnc"
7
8# Notation declarations
9include "dbnotn.rnc"
10
11# Information pool
12include "dbpool.rnc"
13
14# Dynamic Table Model
15include "dbdyntbl.rnc"
16
17# Document hierarchy
18include "dbhier.rnc"
diff --git a/etc/schema/docbook-soextbl.rnc b/etc/schema/docbook-soextbl.rnc
new file mode 100644
index 00000000000..945a6219dba
--- /dev/null
+++ b/etc/schema/docbook-soextbl.rnc
@@ -0,0 +1,17 @@
1# Variant of docbook.rnc that uses the OASIS XML Exchange Table Model
2# rather than the CALS Table Model.
3
4# Document (root) elements
5include "dbstart.rnc"
6
7# Notation declarations
8include "dbnotn.rnc"
9
10# Information pool
11include "dbpool.rnc"
12
13# OASIS XML Exchange Table Model
14include "dbsoextbl.rnc"
15
16# Document hierarchy
17include "dbhier.rnc"
diff --git a/etc/schema/docbook.rnc b/etc/schema/docbook.rnc
new file mode 100644
index 00000000000..d10f614b286
--- /dev/null
+++ b/etc/schema/docbook.rnc
@@ -0,0 +1,48 @@
1# Unofficial DocBook RELAX NG Compact Syntax schema
2
3# This file was generated automatically by Trang
4# (http://www.thaiopensource.com/relaxng/trang.html) from the DocBook
5# XML DTD V4.2 (http://www.oasis-open.org/docbook/xml/4.2/), then
6# changing the definition of start, changing the filenames,
7# editing the comments and adding includes of dbstart.rnc
8# and dbcalstbl.rnc.
9
10# The following copyright applies to the DocBook XML DTD V4.2.
11
12# Copyright 1992-2002 HaL Computer Systems, Inc.,
13# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
14# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
15# Organization for the Advancement of Structured Information
16# Standards (OASIS).
17#
18# Permission to use, copy, modify and distribute the DocBook XML DTD
19# and its accompanying documentation for any purpose and without fee
20# is hereby granted in perpetuity, provided that the above copyright
21# notice and this paragraph appear in all copies. The copyright
22# holders make no representation about the suitability of the DTD for
23# any purpose. It is provided "as is" without expressed or implied
24# warranty.
25#
26# If you modify the DocBook DTD in any way, except for declaring and
27# referencing additional sets of general entities and declaring
28# additional notations, label your DTD as a variant of DocBook. See
29# the maintenance documentation for more information.
30#
31# Please direct all questions, bug reports, or suggestions for
32# changes to the docbook@lists.oasis-open.org mailing list. For more
33# information, see http://www.oasis-open.org/docbook/.
34
35# Document (root) elements
36include "dbstart.rnc"
37
38# Notation declarations
39include "dbnotn.rnc"
40
41# Information pool
42include "dbpool.rnc"
43
44# CALS Table Model
45include "dbcalstbl.rnc"
46
47# Document hierarchy
48include "dbhier.rnc"
diff --git a/etc/schema/locate.rnc b/etc/schema/locate.rnc
new file mode 100644
index 00000000000..89230adf9c0
--- /dev/null
+++ b/etc/schema/locate.rnc
@@ -0,0 +1,200 @@
1default namespace this = "http://thaiopensource.com/ns/locating-rules/1.0"
2namespace local = ""
3
4start = locatingRules
5
6locatingRules = element locatingRules { common, rule* }
7
8rule =
9 \include
10 # | group
11 | applyFollowingRules
12 | documentElement
13 # | doctypePublicId
14 | \namespace
15 | uri
16 | transformURI
17 # | typeIdProcessingInstruction
18 | \default
19 | typeId
20 # | typeIdBase
21 | extensionRule
22
23## Group of rules. Useful with xml:base.
24group = element group { common, rule* }
25
26\include =
27 element include {
28 common,
29 attribute rules { xsd:anyURI }
30 }
31
32applyFollowingRules =
33 element applyFollowingRules {
34 common,
35 attribute ruleType {
36 "documentElement"
37 | "doctypePublicId"
38 | "namespace"
39 | "uri"
40 | "transformURI"
41 | "typeIdProcessingInstruction"
42 | "default"
43 }
44 }
45
46documentElement =
47 ## Matches if the prefix and/or local name of document element
48 ## match the values of the prefix and localName attributes.
49 element documentElement {
50 common,
51 nameAtts,
52 targetAtt
53 }
54
55## If there's no prefix attribute, then only the local name must match.
56## If there's no local name attribute, then only the prefix must match.
57nameAtts = (prefixAtt, localNameAtt?) | localNameAtt
58
59## prefix="" matches if the document element has no prefix.
60prefixAtt = attribute prefix { (xsd:NCName - "xmlns") | "" }
61localNameAtt = attribute localName { xsd:NCName - "xmlns" }
62
63doctypePublicId =
64 ## Matches if the document has a DOCTYPE declaration with a public
65 ## identifier that, after normalization, matches the value of the
66 ## publicId attribute.
67 element doctypePublicId {
68 common,
69 attribute publicId { publicIdValue },
70 targetAtt
71 }
72
73publicIdValue =
74 xsd:token {
75 ## Newline and tab are excluded, because pattern applies to
76 ## the post-normalization value.
77 pattern = "[\-'()+,./:=?;!*#@$_%a-zA-Z0-9 ]*"
78 }
79
80# This is separate from documentElement so it can be distinguished
81# by applyFollowingRules.
82\namespace =
83 ## Matches if the document element has a namespace URI equal to the value
84 ## of the ns attribute. A document element with no namespace matches if
85 ## the value of the ns attribute is the empty string.
86 element namespace {
87 common,
88 attribute ns { xsd:string },
89 targetAtt
90 }
91
92uri =
93 ## Matches based on the URI of the document.
94 element uri {
95 common,
96 (resourceAtt | patternAtt),
97 targetAtt
98 }
99
100## Matches if it can be determined that the document resource is
101## the same resource as that identified by the value of the resource
102## attribute. In determining this, the implementation should apply
103## the semantics of the URI scheme used by the URI.
104resourceAtt = attribute resource { xsd:anyURI }
105
106## Matches if the document's URI matches the pattern specified
107## by the pattern attribute. A * in the path component matches
108## zero or more characters other than / (after resolving escapes).
109## If the pattern is a relative URI, it means that there must
110## be some URI such that when the pattern is resolved relative
111## to that URI, it matches the document's URI. Thus an empty
112## pattern will always match.
113patternAtt = attribute pattern { uriPattern }
114
115## A pattern for a URI. Same syntax as a URI, except that a * in
116## the path component has a special meaning.
117uriPattern = xsd:anyURI
118
119transformURI =
120 ## Generates a URI for the related resource by transforming
121 ## the URI of the document. Matches if the transformation
122 ## yields a valid URI that identifies an existing resource.
123 element transformURI {
124 common,
125 ## Semantics are the same as the pattern attribute of the uri element.
126 attribute fromPattern { uriPattern },
127 ## The result of the transformation is produced from the toPattern
128 ## by replacing each * by the string that matched the corresponding
129 ## * in the toPattern. The toPattern is appended to the initial
130 ## part of the document's URI that was not explicitly matched
131 ## by fromPattern.
132 attribute toPattern { uriPattern }
133 }
134
135\default =
136 ## Always matches.
137 element default {
138 common,
139 targetAtt
140 }
141
142## A document can be mapped onto a URI either indirectly via a typeId
143## or directly.
144targetAtt = uriAtt | typeIdAtt
145
146## Specifies the URI of the related resource.
147## xml:base is used if it's relative.
148uriAtt = attribute uri { xsd:anyURI }
149
150## Specifies an identifier of the type of document. typeId and
151## typeIdBase rules will be used to map this to a URI.
152typeIdAtt = attribute typeId { typeIdValue }
153
154## A type identifier can be anything convenient (e.g. a public identifier,
155## a URL or just a string with no formal structure). Whitespace is
156## normalized like a public identifier before comparing type identifiers
157## for equality.
158typeIdValue = xsd:token
159
160typeIdProcessingInstruction =
161 ## Matches if there's a processing instruction in the prolog
162 ## before any DOCTYPE declaration whose target is the value of
163 ## the target attribute. The value of the processing instruction
164 ## is interpreted as a typeId, which will be mapped to a
165 ## URI as normal.
166 element typeIdProcessingInstruction {
167 common,
168 attribute target { xsd:NCName }
169 }
170
171typeId =
172 ## Maps a typeId onto a URI.
173 element typeId {
174 common,
175 attribute id { typeIdValue },
176 targetAtt
177 }
178
179typeIdBase =
180 ## Used to map a typeId onto a URI. First, any URI reserved characters
181 ## are URI encoded. If the append attribute is specified, it is appended.
182 ## This is then treated as a URI. If relative, it is resolved using
183 ## the applicable base URI as usual. If the resulting URI identifies
184 ## an existing resource, then the typeId is mapped to this resource.
185 ## This is intended to be useful with file URIs.
186 element typeIdBase {
187 common,
188 attribute append { xsd:string }?
189 }
190
191extensionRule =
192 element * - this:* {
193 attribute * { text }*, (text|anyElement)*
194 }
195
196anyElement = element * { attribute * { text }*, (text|anyElement)* }
197
198common =
199 # attribute xml:base { xsd:anyURI }?,
200 attribute * - (xml:base|this:*|local:*) { text }*
diff --git a/etc/schema/rdfxml.rnc b/etc/schema/rdfxml.rnc
new file mode 100644
index 00000000000..9730322cfdd
--- /dev/null
+++ b/etc/schema/rdfxml.rnc
@@ -0,0 +1,205 @@
1#
2# RELAX NG Compact Schema for RDF/XML Syntax
3#
4# This schema is for information only and NON-NORMATIVE
5#
6# It is based on one originally written by James Clark in
7# http://lists.w3.org/Archives/Public/www-rdf-comments/2001JulSep/0248.html
8# and updated with later changes.
9#
10
11namespace local = ""
12namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
13datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
14
15
16start = doc
17
18
19# I cannot seem to do this in RNGC so they are expanded in-line
20
21# coreSyntaxTerms = rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
22# syntaxTerms = coreSyntaxTerms | rdf:Description | rdf:li
23# oldTerms = rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
24# nodeElementURIs = * - ( coreSyntaxTerms | rdf:li | oldTerms )
25# propertyElementURIs = * - ( coreSyntaxTerms | rdf:Description | oldTerms )
26# propertyAttributeURIs = * - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
27
28# Also needed to allow rdf:li on all property element productions
29# since we can't capture the rdf:li rewriting to rdf_<n> in relaxng
30
31# Need to add these explicitly
32xmllang = attribute xml:lang { text }
33xmlbase = attribute xml:base { text }
34# and to forbid every other xml:* attribute, element
35
36doc =
37 RDF
38
39RDF =
40 element rdf:RDF {
41 xmllang?, xmlbase?, nodeElementList
42}
43
44nodeElementList =
45 nodeElement*
46
47 # Should be something like:
48 # ws* , ( nodeElement , ws* )*
49 # but RELAXNG does this by default, ignoring whitespace separating tags.
50
51nodeElement =
52 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
53 rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
54 rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID ) {
55 (idAttr | nodeIdAttr | aboutAttr )?, xmllang?, xmlbase?, propertyAttr*, propertyEltList
56 }
57
58 # It is not possible to say "and not things
59 # beginning with _ in the rdf: namespace" in RELAX NG.
60
61ws =
62 " "
63
64 # Not used in this RELAX NG schema; but should be any legal XML
65 # whitespace defined by http://www.w3.org/TR/2000/REC-xml-20001006#NT-S
66
67
68propertyEltList =
69 propertyElt*
70
71 # Should be something like:
72 # ws* , ( propertyElt , ws* )*
73 # but RELAXNG does this by default, ignoring whitespace separating tags.
74
75propertyElt =
76 resourcePropertyElt |
77 literalPropertyElt |
78 parseTypeLiteralPropertyElt |
79 parseTypeResourcePropertyElt |
80 parseTypeCollectionPropertyElt |
81 parseTypeOtherPropertyElt |
82 emptyPropertyElt
83
84resourcePropertyElt =
85 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
86 rdf:resource | rdf:nodeID | rdf:datatype |
87 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
88 xml:* ) {
89 idAttr?, xmllang?, xmlbase?, nodeElement
90 }
91
92literalPropertyElt =
93 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
94 rdf:resource | rdf:nodeID | rdf:datatype |
95 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
96 xml:* ) {
97 (idAttr | datatypeAttr )?, xmllang?, xmlbase?, text
98 }
99
100parseTypeLiteralPropertyElt =
101 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
102 rdf:resource | rdf:nodeID | rdf:datatype |
103 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
104 xml:* ) {
105 idAttr?, parseLiteral, xmllang?, xmlbase?, literal
106 }
107
108parseTypeResourcePropertyElt =
109 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
110 rdf:resource | rdf:nodeID | rdf:datatype |
111 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
112 xml:* ) {
113 idAttr?, parseResource, xmllang?, xmlbase?, propertyEltList
114 }
115
116parseTypeCollectionPropertyElt =
117 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
118 rdf:resource | rdf:nodeID | rdf:datatype |
119 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
120 xml:* ) {
121 idAttr?, xmllang?, xmlbase?, parseCollection, nodeElementList
122 }
123
124parseTypeOtherPropertyElt =
125 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
126 rdf:resource | rdf:nodeID | rdf:datatype |
127 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
128 xml:* ) {
129 idAttr?, xmllang?, xmlbase?, parseOther, any
130 }
131
132emptyPropertyElt =
133 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
134 rdf:resource | rdf:nodeID | rdf:datatype |
135 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
136 xml:* ) {
137 idAttr?, (resourceAttr | nodeIdAttr)?, xmllang?, xmlbase?, propertyAttr*
138 }
139
140idAttr =
141 attribute rdf:ID {
142 IDsymbol
143 }
144
145nodeIdAttr =
146 attribute rdf:nodeID {
147 IDsymbol
148 }
149
150aboutAttr =
151 attribute rdf:about {
152 URI-reference
153 }
154
155propertyAttr =
156 attribute * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
157 rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
158 rdf:Description | rdf:aboutEach |
159 rdf:aboutEachPrefix | rdf:bagID |
160 xml:* ) {
161 string
162 }
163
164resourceAttr =
165 attribute rdf:resource {
166 URI-reference
167 }
168
169datatypeAttr =
170 attribute rdf:datatype {
171 URI-reference
172 }
173
174parseLiteral =
175 attribute rdf:parseType {
176 "Literal"
177 }
178
179parseResource =
180 attribute rdf:parseType {
181 "Resource"
182 }
183
184parseCollection =
185 attribute rdf:parseType {
186 "Collection"
187 }
188
189parseOther =
190 attribute rdf:parseType {
191 text
192 }
193
194URI-reference =
195 string
196
197literal =
198 any
199
200IDsymbol =
201 xsd:NMTOKEN
202
203any =
204 mixed { element * { attribute * { text }*, any }* }
205
diff --git a/etc/schema/relaxng.rnc b/etc/schema/relaxng.rnc
new file mode 100644
index 00000000000..08686ac5598
--- /dev/null
+++ b/etc/schema/relaxng.rnc
@@ -0,0 +1,63 @@
1# RELAX NG XML syntax expressed in RELAX NG Compact syntax.
2
3default namespace rng = "http://relaxng.org/ns/structure/1.0"
4namespace local = ""
5datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
6
7start = pattern
8
9pattern =
10 element element { (nameQName | nameClass), (common & pattern+) }
11 | element attribute { (nameQName | nameClass), (common & pattern?) }
12 | element group|interleave|choice|optional
13 |zeroOrMore|oneOrMore|list|mixed { common & pattern+ }
14 | element ref|parentRef { nameNCName, common }
15 | element empty|notAllowed|text { common }
16 | element data { type, param*, (common & exceptPattern?) }
17 | element value { commonAttributes, type?, xsd:string }
18 | element externalRef { href, common }
19 | element grammar { common & grammarContent* }
20
21param = element param { commonAttributes, nameNCName, xsd:string }
22
23exceptPattern = element except { common & pattern+ }
24
25grammarContent =
26 definition
27 | element div { common & grammarContent* }
28 | element include { href, (common & includeContent*) }
29
30includeContent =
31 definition
32 | element div { common & includeContent* }
33
34definition =
35 element start { combine?, (common & pattern+) }
36 | element define { nameNCName, combine?, (common & pattern+) }
37
38combine = attribute combine { "choice" | "interleave" }
39
40nameClass =
41 element name { commonAttributes, xsd:QName }
42 | element anyName { common & exceptNameClass? }
43 | element nsName { common & exceptNameClass? }
44 | element choice { common & nameClass+ }
45
46exceptNameClass = element except { common & nameClass+ }
47
48nameQName = attribute name { xsd:QName }
49nameNCName = attribute name { xsd:NCName }
50href = attribute href { xsd:anyURI }
51type = attribute type { xsd:NCName }
52
53common = commonAttributes, foreignElement*
54
55commonAttributes =
56 attribute ns { xsd:string }?,
57 attribute datatypeLibrary { xsd:anyURI }?,
58 foreignAttribute*
59
60foreignElement = element * - rng:* { (anyAttribute | text | anyElement)* }
61foreignAttribute = attribute * - (rng:*|local:*) { text }
62anyElement = element * { (anyAttribute | text | anyElement)* }
63anyAttribute = attribute * { text }
diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml
new file mode 100644
index 00000000000..e17b063f6fe
--- /dev/null
+++ b/etc/schema/schemas.xml
@@ -0,0 +1,36 @@
1<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
2 <transformURI fromPattern="*.xml" toPattern="*.rnc"/>
3
4 <uri pattern="*.xsl" typeId="XSLT"/>
5 <uri pattern="*.html" typeId="XHTML"/>
6 <uri pattern="*.rng" typeId="RELAX NG"/>
7 <uri pattern="*.rdf" typeId="RDF"/>
8
9 <namespace ns="http://www.w3.org/1999/XSL/Transform" typeId="XSLT"/>
10 <namespace ns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" typeId="RDF"/>
11 <namespace ns="http://www.w3.org/1999/xhtml" typeId="XHTML"/>
12 <namespace ns="http://relaxng.org/ns/structure/1.0" typeId="RELAX NG"/>
13 <namespace ns="http://thaiopensource.com/ns/locating-rules/1.0"
14 uri="locate.rnc"/>
15
16 <documentElement localName="stylesheet" typeId="XSLT"/>
17 <documentElement prefix="xsl" localName="transform" typeId="XSLT"/>
18
19 <documentElement localName="html" typeId="XHTML"/>
20
21 <documentElement localName="grammar" typeId="RELAX NG"/>
22
23 <documentElement prefix="" localName="article" typeId="DocBook"/>
24 <documentElement prefix="" localName="book" typeId="DocBook"/>
25
26 <documentElement localName="RDF" typeId="RDF"/>
27 <documentElement prefix="rdf" typeId="RDF"/>
28
29 <documentElement localName="locatingRules" uri="locate.rnc"/>
30
31 <typeId id="XSLT" uri="xslt.rnc"/>
32 <typeId id="RELAX NG" uri="relaxng.rnc"/>
33 <typeId id="XHTML" uri="xhtml.rnc"/>
34 <typeId id="DocBook" uri="docbook.rnc"/>
35 <typeId id="RDF" uri="rdfxml.rnc"/>
36</locatingRules>
diff --git a/etc/schema/soextbl.rnc b/etc/schema/soextbl.rnc
new file mode 100644
index 00000000000..2e69127b4a2
--- /dev/null
+++ b/etc/schema/soextbl.rnc
@@ -0,0 +1,260 @@
1# XML EXCHANGE TABLE MODEL DECLARATION MODULE
2
3# This set of declarations defines the XML version of the Exchange
4# Table Model as of the date shown in the Formal Public Identifier
5# (FPI) for this entity.
6#
7# This set of declarations may be referred to using a public external
8# entity declaration and reference as shown in the following three
9# lines:
10#
11# <!ENTITY % calstblx
12# PUBLIC "-//OASIS//DTD XML Exchange Table Model 19990315//EN">
13# %calstblx;
14#
15# If various parameter entities used within this set of declarations
16# are to be given non-default values, the appropriate declarations
17# should be given before calling in this package (i.e., before the
18# "%calstblx;" reference).
19
20# The motivation for this XML version of the Exchange Table Model
21# is simply to create an XML version of the SGML Exchange Table
22# Model. By design, no effort has been made to "improve" the model.
23#
24# This XML version incorporates the logical bare minimum changes
25# necessary to make the Exchange Table Model a valid XML DTD.
26
27# The XML version of the Exchange Table Model differs from
28# the SGML version in the following ways:
29#
30# The following parameter entities have been removed:
31#
32# - tbl.table.excep, tbl.hdft.excep, tbl.row.excep, tbl.entry.excep
33# There are no exceptions in XML. The following normative statement
34# is made in lieu of exceptions: the exchange table model explicitly
35# forbids a table from occurring within another table. If the
36# content model of an entry includes a table element, then this
37# cannot be enforced by the DTD, but it is a deviation from the
38# exchange table model to include a table within a table.
39#
40# - tbl.hdft.name, tbl.hdft.mdl, tbl.hdft.excep, tbl.hdft.att
41# The motivation for these elements was to change the table
42# header/footer elements. Since XML does not allow element declarations
43# to contain name groups, and the exchange table model does not
44# allow a table to contain footers, the continued presence of these
45# attributes seems unnecessary.
46#
47# The following parameter entity has been added:
48#
49# - tbl.thead.att
50# This entity parameterizes the attributes on thead. It replaces
51# the tbl.hdft.att parameter entity.
52#
53# Other miscellaneous changes:
54#
55# - Tag ommission indicators have been removed
56# - Comments have been removed from declarations
57# - NUMBER attributes have been changed to NMTOKEN
58# - NUTOKEN attributes have been to changed to NMTOKEN
59# - Removed the grouping characters around the content model
60# parameter entry for the 'entry' element. This is necessary
61# so that an entry can contain #PCDATA and be defined as an
62# optional, repeatable OR group beginning with #PCDATA.
63
64# This entity includes a set of element and attribute declarations
65# that partially defines the Exchange table model. However, the model
66# is not well-defined without the accompanying natural language
67# description of the semantics (meanings) of these various elements,
68# attributes, and attribute values. The semantic writeup, also available
69# from SGML Open, should be used in conjunction with this entity.
70
71# In order to use the Exchange table model, various parameter entity
72# declarations are required. A brief description is as follows:
73#
74# ENTITY NAME WHERE USED WHAT IT IS
75#
76# %yesorno In ATTLIST of: An attribute declared value
77# almost all elements for a "boolean" attribute
78#
79# %paracon In content model of: The "text" (logical content)
80# <entry> of the model group for <entry>
81#
82# %titles In content model of: The "title" part of the model
83# table element group for the table element
84#
85# %tbl.table.name In declaration of: The name of the "table"
86# table element element
87#
88# %tbl.table-titles.mdl In content model of: The model group for the title
89# table elements part of the content model for
90# table element
91#
92# %tbl.table.mdl In content model of: The model group for the content
93# table elements model for table element,
94# often (and by default) defined
95# in terms of %tbl.table-titles.mdl
96# and tgroup
97#
98# %tbl.table.att In ATTLIST of: Additional attributes on the
99# table element table element
100#
101# %bodyatt In ATTLIST of: Additional attributes on the
102# table element table element (for backward
103# compatibility with the SGML
104# model)
105#
106# %tbl.tgroup.mdl In content model of: The model group for the content
107# <tgroup> model for <tgroup>
108#
109# %tbl.tgroup.att In ATTLIST of: Additional attributes on the
110# <tgroup> <tgroup> element
111#
112# %tbl.thead.att In ATTLIST of: Additional attributes on the
113# <thead> <thead> element
114#
115# %tbl.tbody.att In ATTLIST of: Additional attributes on the
116# <tbody> <tbody> element
117#
118# %tbl.colspec.att In ATTLIST of: Additional attributes on the
119# <colspec> <colspec> element
120#
121# %tbl.row.mdl In content model of: The model group for the content
122# <row> model for <row>
123#
124# %tbl.row.att In ATTLIST of: Additional attributes on the
125# <row> <row> element
126#
127# %tbl.entry.mdl In content model of: The model group for the content
128# <entry> model for <entry>
129#
130# %tbl.entry.att In ATTLIST of: Additional attributes on the
131# <entry> <entry> element
132#
133# This set of declarations will use the default definitions shown below
134# for any of these parameter entities that are not declared before this
135# set of declarations is referenced.
136
137# These definitions are not directly related to the table model, but are
138# used in the default CALS table model and may be defined elsewhere (and
139# prior to the inclusion of this table module) in the referencing DTD.
140
141yesorno = xsd:NMTOKEN
142# no if zero(s), yes if any other value
143pcd = text
144paracon = pcd
145# default for use in entry content
146
147# The parameter entities as defined below change and simplify the CALS table
148# model as published (as part of the Example DTD) in MIL-HDBK-28001. The
149# resulting simplified DTD has support from the SGML Open vendors and is
150# therefore more interoperable among different systems.
151#
152# These following declarations provide the Exchange default definitions
153# for these entities. However, these entities can be redefined (by giving
154# the appropriate parameter entity declaration(s) prior to the reference
155# to this Table Model declaration set entity) to fit the needs of the
156# current application.
157#
158# Note, however, that changes may have significant effect on the ability to
159# interchange table information. These changes may manifest themselves
160# in useability, presentation, and possible structure information degradation.
161tbl.table-titles.mdl = title
162tbl.table-main.mdl = tgroup+
163tbl.table.mdl = tbl.table-titles.mdl | tbl.table-main.mdl
164tbl.table.att = attribute pgwide { yesorno }?
165bodyatt = empty
166tbl.tgroup.mdl = colspec*, thead?, tbody
167tbl.tgroup.att = empty
168tbl.thead.att = empty
169tbl.tbody.att = empty
170tbl.colspec.att = empty
171tbl.row.mdl = entry+
172tbl.row.att = empty
173tbl.entry.mdl = paracon*
174tbl.entry.att = empty
175# ===== Element and attribute declarations follow. =====
176
177# Default declarations previously defined in this entity and
178# referenced below include:
179# ENTITY % tbl.table.name "table"
180# ENTITY % tbl.table-titles.mdl "%titles;,"
181# ENTITY % tbl.table.mdl "%tbl.table-titles; tgroup+"
182# ENTITY % tbl.table.att "
183# pgwide %yesorno; #IMPLIED "
184table = element table { table.attlist, tbl.table.mdl }
185table.attlist &=
186 attribute frame {
187 "top" | "bottom" | "topbot" | "all" | "sides" | "none"
188 }?,
189 attribute colsep { yesorno }?,
190 attribute rowsep { yesorno }?,
191 tbl.table.att,
192 bodyatt
193# Default declarations previously defined in this entity and
194# referenced below include:
195# ENTITY % tbl.tgroup.mdl "colspec*,thead?,tbody"
196# ENTITY % tbl.tgroup.att ""
197tgroup = element tgroup { tgroup.attlist, tbl.tgroup.mdl }
198tgroup.attlist &=
199 attribute cols { xsd:NMTOKEN },
200 attribute colsep { yesorno }?,
201 attribute rowsep { yesorno }?,
202 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
203 tbl.tgroup.att
204# Default declarations previously defined in this entity and
205# referenced below include:
206# ENTITY % tbl.colspec.att ""
207colspec = element colspec { colspec.attlist, empty }
208colspec.attlist &=
209 attribute colnum { xsd:NMTOKEN }?,
210 attribute colname { xsd:NMTOKEN }?,
211 attribute colwidth { text }?,
212 attribute colsep { yesorno }?,
213 attribute rowsep { yesorno }?,
214 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
215 attribute char { text }?,
216 attribute charoff { xsd:NMTOKEN }?,
217 tbl.colspec.att
218# Default declarations previously defined in this entity and
219# referenced below include:
220# ENTITY % tbl.thead.att ""
221thead = element thead { thead.attlist, row+ }
222thead.attlist &=
223 attribute valign { "top" | "middle" | "bottom" }?,
224 tbl.thead.att
225# Default declarations previously defined in this entity and
226# referenced below include:
227# ENTITY % tbl.tbody.att ""
228tbody = element tbody { tbody.attlist, row+ }
229tbody.attlist &=
230 attribute valign { "top" | "middle" | "bottom" }?,
231 tbl.tbody.att
232# Default declarations previously defined in this entity and
233# referenced below include:
234# ENTITY % tbl.row.mdl "entry+"
235# ENTITY % tbl.row.att ""
236row = element row { row.attlist, tbl.row.mdl }
237row.attlist &=
238 attribute rowsep { yesorno }?,
239 attribute valign { "top" | "middle" | "bottom" }?,
240 tbl.row.att
241# Default declarations previously defined in this entity and
242# referenced below include:
243# ENTITY % paracon "#PCDATA"
244# ENTITY % tbl.entry.mdl "(%paracon;)*"
245# ENTITY % tbl.entry.att ""
246entry = element entry { entry.attlist, tbl.entry.mdl }
247entry.attlist &=
248 attribute colname { xsd:NMTOKEN }?,
249 attribute namest { xsd:NMTOKEN }?,
250 attribute nameend { xsd:NMTOKEN }?,
251 attribute morerows { xsd:NMTOKEN }?,
252 attribute colsep { yesorno }?,
253 attribute rowsep { yesorno }?,
254 attribute align { "left" | "right" | "center" | "justify" | "char" }?,
255 attribute char { text }?,
256 attribute charoff { xsd:NMTOKEN }?,
257 attribute valign { "top" | "middle" | "bottom" }?,
258 tbl.entry.att
259title |= notAllowed
260start = table
diff --git a/etc/schema/xhtml-applet.rnc b/etc/schema/xhtml-applet.rnc
new file mode 100644
index 00000000000..115f1cbda7d
--- /dev/null
+++ b/etc/schema/xhtml-applet.rnc
@@ -0,0 +1,19 @@
1# Applet Module
2
3applet =
4 element applet {
5 applet.attlist,
6 # No restrictions on mixed content in TREX.
7 param*,
8 Flow.model
9 }
10applet.attlist =
11 Core.attrib,
12 attribute alt { Text.datatype },
13 attribute archive { text }?,
14 attribute code { text }?,
15 attribute codebase { URI.datatype }?,
16 attribute object { text }?,
17 attribute height { Length.datatype },
18 attribute width { Length.datatype }
19Inline.class |= applet
diff --git a/etc/schema/xhtml-attribs.rnc b/etc/schema/xhtml-attribs.rnc
new file mode 100644
index 00000000000..ef653c70dbb
--- /dev/null
+++ b/etc/schema/xhtml-attribs.rnc
@@ -0,0 +1,14 @@
1# Common Attributes Module
2
3id.attrib = attribute id { ID.datatype }?
4class.attrib = attribute class { NMTOKENS.datatype }?
5title.attrib = attribute title { Text.datatype }?
6Core.attrib = id.attrib, class.attrib, title.attrib
7lang.attrib = attribute xml:lang { LanguageCode.datatype }?
8I18n.attrib = lang.attrib
9Common.attrib = Core.attrib, I18n.attrib
10CommonIdRequired.attrib =
11 attribute id { ID.datatype },
12 class.attrib,
13 title.attrib,
14 I18n.attrib
diff --git a/etc/schema/xhtml-base.rnc b/etc/schema/xhtml-base.rnc
new file mode 100644
index 00000000000..154dfce1c5a
--- /dev/null
+++ b/etc/schema/xhtml-base.rnc
@@ -0,0 +1,5 @@
1# Base Module
2
3base = element base { base.attlist }
4base.attlist = attribute href { URI.datatype }
5head.content &= base?
diff --git a/etc/schema/xhtml-basic-form.rnc b/etc/schema/xhtml-basic-form.rnc
new file mode 100644
index 00000000000..c0a78a1d72e
--- /dev/null
+++ b/etc/schema/xhtml-basic-form.rnc
@@ -0,0 +1,63 @@
1# Simplified Forms Module
2
3form =
4 element form {
5 form.attlist,
6 # Don't use Block.model, because this gets redefined by the
7 # legacy module.
8 Block.class+
9 }
10form.attlist =
11 Common.attrib,
12 attribute action { URI.datatype },
13 attribute method { "get" | "post" }?,
14 attribute enctype { ContentType.datatype }?
15label = element label { label.attlist, Inline.model }
16label.attlist =
17 Common.attrib,
18 attribute for { IDREF.datatype }?,
19 attribute accesskey { Character.datatype }?
20input = element input { input.attlist }
21input.attlist =
22 Common.attrib,
23 attribute type { InputType.class }?,
24 attribute name { text }?,
25 attribute value { text }?,
26 attribute checked { "checked" }?,
27 attribute size { text }?,
28 attribute maxlength { Number.datatype }?,
29 attribute src { URI.datatype }?,
30 attribute accesskey { Character.datatype }?
31InputType.class =
32 "text"
33 | "password"
34 | "checkbox"
35 | "radio"
36 | "submit"
37 | "reset"
38 | "hidden"
39select = element select { select.attlist, option+ }
40select.attlist =
41 Common.attrib,
42 attribute name { text }?,
43 attribute size { Number.datatype }?,
44 attribute multiple { "multiple" }?
45option =
46 element option {
47 Common.attrib,
48 attribute selected { "selected" }?,
49 attribute value { text }?,
50 text
51 }
52textarea = element textarea { textarea.attlist }
53textarea.attlist =
54 Common.attrib,
55 attribute name { text }?,
56 attribute rows { Number.datatype },
57 attribute cols { Number.datatype },
58 attribute accesskey { Character.datatype }?,
59 text
60Form.class = form
61Formctrl.class = input | label | select | textarea
62Block.class |= Form.class
63Inline.class |= Formctrl.class
diff --git a/etc/schema/xhtml-basic-table.rnc b/etc/schema/xhtml-basic-table.rnc
new file mode 100644
index 00000000000..97e10a56743
--- /dev/null
+++ b/etc/schema/xhtml-basic-table.rnc
@@ -0,0 +1,28 @@
1# Basic Tables Module
2
3table = element table { table.attlist, caption?, tr+ }
4table.attlist =
5 Common.attrib,
6 attribute summary { Text.datatype }?
7caption = element caption { caption.attlist, Inline.model }
8caption.attlist = Common.attrib
9tr = element tr { tr.attlist, (th | td)+ }
10tr.attlist = Common.attrib, CellHAlign.attrib, CellVAlign.attrib
11th = element th { th.attlist, Flow.model }
12th.attlist = Cell.attrib
13td = element td { td.attlist, Flow.model }
14td.attlist = Cell.attrib
15Cell.attrib =
16 Common.attrib,
17 attribute abbr { Text.datatype }?,
18 attribute axis { text }?,
19 attribute headers { IDREFS.datatype }?,
20 scope.attrib,
21 attribute rowspan { Number.datatype }?,
22 attribute colspan { Number.datatype }?,
23 CellHAlign.attrib,
24 CellVAlign.attrib
25CellHAlign.attrib = attribute align { "left" | "center" | "right" }?
26CellVAlign.attrib = attribute valign { "top" | "middle" | "bottom" }?
27scope.attrib = attribute scope { "row" | "col" }?
28Block.class |= table
diff --git a/etc/schema/xhtml-bdo.rnc b/etc/schema/xhtml-bdo.rnc
new file mode 100644
index 00000000000..5658be36ecb
--- /dev/null
+++ b/etc/schema/xhtml-bdo.rnc
@@ -0,0 +1,7 @@
1# Bi-directional Module
2
3bdo = element bdo { bdo.attlist, Inline.model }
4bdo.attlist = Core.attrib, lang.attrib, dir.attrib
5dir.attrib = attribute dir { "ltr" | "rtl" }
6I18n.attrib &= dir.attrib?
7Inline.class |= bdo
diff --git a/etc/schema/xhtml-csismap.rnc b/etc/schema/xhtml-csismap.rnc
new file mode 100644
index 00000000000..abd51f1a441
--- /dev/null
+++ b/etc/schema/xhtml-csismap.rnc
@@ -0,0 +1,29 @@
1# Client-side Image Map Module
2
3area = element area { area.attlist }
4area.attlist =
5 Common.attrib,
6 attribute href { URI.datatype }?,
7 shape.attrib,
8 coords.attrib,
9 attribute nohref { "nohref" }?,
10 attribute alt { Text.datatype },
11 attribute tabindex { Number.datatype }?,
12 attribute accesskey { Character.datatype }?
13map =
14 element map {
15 map.attlist,
16 (# This does not use Block.mix
17 # because loose.dtd doesn't use %Flow;
18 Block.class
19 | area)+
20 }
21map.attlist = CommonIdRequired.attrib
22a.attlist &= shape.attrib, coords.attrib
23img.attlist &= usemap.attlist
24object.attlist &= usemap.attlist
25usemap.attlist = attribute usemap { IDREF.datatype }?
26shape.attrib =
27 attribute shape { "rect" | "circle" | "poly" | "default" }?
28coords.attrib = attribute coords { text }?
29Inline.class |= map
diff --git a/etc/schema/xhtml-datatypes.rnc b/etc/schema/xhtml-datatypes.rnc
new file mode 100644
index 00000000000..596598039dd
--- /dev/null
+++ b/etc/schema/xhtml-datatypes.rnc
@@ -0,0 +1,47 @@
1# Datatypes Module
2
3# Length defined for cellpadding/cellspacing
4
5# nn for pixels or nn% for percentage length
6Length.datatype = text
7# space-separated list of link types
8LinkTypes.datatype = NMTOKENS.datatype
9# single or comma-separated list of media descriptors
10MediaDesc.datatype = text
11# pixel, percentage, or relative
12MultiLength.datatype = text
13# one or more digits (NUMBER)
14Number.datatype = text
15# integer representing length in pixels
16Pixels.datatype = text
17# script expression
18Script.datatype = text
19# textual content
20Text.datatype = text
21# Imported Datatypes ................................
22
23# a single character from [ISO10646]
24Character.datatype = text
25# a character encoding, as per [RFC2045]
26Charset.datatype = text
27# a space separated list of character encodings, as per [RFC2045]
28Charsets.datatype = text
29# media type, as per [RFC2045]
30ContentType.datatype = text
31# comma-separated list of media types, as per [RFC2045]
32ContentTypes.datatype = text
33# date and time information. ISO date format
34Datetime.datatype = text
35# formal public identifier, as per [ISO8879]
36FPI.datatype = text
37# a language code, as per [RFC1766]
38LanguageCode.datatype = xsd:language
39# a Uniform Resource Identifier, see [URI]
40URI.datatype = xsd:anyURI
41# a space-separated list of Uniform Resource Identifiers, see [URI]
42URIs.datatype = text
43NMTOKEN.datatype = xsd:NMTOKEN
44NMTOKENS.datatype = xsd:NMTOKENS
45ID.datatype = xsd:ID
46IDREF.datatype = xsd:IDREF
47IDREFS.datatype = xsd:IDREFS
diff --git a/etc/schema/xhtml-edit.rnc b/etc/schema/xhtml-edit.rnc
new file mode 100644
index 00000000000..4301fc27f74
--- /dev/null
+++ b/etc/schema/xhtml-edit.rnc
@@ -0,0 +1,12 @@
1# Edit Module
2
3del = element del { del.attlist, Inline.model }
4del.attlist = Edit.attrib
5ins = element ins { ins.attlist, Inline.model }
6ins.attlist = Edit.attrib
7Edit.attrib =
8 attribute cite { URI.datatype }?,
9 attribute datetime { Datetime.datatype }?
10Edit.class = del | ins
11Inline.class |= Edit.class
12Block.class |= Edit.class
diff --git a/etc/schema/xhtml-events.rnc b/etc/schema/xhtml-events.rnc
new file mode 100644
index 00000000000..536874201e1
--- /dev/null
+++ b/etc/schema/xhtml-events.rnc
@@ -0,0 +1,47 @@
1# Events Module
2
3a.attlist &=
4 attribute onblur { Script.datatype }?,
5 attribute onfocus { Script.datatype }?
6area.attlist &=
7 attribute onblur { Script.datatype }?,
8 attribute onfocus { Script.datatype }?
9form.attlist &=
10 attribute onreset { Script.datatype }?,
11 attribute onsubmit { Script.datatype }?
12body.attlist &=
13 attribute onload { Script.datatype }?,
14 attribute onunload { Script.datatype }?
15label.attlist &=
16 attribute onblur { Script.datatype }?,
17 attribute onfocus { Script.datatype }?
18input.attlist &=
19 attribute onblur { Script.datatype }?,
20 attribute onchange { Script.datatype }?,
21 attribute onfocus { Script.datatype }?,
22 attribute onselect { Script.datatype }?
23select.attlist &=
24 attribute onblur { Script.datatype }?,
25 attribute onchange { Script.datatype }?,
26 attribute onfocus { Script.datatype }?
27textarea.attlist &=
28 attribute onblur { Script.datatype }?,
29 attribute onchange { Script.datatype }?,
30 attribute onfocus { Script.datatype }?,
31 attribute onselect { Script.datatype }?
32button.attlist &=
33 attribute onblur { Script.datatype }?,
34 attribute onfocus { Script.datatype }?
35Events.attrib =
36 attribute onclick { Script.datatype }?,
37 attribute ondblclick { Script.datatype }?,
38 attribute onmousedown { Script.datatype }?,
39 attribute onmouseup { Script.datatype }?,
40 attribute onmouseover { Script.datatype }?,
41 attribute onmousemove { Script.datatype }?,
42 attribute onmouseout { Script.datatype }?,
43 attribute onkeypress { Script.datatype }?,
44 attribute onkeydown { Script.datatype }?,
45 attribute onkeyup { Script.datatype }?
46Common.attrib &= Events.attrib
47CommonIdRequired.attrib &= Events.attrib
diff --git a/etc/schema/xhtml-form.rnc b/etc/schema/xhtml-form.rnc
new file mode 100644
index 00000000000..f5544190b01
--- /dev/null
+++ b/etc/schema/xhtml-form.rnc
@@ -0,0 +1,49 @@
1# Forms Module
2
3# Unlike the DTD implementation, this builds on the basic-form module
4
5include "xhtml-basic-form.rnc" {
6 select = element select { select.attlist, (option | optgroup)+ }
7}
8form.attlist &=
9 attribute accept-charset { Charsets.datatype }?,
10 attribute accept { ContentTypes.datatype }?
11input.attlist &=
12 attribute disabled { "disabled" }?,
13 attribute readonly { "readonly" }?,
14 attribute alt { text }?,
15 attribute tabindex { Number.datatype }?,
16 attribute accept { ContentTypes.datatype }?
17InputType.class |= "image" | "button"
18select.attlist &=
19 attribute disabled { "disabled" }?,
20 attribute tabindex { Number.datatype }?
21option.attlist &=
22 attribute disabled { "disabled" }?,
23 attribute label { Text.datatype }?
24optgroup = element optgroup { optgroup.attlist, option+ }
25optgroup.attlist =
26 Common.attrib,
27 attribute disabled { "disabled" }?,
28 attribute label { Text.datatype }
29textarea.attlist &=
30 attribute disabled { "disabled" }?,
31 attribute readonly { "readonly" }?,
32 attribute tabindex { Number.datatype }?
33fieldset = element fieldset { fieldset.attlist, legend, Flow.model }
34fieldset.attlist = Common.attrib
35button = element button { button.attlist, Flow.model }
36button.attlist =
37 Common.attrib,
38 attribute name { text }?,
39 attribute value { text }?,
40 attribute type { "button" | "submit" | "reset" }?,
41 attribute disabled { "disabled" }?,
42 attribute tabindex { Number.datatype }?,
43 attribute accesskey { Character.datatype }?
44legend = element legend { legend.attlist, Inline.model }
45legend.attlist =
46 Common.attrib,
47 attribute accesskey { Character.datatype }?
48Form.class |= fieldset
49Formctrl.class |= button
diff --git a/etc/schema/xhtml-frames.rnc b/etc/schema/xhtml-frames.rnc
new file mode 100644
index 00000000000..9b9f9ba1465
--- /dev/null
+++ b/etc/schema/xhtml-frames.rnc
@@ -0,0 +1,26 @@
1# Frames Module
2
3include "xhtml-struct.rnc" {
4 html = element html { html.attlist, head, frameset }
5}
6frameset =
7 element frameset {
8 frameset.attlist,
9 ((frameset | frame)+ & noframes?)
10 }
11frameset.attlist =
12 Core.attrib,
13 attribute cols { MultiLength.datatype }?,
14 attribute rows { MultiLength.datatype }?
15frame = element frame { frame.attlist }
16frame.attlist =
17 Core.attrib,
18 attribute longdesc { URI.datatype }?,
19 attribute src { URI.datatype }?,
20 attribute frameborder { "1" | "0" }?,
21 attribute marginwidth { Pixels.datatype }?,
22 attribute marginheight { Pixels.datatype }?,
23 attribute noresize { "noresize" }?,
24 attribute scrolling { "yes" | "no" | "auto" }?
25noframes = element noframes { noframes.attlist, body }
26noframes.attlist = Common.attrib
diff --git a/etc/schema/xhtml-hypertext.rnc b/etc/schema/xhtml-hypertext.rnc
new file mode 100644
index 00000000000..82e7686d648
--- /dev/null
+++ b/etc/schema/xhtml-hypertext.rnc
@@ -0,0 +1,16 @@
1# Hypertext Module
2
3# Depends on text module.
4
5a = element a { a.attlist, Inline.model }
6a.attlist =
7 Common.attrib,
8 attribute href { URI.datatype }?,
9 attribute charset { Charset.datatype }?,
10 attribute type { ContentType.datatype }?,
11 attribute hreflang { LanguageCode.datatype }?,
12 attribute rel { LinkTypes.datatype }?,
13 attribute rev { LinkTypes.datatype }?,
14 attribute accesskey { Character.datatype }?,
15 attribute tabindex { Number.datatype }?
16Inline.class |= a
diff --git a/etc/schema/xhtml-iframe.rnc b/etc/schema/xhtml-iframe.rnc
new file mode 100644
index 00000000000..bbcdd441bb3
--- /dev/null
+++ b/etc/schema/xhtml-iframe.rnc
@@ -0,0 +1,14 @@
1# Iframe Module
2
3iframe = element iframe { iframe.attlist, Flow.model }
4iframe.attlist =
5 Core.attrib,
6 attribute longdesc { URI.datatype }?,
7 attribute src { URI.datatype }?,
8 attribute frameborder { "1" | "0" }?,
9 attribute width { Length.datatype }?,
10 attribute height { Length.datatype }?,
11 attribute marginwidth { Pixels.datatype }?,
12 attribute marginheight { Pixels.datatype }?,
13 attribute scrolling { "yes" | "no" | "auto" }?
14Inline.class |= iframe
diff --git a/etc/schema/xhtml-image.rnc b/etc/schema/xhtml-image.rnc
new file mode 100644
index 00000000000..e1d6e5662f7
--- /dev/null
+++ b/etc/schema/xhtml-image.rnc
@@ -0,0 +1,11 @@
1# Image Module
2
3img = element img { img.attlist }
4img.attlist =
5 Common.attrib,
6 attribute src { URI.datatype },
7 attribute alt { Text.datatype },
8 attribute longdesc { URI.datatype }?,
9 attribute height { Length.datatype }?,
10 attribute width { Length.datatype }?
11Inline.class |= img
diff --git a/etc/schema/xhtml-inlstyle.rnc b/etc/schema/xhtml-inlstyle.rnc
new file mode 100644
index 00000000000..aa69b75ab61
--- /dev/null
+++ b/etc/schema/xhtml-inlstyle.rnc
@@ -0,0 +1,3 @@
1# Inline Style Module
2
3Core.attrib &= attribute style { text }?
diff --git a/etc/schema/xhtml-legacy.rnc b/etc/schema/xhtml-legacy.rnc
new file mode 100644
index 00000000000..b15061f6d9b
--- /dev/null
+++ b/etc/schema/xhtml-legacy.rnc
@@ -0,0 +1,100 @@
1# Legacy Module
2
3lang.attrib &= attribute lang { LanguageCode.datatype }?
4basefont = element basefont { basefont.attlist }
5basefont.attlist = id.attrib, Font.attrib
6center = element center { center.attlist, Flow.model }
7center.attlist = Common.attrib
8font = element font { font.attlist, Inline.model }
9font.attlist = Core.attrib, I18n.attrib, Font.attrib
10Font.attrib =
11 attribute size { text }?,
12 attribute color { Color.datatype }?,
13 attribute face { text }?
14s = element s { s.attlist, Inline.model }
15s.attlist = Common.attrib
16strike = element strike { strike.attlist, Inline.model }
17strike.attlist = Common.attrib
18u = element u { u.attlist, Inline.model }
19u.attlist = Common.attrib
20dir = element dir { dir.attlist, li.noblock+ }
21dir.attlist =
22 Common.attrib,
23 attribute compact { "compact" }?
24menu = element menu { menu.attlist, li.noblock+ }
25menu.attlist =
26 Common.attrib,
27 attribute compact { "compact" }?
28li.noblock = element li { li.attlist, Inline.model }
29isindex = element isindex { isindex.attlist }
30isindex.attlist =
31 Core.attrib,
32 I18n.attrib,
33 attribute prompt { Text.datatype }?
34applet.attlist &=
35 attribute align { "top" | "middle" | "bottom" | "left" | "right" }?,
36 attribute hspace { Pixels.datatype }?,
37 attribute vspace { Pixels.datatype }?
38body.attlist &=
39 attribute background { URI.datatype }?,
40 attribute bgcolor { Color.datatype }?,
41 attribute text { Color.datatype }?,
42 attribute link { Color.datatype }?,
43 attribute vlink { Color.datatype }?,
44 attribute alink { Color.datatype }?
45br.attlist &= attribute clear { "left" | "all" | "right" | "none" }?
46caption.attlist &= align.attrib
47div.attlist &= align.attrib
48# Not in the CR, but surely an error.
49dl.attlist &= attribute compact { "compact" }?
50Heading.attrib &= align.attrib
51hr.attlist &=
52 attribute align { "left" | "center" | "right" }?,
53 attribute noshade { "noshade" }?,
54 attribute size { Pixels.datatype }?,
55 attribute width { Pixels.datatype }?
56img.attlist &=
57 attribute align { "top" | "middle" | "bottom" | "left" | "right" }?,
58 attribute border { Pixels.datatype }?,
59 attribute hspace { Pixels.datatype }?,
60 attribute vspace { Pixels.datatype }?
61input.attlist &= align.attrib
62legend.attlist &=
63 attribute align { "top" | "bottom" | "left" | "right" }?
64li.attlist &=
65 attribute type { text }?,
66 attribute value { text }?
67object.attlist &=
68 attribute align { "top" | "middle" | "bottom" | "left" | "right" }?,
69 attribute border { Pixels.datatype }?,
70 attribute hspace { Pixels.datatype }?,
71 attribute vspace { Pixels.datatype }?
72ol.attlist &=
73 attribute type { text }?,
74 attribute compact { "compact" }?,
75 attribute start { text }?
76p.attlist &= align.attrib
77pre.attlist &= attribute width { Length.datatype }?
78script.attlist &= attribute language { ContentType.datatype }?
79table.attlist &=
80 align.attrib,
81 attribute bgcolor { Color.datatype }?
82tr.attlist &= attribute bgcolor { Color.datatype }?
83Cell.attrib &=
84 attribute nowrap { "nowrap" }?,
85 attribute bgcolor { Color.datatype }?,
86 attribute width { Pixels.datatype }?,
87 attribute height { Pixels.datatype }?
88ul.attlist &=
89 attribute type { text }?,
90 attribute compact { "compact" }?
91align.attrib = attribute align { "left" | "all" | "right" | "none" }?
92Color.datatype = text
93Inline.class |= font | basefont | s | strike | u
94Block.class |= center | isindex
95List.class |= dir | menu
96head.content &= isindex?
97Block.mix |= text | Inline.class
98# With the legacy module and the frames modules, the html
99# element can contain either body or frameset.
100frameset |= body
diff --git a/etc/schema/xhtml-link.rnc b/etc/schema/xhtml-link.rnc
new file mode 100644
index 00000000000..9d0d6f1cc75
--- /dev/null
+++ b/etc/schema/xhtml-link.rnc
@@ -0,0 +1,13 @@
1# Link Module
2
3link = element link { link.attlist }
4link.attlist =
5 Common.attrib,
6 attribute charset { Charset.datatype }?,
7 attribute href { URI.datatype }?,
8 attribute hreflang { LanguageCode.datatype }?,
9 attribute type { ContentType.datatype }?,
10 attribute rel { LinkTypes.datatype }?,
11 attribute rev { LinkTypes.datatype }?,
12 attribute media { MediaDesc.datatype }?
13head.content &= link*
diff --git a/etc/schema/xhtml-list.rnc b/etc/schema/xhtml-list.rnc
new file mode 100644
index 00000000000..8b994041eaa
--- /dev/null
+++ b/etc/schema/xhtml-list.rnc
@@ -0,0 +1,16 @@
1# List Module
2
3dl = element dl { dl.attlist, (dt | dd)+ }
4dl.attlist = Common.attrib
5dt = element dt { dt.attlist, Inline.model }
6dt.attlist = Common.attrib
7dd = element dd { dd.attlist, Flow.model }
8dd.attlist = Common.attrib
9ol = element ol { ol.attlist, li+ }
10ol.attlist = Common.attrib
11ul = element ul { ul.attlist, li+ }
12ul.attlist = Common.attrib
13li = element li { li.attlist, Flow.model }
14li.attlist = Common.attrib
15List.class = ul | ol | dl
16Block.class |= List.class
diff --git a/etc/schema/xhtml-meta.rnc b/etc/schema/xhtml-meta.rnc
new file mode 100644
index 00000000000..ab0b5eb318a
--- /dev/null
+++ b/etc/schema/xhtml-meta.rnc
@@ -0,0 +1,10 @@
1# Meta Module
2
3meta = element meta { meta.attlist }
4meta.attlist =
5 I18n.attrib,
6 attribute http-equiv { NMTOKEN.datatype }?,
7 attribute name { NMTOKEN.datatype }?,
8 attribute content { text }?,
9 attribute scheme { text }?
10head.content &= meta*
diff --git a/etc/schema/xhtml-nameident.rnc b/etc/schema/xhtml-nameident.rnc
new file mode 100644
index 00000000000..ef4ad7065e7
--- /dev/null
+++ b/etc/schema/xhtml-nameident.rnc
@@ -0,0 +1,10 @@
1# Name Identification Module
2
3a.attlist &= name.attlist
4applet.attlist &= name.attlist
5form.attlist &= name.attlist
6frame.attrib &= name.attlist
7iframe.attlist &= name.attlist
8img.attlist &= name.attlist
9map.attlist &= name.attlist
10name.attlist = attribute name { text }?
diff --git a/etc/schema/xhtml-object.rnc b/etc/schema/xhtml-object.rnc
new file mode 100644
index 00000000000..ac65238db9d
--- /dev/null
+++ b/etc/schema/xhtml-object.rnc
@@ -0,0 +1,24 @@
1# Object Module
2
3object =
4 element object {
5 object.attlist,
6 # No restrictions on mixed content in TREX.
7 param*,
8 Flow.model
9 }
10object.attlist =
11 Common.attrib,
12 attribute declare { "declare" }?,
13 attribute classid { URI.datatype }?,
14 attribute codebase { URI.datatype }?,
15 attribute data { URI.datatype }?,
16 attribute type { ContentType.datatype }?,
17 attribute codetype { ContentType.datatype }?,
18 attribute archive { URIs.datatype }?,
19 attribute standby { Text.datatype }?,
20 attribute height { Length.datatype }?,
21 attribute width { Length.datatype }?,
22 attribute name { text }?,
23 attribute tabindex { Number.datatype }?
24Inline.class |= object
diff --git a/etc/schema/xhtml-param.rnc b/etc/schema/xhtml-param.rnc
new file mode 100644
index 00000000000..8a921ca9b34
--- /dev/null
+++ b/etc/schema/xhtml-param.rnc
@@ -0,0 +1,9 @@
1# Param Module
2
3param = element param { param.attlist }
4param.attlist =
5 id.attrib,
6 attribute name { text },
7 attribute value { text }?,
8 attribute valuetype { "data" | "ref" | "object" }?,
9 attribute type { ContentType.datatype }?
diff --git a/etc/schema/xhtml-pres.rnc b/etc/schema/xhtml-pres.rnc
new file mode 100644
index 00000000000..677372b2dd0
--- /dev/null
+++ b/etc/schema/xhtml-pres.rnc
@@ -0,0 +1,18 @@
1hr = element hr { hr.attlist }
2hr.attlist = Common.attrib
3Block.class |= hr
4b = element b { b.attlist, Inline.model }
5b.attlist = Common.attrib
6big = element big { big.attlist, Inline.model }
7big.attlist = Common.attrib
8i = element i { i.attlist, Inline.model }
9i.attlist = Common.attrib
10small = element small { small.attlist, Inline.model }
11small.attlist = Common.attrib
12sub = element sub { sub.attlist, Inline.model }
13sub.attlist = Common.attrib
14sup = element sup { sup.attlist, Inline.model }
15sup.attlist = Common.attrib
16tt = element tt { tt.attlist, Inline.model }
17tt.attlist = Common.attrib
18Inline.class |= b | big | i | small | sub | sup | tt
diff --git a/etc/schema/xhtml-ruby.rnc b/etc/schema/xhtml-ruby.rnc
new file mode 100644
index 00000000000..e55614dfb95
--- /dev/null
+++ b/etc/schema/xhtml-ruby.rnc
@@ -0,0 +1,21 @@
1ruby =
2 element ruby {
3 ruby.attlist,
4 ((rb,
5 (rt | (rp, rt, rp)))
6 | (rbc, rtc, rtc?))
7 }
8ruby.attlist = Common.attrib
9rbc = element rbc { rbc.attlist, rb+ }
10rbc.attlist = Common.attrib
11rtc = element rtc { rtc.attlist, rt+ }
12rtc.attlist = Common.attrib
13rb = element rb { rb.attlist, Inline.model }
14rb.attlist = Common.attrib
15rt = element rt { rt.attlist, Inline.model }
16rt.attlist =
17 Common.attrib,
18 attribute rt { Number.datatype }?
19rp = element rp { rp.attlist, text }
20rp.attlist = Common.attrib
21Inline.class |= ruby
diff --git a/etc/schema/xhtml-script.rnc b/etc/schema/xhtml-script.rnc
new file mode 100644
index 00000000000..fcf35b02714
--- /dev/null
+++ b/etc/schema/xhtml-script.rnc
@@ -0,0 +1,15 @@
1# Script Module
2
3script = element script { script.attlist, text }
4script.attlist =
5 attribute charset { Charset.datatype }?,
6 attribute type { ContentType.datatype },
7 attribute src { URI.datatype }?,
8 attribute defer { "defer" }?,
9 attribute xml:space { "preserve" }?
10noscript = element noscript { noscript.attlist, Block.model }
11noscript.attlist = Common.attrib
12head.content &= script*
13Script.class = noscript | script
14Inline.class |= Script.class
15Block.class |= Script.class
diff --git a/etc/schema/xhtml-ssismap.rnc b/etc/schema/xhtml-ssismap.rnc
new file mode 100644
index 00000000000..21a7496d307
--- /dev/null
+++ b/etc/schema/xhtml-ssismap.rnc
@@ -0,0 +1,5 @@
1# Server-side Image Map Module
2
3# Depends on image module.
4
5img.attlist &= attribute ismap { "ismap" }?
diff --git a/etc/schema/xhtml-struct.rnc b/etc/schema/xhtml-struct.rnc
new file mode 100644
index 00000000000..4c919c2371a
--- /dev/null
+++ b/etc/schema/xhtml-struct.rnc
@@ -0,0 +1,14 @@
1# Structure Module
2
3start = html
4title = element title { title.attlist, text }
5title.attlist = I18n.attrib
6head = element head { head.attlist, head.content }
7head.attlist = I18n.attrib, profile.attlist
8head.content = title
9profile.attlist = attribute profile { URI.datatype }?
10body = element body { body.attlist, Block.model }
11body.attlist = Common.attrib
12html = element html { html.attlist, head, body }
13html.attlist = XHTML.version.attrib, I18n.attrib
14XHTML.version.attrib = attribute version { FPI.datatype }?
diff --git a/etc/schema/xhtml-style.rnc b/etc/schema/xhtml-style.rnc
new file mode 100644
index 00000000000..93a52d5e2ad
--- /dev/null
+++ b/etc/schema/xhtml-style.rnc
@@ -0,0 +1,10 @@
1# Style Module
2
3style = element style { style.attlist, text }
4style.attlist =
5 title.attrib,
6 I18n.attrib,
7 attribute type { ContentType.datatype },
8 attribute media { MediaDesc.datatype }?,
9 attribute xml:space { "preserve" }?
10head.content &= style*
diff --git a/etc/schema/xhtml-table.rnc b/etc/schema/xhtml-table.rnc
new file mode 100644
index 00000000000..70055b1598f
--- /dev/null
+++ b/etc/schema/xhtml-table.rnc
@@ -0,0 +1,67 @@
1# Tables Module
2
3# This builds on the basic tables module, unlike with the DTD
4# implementation.
5
6include "xhtml-basic-table.rnc" {
7 table =
8 element table {
9 table.attlist,
10 caption?,
11 (col* | colgroup*),
12 ((thead?, tfoot?, tbody+) | tr+)
13 }
14 th = element th { th.attlist, Flow.model }
15 td = element td { td.attlist, Flow.model }
16 CellHAlign.attrib =
17 attribute align {
18 "left" | "center" | "right" | "justify" | "char"
19 }?,
20 attribute char { Character.datatype }?,
21 attribute charoff { Length.datatype }?
22 CellVAlign.attrib =
23 attribute valign { "top" | "middle" | "bottom" | "baseline" }?
24 scope.attrib =
25 attribute scope { "row" | "col" | "rowgroup" | "colgroup" }?
26}
27table.attlist &=
28 attribute width { Length.datatype }?,
29 attribute border { Pixels.datatype }?,
30 frame.attrib,
31 rules.attrib,
32 attribute cellspacing { Length.datatype }?,
33 attribute cellpadding { Length.datatype }?
34col = element col { col.attlist }
35col.attlist =
36 Common.attrib,
37 attribute span { Number.datatype }?,
38 attribute width { MultiLength.datatype }?,
39 CellHAlign.attrib,
40 CellVAlign.attrib
41colgroup = element colgroup { colgroup.attlist, col* }
42colgroup.attlist =
43 Common.attrib,
44 attribute span { Number.datatype }?,
45 attribute width { MultiLength.datatype }?,
46 CellHAlign.attrib,
47 CellVAlign.attrib
48tbody = element tbody { tbody.attlist, tr+ }
49tbody.attlist = Common.attrib, CellHAlign.attrib, CellVAlign.attrib
50thead = element thead { thead.attlist, tr+ }
51thead.attlist = Common.attrib, CellHAlign.attrib, CellVAlign.attrib
52tfoot = element tfoot { tfoot.attlist, tr+ }
53tfoot.attlist = Common.attrib, CellHAlign.attrib, CellVAlign.attrib
54frame.attrib =
55 attribute frame {
56 "void"
57 | "above"
58 | "below"
59 | "hsides"
60 | "lhs"
61 | "rhs"
62 | "vsides"
63 | "box"
64 | "border"
65 }?
66rules.attrib =
67 attribute rules { "none" | "groups" | "rows" | "cols" | "all" }?
diff --git a/etc/schema/xhtml-target.rnc b/etc/schema/xhtml-target.rnc
new file mode 100644
index 00000000000..505b37963a9
--- /dev/null
+++ b/etc/schema/xhtml-target.rnc
@@ -0,0 +1,8 @@
1# Target Module
2
3a.attlist &= target.attrib
4area.attlist &= target.attrib
5base.attlist &= target.attrib
6link.attrib &= target.attrib
7form.attlist &= target.attrib
8target.attrib = attribute target { text }?
diff --git a/etc/schema/xhtml-text.rnc b/etc/schema/xhtml-text.rnc
new file mode 100644
index 00000000000..c4283d44179
--- /dev/null
+++ b/etc/schema/xhtml-text.rnc
@@ -0,0 +1,73 @@
1# Text Module
2
3br = element br { br.attlist, empty }
4br.attlist = Core.attrib
5span = element span { span.attlist, Inline.model }
6span.attlist = Common.attrib
7abbr = element abbr { abbr.attlist, Inline.model }
8abbr.attlist = Common.attrib
9acronym = element acronym { acronym.attlist, Inline.model }
10acronym.attlist = Common.attrib
11cite = element cite { cite.attlist, Inline.model }
12cite.attlist = Common.attrib
13code = element code { code.attlist, Inline.model }
14code.attlist = Common.attrib
15dfn = element dfn { dfn.attlist, Inline.model }
16dfn.attlist = Common.attrib
17em = element em { em.attlist, Inline.model }
18em.attlist = Common.attrib
19kbd = element kbd { kbd.attlist, Inline.model }
20kbd.attlist = Common.attrib
21q = element q { q.attlist, Inline.model }
22q.attlist =
23 Common.attrib,
24 attribute cite { URI.datatype }?
25samp = element samp { samp.attlist, Inline.model }
26samp.attlist = Common.attrib
27strong = element strong { strong.attlist, Inline.model }
28strong.attlist = Common.attrib
29var = element var { var.attlist, Inline.model }
30var.attlist = Common.attrib
31\div = element div { div.attlist, Flow.model }
32div.attlist = Common.attrib
33p = element p { p.attlist, Inline.model }
34p.attlist = Common.attrib
35address = element address { address.attlist, Inline.model }
36address.attlist = Common.attrib
37blockquote = element blockquote { blockquote.attlist, Block.model }
38blockquote.attlist =
39 Common.attrib,
40 attribute cite { URI.datatype }?
41pre = element pre { pre.attlist, Inline.model }
42pre.attlist =
43 Common.attrib,
44 attribute xml:space { "preserve" }?
45h1 = element h1 { Heading.attrib, Heading.content }
46h2 = element h2 { Heading.attrib, Heading.content }
47h3 = element h3 { Heading.attrib, Heading.content }
48h4 = element h4 { Heading.attrib, Heading.content }
49h5 = element h5 { Heading.attrib, Heading.content }
50h6 = element h6 { Heading.attrib, Heading.content }
51Heading.attrib = Common.attrib
52Heading.content = Inline.model
53Heading.class = h1 | h2 | h3 | h4 | h5 | h6
54Block.class = address | blockquote | \div | p | pre | Heading.class
55Inline.class =
56 abbr
57 | acronym
58 | br
59 | cite
60 | code
61 | dfn
62 | em
63 | kbd
64 | q
65 | samp
66 | span
67 | strong
68 | var
69Inline.model = (text | Inline.class)*
70# This is redefined by the legacy module to include inlines.
71Block.mix = Block.class
72Block.model = Block.mix+
73Flow.model = (text | Inline.class | Block.class)*
diff --git a/etc/schema/xhtml.rnc b/etc/schema/xhtml.rnc
new file mode 100644
index 00000000000..3218cd71e5b
--- /dev/null
+++ b/etc/schema/xhtml.rnc
@@ -0,0 +1,37 @@
1# XHTML
2
3# This corresponds to the union of transitional and frameset.
4
5default namespace = "http://www.w3.org/1999/xhtml"
6
7include "xhtml-datatypes.rnc"
8include "xhtml-attribs.rnc"
9# include "xhtml-struct.rnc"
10include "xhtml-frames.rnc"
11include "xhtml-text.rnc"
12include "xhtml-hypertext.rnc"
13include "xhtml-list.rnc"
14include "xhtml-image.rnc"
15include "xhtml-ssismap.rnc"
16include "xhtml-base.rnc"
17include "xhtml-link.rnc"
18include "xhtml-meta.rnc"
19include "xhtml-param.rnc"
20include "xhtml-object.rnc"
21include "xhtml-bdo.rnc"
22include "xhtml-pres.rnc"
23include "xhtml-edit.rnc"
24include "xhtml-applet.rnc"
25# include "xhtml-basic-form.rnc"
26include "xhtml-form.rnc"
27include "xhtml-style.rnc"
28include "xhtml-script.rnc"
29# include "xhtml-basic-table.rnc"
30include "xhtml-table.rnc"
31include "xhtml-csismap.rnc"
32include "xhtml-events.rnc"
33include "xhtml-inlstyle.rnc"
34include "xhtml-target.rnc"
35include "xhtml-iframe.rnc"
36include "xhtml-nameident.rnc"
37include "xhtml-legacy.rnc"
diff --git a/etc/schema/xslt.rnc b/etc/schema/xslt.rnc
new file mode 100644
index 00000000000..eaa332f86b3
--- /dev/null
+++ b/etc/schema/xslt.rnc
@@ -0,0 +1,356 @@
1# $Id: xslt.rnc,v 1.2 2003/08/30 08:09:03 jjc Exp $
2
3# This was mostly generated from the syntax summary in the XSLT
4# Recommendation (using XSLT of course).
5
6# Issues: this validates extension elements as literal result
7# elements, which is overly restrictive.
8
9namespace local = ""
10default namespace xsl = "http://www.w3.org/1999/XSL/Transform"
11
12start =
13 stylesheet.element
14 | transform.element
15 | literal-result-element-as-stylesheet
16version = "1.0"
17top-level-elements.model =
18 (top-level-element.category | top-level-extension)*
19top-level-extension =
20 element * - (xsl:* | local:*) {
21 grammar {
22 start = any
23 any =
24 (attribute * { text }
25 | text
26 | element * { any })*
27 }
28 }
29template.model = (instruction.category | literal-result-element | text)*
30literal-result-element-as-stylesheet =
31 element * - xsl:* {
32 attribute xsl:version { version },
33 literal-result-element-no-version.atts,
34 template.model
35 }
36literal-result-element =
37 element * - xsl:* { literal-result-element.atts, template.model }
38literal-result-element.atts =
39 literal-result-element-no-version.atts,
40 attribute xsl:version { version }?
41literal-result-element-no-version.atts =
42 (attribute * - xsl:* { avt.datatype }
43 | attribute xsl:extension-element-prefixes { prefixes.datatype }
44 | attribute xsl:exclude-result-prefixes { prefixes.datatype }
45 | attribute xsl:use-attribute-sets { qnames.datatype })*
46top-level-element.category =
47 include.element
48 | strip-space.element
49 | preserve-space.element
50 | template.element
51 | namespace-alias.element
52 | attribute-set.element
53 | variable.element
54 | param.element
55 | key.element
56 | decimal-format.element
57 | output.element
58instruction.category =
59 apply-templates.element
60 | apply-imports.element
61 | call-template.element
62 | element.element
63 | attribute.element
64 | text.element
65 | processing-instruction.element
66 | comment.element
67 | copy.element
68 | value-of.element
69 | number.element
70 | for-each.element
71 | if.element
72 | choose.element
73 | variable.element
74 | copy-of.element
75 | message.element
76 | fallback.element
77extension.atts = attribute * - (xsl:* | local:*) { text }*
78stylesheet.element = element stylesheet { stylesheet.model }
79transform.element = element transform { stylesheet.model }
80stylesheet.model =
81 extension.atts,
82 attribute id { xsd:NCName }?,
83 attribute extension-element-prefixes { prefixes.datatype }?,
84 attribute exclude-result-prefixes { prefixes.datatype }?,
85 attribute version { version },
86 (import.element*, top-level-elements.model)
87include.element =
88 element include {
89 extension.atts,
90 attribute href { xsd:anyURI }
91 }
92import.element =
93 element import {
94 extension.atts,
95 attribute href { xsd:anyURI }
96 }
97strip-space.element =
98 element strip-space {
99 extension.atts,
100 attribute elements { wildcards.datatype }
101 }
102preserve-space.element =
103 element preserve-space {
104 extension.atts,
105 attribute elements { wildcards.datatype }
106 }
107template.element =
108 element template {
109 extension.atts,
110 attribute match { pattern.datatype }?,
111 attribute name { qname.datatype }?,
112 attribute priority { number.datatype }?,
113 attribute mode { qname.datatype }?,
114 (param.element*, template.model)
115 }
116apply-templates.element =
117 element apply-templates {
118 extension.atts,
119 attribute select { expression.datatype }?,
120 attribute mode { qname.datatype }?,
121 (sort.element | with-param.element)*
122 }
123apply-imports.element = element apply-imports { extension.atts }
124call-template.element =
125 element call-template {
126 extension.atts,
127 attribute name { qname.datatype },
128 with-param.element*
129 }
130namespace-alias.element =
131 element namespace-alias {
132 extension.atts,
133 attribute stylesheet-prefix { prefix.datatype },
134 attribute result-prefix { prefix.datatype }
135 }
136element.element =
137 element element {
138 extension.atts,
139 attribute name { qname.datatype | expr-avt.datatype },
140 attribute namespace { xsd:anyURI | brace-avt.datatype }?,
141 attribute use-attribute-sets { qnames.datatype }?,
142 template.model
143 }
144attribute.element =
145 element attribute {
146 extension.atts,
147 attribute name { qname.datatype | expr-avt.datatype },
148 attribute namespace { xsd:anyURI | brace-avt.datatype }?,
149 template.model
150 }
151attribute-set.element =
152 element attribute-set {
153 extension.atts,
154 attribute name { qname.datatype },
155 attribute use-attribute-sets { qnames.datatype }?,
156 attribute.element*
157 }
158text.element =
159 element text {
160 extension.atts,
161 attribute disable-output-escaping {
162 xsd:string "yes" | xsd:string "no"
163 }?,
164 text
165 }
166processing-instruction.element =
167 element processing-instruction {
168 extension.atts,
169 attribute name { xsd:NCName | expr-avt.datatype },
170 template.model
171 }
172comment.element = element comment { extension.atts, template.model }
173copy.element =
174 element copy {
175 extension.atts,
176 attribute use-attribute-sets { qnames.datatype }?,
177 template.model
178 }
179value-of.element =
180 element value-of {
181 extension.atts,
182 attribute select { expression.datatype },
183 attribute disable-output-escaping {
184 xsd:string "yes" | xsd:string "no"
185 }?
186 }
187number.element =
188 element number {
189 extension.atts,
190 attribute level {
191 xsd:string "single" | xsd:string "multiple" | xsd:string "any"
192 }?,
193 attribute count { pattern.datatype }?,
194 attribute from { pattern.datatype }?,
195 attribute value { expression.datatype }?,
196 attribute format { avt.datatype }?,
197 attribute lang { xsd:NMTOKEN | expr-avt.datatype }?,
198 attribute letter-value {
199 xsd:string "alphabetic"
200 | xsd:string "traditional"
201 | expr-avt.datatype
202 }?,
203 attribute grouping-separator { char.datatype | expr-avt.datatype }?,
204 attribute grouping-size { number.datatype | expr-avt.datatype }?
205 }
206for-each.element =
207 element for-each {
208 extension.atts,
209 attribute select { expression.datatype },
210 (sort.element*, template.model)
211 }
212if.element =
213 element if {
214 extension.atts,
215 attribute test { expression.datatype },
216 template.model
217 }
218choose.element =
219 element choose { extension.atts, (when.element+, otherwise.element?) }
220when.element =
221 element when {
222 extension.atts,
223 attribute test { expression.datatype },
224 template.model
225 }
226otherwise.element = element otherwise { extension.atts, template.model }
227sort.element =
228 element sort {
229 extension.atts,
230 attribute select { expression.datatype }?,
231 attribute lang { xsd:NMTOKEN | expr-avt.datatype }?,
232 attribute data-type {
233 xsd:string "text"
234 | xsd:string "number"
235 | qname-but-not-ncname.datatype
236 | expr-avt.datatype
237 }?,
238 attribute order {
239 xsd:string "ascending"
240 | xsd:string "descending"
241 | expr-avt.datatype
242 }?,
243 attribute case-order {
244 xsd:string "upper-first"
245 | xsd:string "lower-first"
246 | expr-avt.datatype
247 }?
248 }
249variable.element =
250 element variable {
251 extension.atts,
252 attribute name { qname.datatype },
253 (attribute select { expression.datatype }
254 | template.model)
255 }
256param.element =
257 element param {
258 extension.atts,
259 attribute name { qname.datatype },
260 (attribute select { expression.datatype }
261 | template.model)
262 }
263copy-of.element =
264 element copy-of {
265 extension.atts,
266 attribute select { expression.datatype }
267 }
268with-param.element =
269 element with-param {
270 extension.atts,
271 attribute name { qname.datatype },
272 (attribute select { expression.datatype }
273 | template.model)
274 }
275key.element =
276 element key {
277 extension.atts,
278 attribute name { qname.datatype },
279 attribute match { pattern.datatype },
280 attribute use { expression.datatype }
281 }
282decimal-format.element =
283 element decimal-format {
284 extension.atts,
285 attribute name { qname.datatype }?,
286 attribute decimal-separator { char.datatype }?,
287 attribute grouping-separator { char.datatype }?,
288 attribute infinity { text }?,
289 attribute minus-sign { char.datatype }?,
290 attribute NaN { text }?,
291 attribute percent { char.datatype }?,
292 attribute per-mille { char.datatype }?,
293 attribute zero-digit { char.datatype }?,
294 attribute digit { char.datatype }?,
295 attribute pattern-separator { char.datatype }?
296 }
297message.element =
298 element message {
299 extension.atts,
300 attribute terminate { xsd:string "yes" | xsd:string "no" }?,
301 template.model
302 }
303fallback.element = element fallback { extension.atts, template.model }
304output.element =
305 element output {
306 extension.atts,
307 attribute method {
308 xsd:string "xml"
309 | xsd:string "html"
310 | xsd:string "text"
311 | qname-but-not-ncname.datatype
312 }?,
313 attribute version { xsd:NMTOKEN }?,
314 attribute encoding { text }?,
315 attribute omit-xml-declaration {
316 xsd:string "yes" | xsd:string "no"
317 }?,
318 attribute standalone { xsd:string "yes" | xsd:string "no" }?,
319 attribute doctype-public { text }?,
320 attribute doctype-system { text }?,
321 attribute cdata-section-elements { qnames.datatype }?,
322 attribute indent { xsd:string "yes" | xsd:string "no" }?,
323 attribute media-type { text }?
324 }
325prefixes.datatype = list { (xsd:NCName | "#default")* }
326prefix.datatype = xsd:NCName | "#default"
327wildcards.datatype =
328 list {
329 (xsd:QName
330 | xsd:token { pattern = "\*|\i\c*:\*" })*
331 }
332qname.datatype = xsd:QName
333qnames.datatype = list { xsd:QName* }
334char.datatype = xsd:string { length = "1" }
335number.datatype = xsd:decimal
336expression.datatype = text
337pattern.datatype = text
338qname-but-not-ncname.datatype = xsd:QName { pattern = ".*:.*" }
339# An AVT containing at least one expression.
340expr-avt.datatype =
341 xsd:string {
342 pattern =
343 """([^\{\}]|\{\{|\}\})*\{([^"'\{\}]|"[^"]*"|'[^']*')+\}([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*"""
344 }
345# An AVT containing at least one brace; ie where instantiated AVT
346# is not the same as the literal AVT.
347brace-avt.datatype =
348 xsd:string {
349 pattern =
350 """[^\{\}]*(\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*"""
351 }
352avt.datatype =
353 xsd:string {
354 pattern =
355 """([^\{\}]|\{\{|\}\}|\{([^"'\{\}]|"[^"]*"|'[^']*')+\})*"""
356 }