1# *********************************************************************
2# *** THIS IS THE FLATTENED DTD. DO NOT EDIT THIS DTD BY HAND, EDIT ***
3# *** THE CUSTOMIZATION LAYER AND REGENERATE THE FLATTENED DTD! ********
4# *********************************************************************
5
6# ======================================================================
7
8# Slides XML V3.4 DTD
9# Copyright (C) 1999, 2000, 2001, 2002, 2003 Norman Walsh
10# http://sourceforge.net/projects/docbook/
11#
12# $Id: slides-custom.dtd,v 1.9 2005/04/27 15:44:52 xmldoc Exp $
13#
14# Please direct all questions and comments about this DTD to
15# Norman Walsh, <ndw@nwalsh.com>.
16#
17# Common declaration:
18#
19# <?xml version='1.0'?>
20# <!DOCTYPE slides
21#   PUBLIC "-//Norman Walsh//DTD Slides V3.4//EN"
22#   "http://docbook.sourceforge.net/release/slides/3.4/schema/dtd/slides.dtd">
23
24# ======================================================================
25
26namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
27
28local.linespecific.class = screen
29local.person.ident.mix = notAllowed
30person.ident.mix =
31  honorific
32  | firstname
33  | surname
34  | lineage
35  | othername
36  | affiliation
37  | authorblurb
38  | local.person.ident.mix
39local.bibliocomponent.mix = notAllowed
40bibliocomponent.mix =
41  abbrev
42  | abstract
43  | author
44  | authorgroup
45  | bibliomisc
46  | copyright
47  | corpauthor
48  | date
49  | edition
50  | editor
51  | issuenum
52  | othercredit
53  | pubdate
54  | publishername
55  | releaseinfo
56  | revhistory
57  | subtitle
58  | title
59  | titleabbrev
60  | volumenum
61  | citetitle
62  | confgroup
63  | person.ident.mix
64  | local.bibliocomponent.mix
65local.divcomponent.mix = speakernotes
66local.component.mix = speakernotes
67local.list.class = notAllowed
68list.class =
69  itemizedlist | orderedlist | variablelist | local.list.class
70local.admon.class = notAllowed
71admon.class = note | local.admon.class
72linespecific.class =
73  literallayout | programlisting | local.linespecific.class
74local.para.class = notAllowed
75para.class = para | local.para.class
76local.informal.class = notAllowed
77informal.class =
78  blockquote | mediaobject | informaltable | local.informal.class
79local.formal.class = notAllowed
80formal.class = example | figure | table | local.formal.class
81local.compound.class = notAllowed
82compound.class = sidebar | local.compound.class
83local.genobj.class = notAllowed
84genobj.class = anchor | local.genobj.class
85local.descobj.class = notAllowed
86descobj.class = abstract | authorblurb | epigraph | local.descobj.class
87local.xref.char.class = notAllowed
88xref.char.class = footnoteref | xref | local.xref.char.class
89local.gen.char.class = notAllowed
90gen.char.class =
91  abbrev
92  | acronym
93  | citetitle
94  | emphasis
95  | footnote
96  | phrase
97  | quote
98  | trademark
99  | local.gen.char.class
100local.link.char.class = notAllowed
101link.char.class = link | ulink | local.link.char.class
102local.tech.char.class = notAllowed
103tech.char.class =
104  command
105  | computeroutput
106  | email
107  | filename
108  | literal
109  | option
110  | replaceable
111  | systemitem
112  | userinput
113  | local.tech.char.class
114local.base.char.class = notAllowed
115base.char.class = anchor | local.base.char.class
116local.docinfo.char.class = notAllowed
117docinfo.char.class =
118  author
119  | corpauthor
120  | othercredit
121  | revhistory
122  | local.docinfo.char.class
123local.other.char.class = notAllowed
124other.char.class = subscript | superscript | local.other.char.class
125local.inlineobj.char.class = notAllowed
126inlineobj.char.class = inlinemediaobject | local.inlineobj.char.class
127local.effectivity.attrib = empty
128effectivity.attrib = local.effectivity.attrib
129local.common.attrib = empty
130common.attrib =
131  attribute id { xsd:ID }?,
132  attribute lang { text }?,
133  attribute remap { text }?,
134  attribute revisionflag { "changed" | "added" | "deleted" | "off" }?,
135  local.common.attrib
136component.mix =
137  list.class
138  | admon.class
139  | linespecific.class
140  | para.class
141  | informal.class
142  | formal.class
143  | compound.class
144  | genobj.class
145  | descobj.class
146  | local.component.mix
147local.sidebar.mix = notAllowed
148sidebar.mix =
149  list.class
150  | admon.class
151  | linespecific.class
152  | para.class
153  | informal.class
154  | formal.class
155  | genobj.class
156  | local.sidebar.mix
157local.revdescription.mix = notAllowed
158revdescription.mix =
159  list.class
160  | admon.class
161  | linespecific.class
162  | para.class
163  | informal.class
164  | formal.class
165  | genobj.class
166  | local.revdescription.mix
167local.footnote.mix = notAllowed
168footnote.mix =
169  list.class
170  | linespecific.class
171  | para.class
172  | informal.class
173  | local.footnote.mix
174local.example.mix = notAllowed
175example.mix =
176  list.class
177  | linespecific.class
178  | para.class
179  | informal.class
180  | local.example.mix
181local.admon.mix = notAllowed
182admon.mix =
183  list.class
184  | linespecific.class
185  | para.class
186  | informal.class
187  | formal.class
188  | local.admon.mix
189local.figure.mix = notAllowed
190figure.mix = linespecific.class | informal.class | local.figure.mix
191local.tabentry.mix = notAllowed
192tabentry.mix =
193  list.class
194  | admon.class
195  | linespecific.class
196  | para.class
197  | mediaobject
198  | local.tabentry.mix
199local.legalnotice.mix = notAllowed
200legalnotice.mix =
201  list.class
202  | admon.class
203  | linespecific.class
204  | para.class
205  | blockquote
206  | local.legalnotice.mix
207local.textobject.mix = notAllowed
208textobject.mix =
209  list.class
210  | admon.class
211  | linespecific.class
212  | para.class
213  | blockquote
214  | local.textobject.mix
215local.listpreamble.mix = notAllowed
216listpreamble.mix =
217  admon.class
218  | linespecific.class
219  | para.class
220  | informal.class
221  | genobj.class
222  | descobj.class
223  | local.listpreamble.mix
224local.para.char.mix = notAllowed
225para.char.mix =
226  text
227  | xref.char.class
228  | gen.char.class
229  | link.char.class
230  | tech.char.class
231  | base.char.class
232  | other.char.class
233  | inlineobj.char.class
234  | local.para.char.mix
235local.title.char.mix = notAllowed
236title.char.mix =
237  text
238  | xref.char.class
239  | gen.char.class
240  | link.char.class
241  | tech.char.class
242  | base.char.class
243  | docinfo.char.class
244  | other.char.class
245  | inlineobj.char.class
246  | local.title.char.mix
247local.cptr.char.mix = notAllowed
248cptr.char.mix =
249  text
250  | link.char.class
251  | tech.char.class
252  | base.char.class
253  | other.char.class
254  | inlinemediaobject
255  | local.cptr.char.mix
256local.word.char.mix = notAllowed
257word.char.mix =
258  text
259  | acronym
260  | emphasis
261  | trademark
262  | link.char.class
263  | base.char.class
264  | other.char.class
265  | inlinemediaobject
266  | local.word.char.mix
267local.docinfo.char.mix = notAllowed
268docinfo.char.mix =
269  text
270  | link.char.class
271  | emphasis
272  | trademark
273  | replaceable
274  | other.char.class
275  | inlinemediaobject
276  | local.docinfo.char.mix
277tbl.table.mdl =
278  (title, (mediaobject+ | tgroup+))
279  | (caption, (col* | colgroup*), thead?, tfoot?, (tbody+ | tr+))
280divcomponent.mix =
281  list.class
282  | admon.class
283  | linespecific.class
284  | para.class
285  | informal.class
286  | formal.class
287  | compound.class
288  | descobj.class
289  | local.divcomponent.mix
290local.notation.class = notAllowed
291notation.class =
292  "BMP"
293  | "CGM-CHAR"
294  | "CGM-BINARY"
295  | "CGM-CLEAR"
296  | "DITROFF"
297  | "DVI"
298  | "EPS"
299  | "EQN"
300  | "FAX"
301  | "GIF"
302  | "GIF87a"
303  | "GIF89a"
304  | "JPG"
305  | "JPEG"
306  | "IGES"
307  | "PCX"
308  | "PIC"
309  | "PNG"
310  | "PS"
311  | "SGML"
312  | "TBL"
313  | "TEX"
314  | "TIFF"
315  | "WMF"
316  | "WPG"
317  | "SVG"
318  | "PDF"
319  | "SWF"
320  | "linespecific"
321  | local.notation.class
322yesorno.attvals = string
323formalobject.title.content = title, titleabbrev?
324local.mediaobject.mix = notAllowed
325mediaobject.mix =
326  videoobject
327  | audioobject
328  | imageobject
329  | textobject
330  | local.mediaobject.mix
331idreq.attrib = attribute id { xsd:ID }
332lang.attrib = attribute lang { text }?
333remap.attrib = attribute remap { text }?
334role.attrib = attribute role { text }?
335xreflabel.attrib = attribute xreflabel { text }?
336revisionflag.attrib =
337  attribute revisionflag { "changed" | "added" | "deleted" | "off" }?
338dir.attrib = attribute dir { "ltr" | "rtl" | "lro" | "rlo" }?
339xml-base.attrib = attribute xml:base { text }?
340label.attrib = attribute label { text }?
341linespecific.attrib =
342  [ a:defaultValue = "linespecific" ]
343  attribute format { "linespecific" }?,
344  attribute linenumbering { "numbered" | "unnumbered" }?,
345  attribute continuation { "continues" | "restarts" }?,
346  attribute startinglinenumber { text }?,
347  attribute language { text }?
348linkendreq.attrib = attribute linkend { xsd:IDREF }
349local.mark.attrib = empty
350mark.attrib =
351  attribute mark { text }?,
352  local.mark.attrib
353moreinfo.attrib =
354  [ a:defaultValue = "none" ]
355  attribute moreinfo { "refentry" | "none" }?
356pagenum.attrib = attribute pagenum { text }?
357local.status.attrib = empty
358status.attrib =
359  attribute status { text }?,
360  local.status.attrib
361width.attrib = attribute width { text }?
362local.title.attrib = empty
363title.role.attrib = role.attrib
364title = element title { title.attlist, title.char.mix* }
365title.attlist &=
366  pagenum.attrib, common.attrib, title.role.attrib, local.title.attrib
367local.titleabbrev.attrib = empty
368titleabbrev.role.attrib = role.attrib
369titleabbrev =
370  element titleabbrev { titleabbrev.attlist, title.char.mix* }
371titleabbrev.attlist &=
372  common.attrib, titleabbrev.role.attrib, local.titleabbrev.attrib
373local.subtitle.attrib = empty
374subtitle.role.attrib = role.attrib
375subtitle = element subtitle { subtitle.attlist, title.char.mix* }
376subtitle.attlist &=
377  common.attrib, subtitle.role.attrib, local.subtitle.attrib
378local.bibliomisc.attrib = empty
379bibliomisc.role.attrib = role.attrib
380bibliomisc = element bibliomisc { bibliomisc.attlist, para.char.mix* }
381bibliomisc.attlist &=
382  common.attrib, bibliomisc.role.attrib, local.bibliomisc.attrib
383local.subjectset.attrib = empty
384subjectset.role.attrib = role.attrib
385subjectset = element subjectset { subjectset.attlist, subject+ }
386subjectset.attlist &=
387  attribute scheme { xsd:NMTOKEN }?,
388  common.attrib,
389  subjectset.role.attrib,
390  local.subjectset.attrib
391local.subject.attrib = empty
392subject.role.attrib = role.attrib
393subject = element subject { subject.attlist, subjectterm+ }
394subject.attlist &=
395  attribute weight { text }?,
396  common.attrib,
397  subject.role.attrib,
398  local.subject.attrib
399local.subjectterm.attrib = empty
400subjectterm.role.attrib = role.attrib
401subjectterm = element subjectterm { subjectterm.attlist, text }
402subjectterm.attlist &=
403  common.attrib, subjectterm.role.attrib, local.subjectterm.attrib
404local.keywordset.attrib = empty
405keywordset.role.attrib = role.attrib
406keywordset = element keywordset { keywordset.attlist, keyword+ }
407keywordset.attlist &=
408  common.attrib, keywordset.role.attrib, local.keywordset.attrib
409local.keyword.attrib = empty
410keyword.role.attrib = role.attrib
411keyword = element keyword { keyword.attlist, text }
412keyword.attlist &=
413  common.attrib, keyword.role.attrib, local.keyword.attrib
414local.sidebar.attrib = empty
415sidebar.role.attrib = role.attrib
416sidebar.attlist &=
417  common.attrib, sidebar.role.attrib, local.sidebar.attrib
418local.abstract.attrib = empty
419abstract.role.attrib = role.attrib
420abstract = element abstract { abstract.attlist, title?, para.class+ }
421abstract.attlist &=
422  common.attrib, abstract.role.attrib, local.abstract.attrib
423local.authorblurb.attrib = empty
424authorblurb.role.attrib = role.attrib
425authorblurb =
426  element authorblurb { authorblurb.attlist, title?, para.class+ }
427authorblurb.attlist &=
428  common.attrib, authorblurb.role.attrib, local.authorblurb.attrib
429local.blockquote.attrib = empty
430blockquote.role.attrib = role.attrib
431blockquote.attlist &=
432  common.attrib, blockquote.role.attrib, local.blockquote.attrib
433local.attribution.attrib = empty
434attribution.role.attrib = role.attrib
435attribution =
436  element attribution { attribution.attlist, para.char.mix* }
437attribution.attlist &=
438  common.attrib, attribution.role.attrib, local.attribution.attrib
439local.epigraph.attrib = empty
440epigraph.role.attrib = role.attrib
441epigraph =
442  element epigraph {
443    epigraph.attlist, attribution?, (para.class | literallayout)+
444  }
445epigraph.attlist &=
446  common.attrib, epigraph.role.attrib, local.epigraph.attrib
447local.footnote.attrib = empty
448footnote.role.attrib = role.attrib
449footnote = element footnote { footnote.attlist, footnote.mix+ }
450footnote.attlist &=
451  label.attrib,
452  common.attrib,
453  footnote.role.attrib,
454  local.footnote.attrib
455local.para.attrib = empty
456para.role.attrib = role.attrib
457para.attlist &= common.attrib, para.role.attrib, local.para.attrib
458local.admon.attrib = empty
459admon.role.attrib = role.attrib
460note = element note { note.attlist, title?, admon.mix+ }
461note.attlist &= common.attrib, admon.role.attrib, local.admon.attrib
462local.itemizedlist.attrib = empty
463itemizedlist.role.attrib = role.attrib
464itemizedlist.attlist &=
465  attribute spacing { "normal" | "compact" }?,
466  mark.attrib,
467  common.attrib,
468  itemizedlist.role.attrib,
469  local.itemizedlist.attrib
470local.orderedlist.attrib = empty
471orderedlist.role.attrib = role.attrib
472orderedlist.attlist &=
473  attribute numeration {
474    "arabic" | "upperalpha" | "loweralpha" | "upperroman" | "lowerroman"
475  }?,
476  [ a:defaultValue = "ignore" ]
477  attribute inheritnum { "inherit" | "ignore" }?,
478  [ a:defaultValue = "restarts" ]
479  attribute continuation { "continues" | "restarts" }?,
480  attribute spacing { "normal" | "compact" }?,
481  common.attrib,
482  orderedlist.role.attrib,
483  local.orderedlist.attrib
484local.listitem.attrib = empty
485listitem.role.attrib = role.attrib
486listitem = element listitem { listitem.attlist, component.mix+ }
487listitem.attlist &=
488  attribute override { text }?,
489  common.attrib,
490  listitem.role.attrib,
491  local.listitem.attrib
492local.variablelist.attrib = empty
493variablelist.role.attrib = role.attrib
494variablelist.attlist &=
495  attribute termlength { text }?,
496  common.attrib,
497  variablelist.role.attrib,
498  local.variablelist.attrib
499local.varlistentry.attrib = empty
500varlistentry.role.attrib = role.attrib
501varlistentry =
502  element varlistentry { varlistentry.attlist, term+, listitem }
503varlistentry.attlist &=
504  common.attrib, varlistentry.role.attrib, local.varlistentry.attrib
505local.term.attrib = empty
506term.role.attrib = role.attrib
507term = element term { term.attlist, para.char.mix* }
508term.attlist &= common.attrib, term.role.attrib, local.term.attrib
509local.example.attrib = empty
510example.role.attrib = role.attrib
511example.attlist &=
512  attribute floatstyle { text }?,
513  label.attrib,
514  width.attrib,
515  common.attrib,
516  example.role.attrib,
517  local.example.attrib
518local.programlisting.attrib = empty
519programlisting.role.attrib = role.attrib
520programlisting.attlist &=
521  width.attrib,
522  linespecific.attrib,
523  common.attrib,
524  programlisting.role.attrib,
525  local.programlisting.attrib
526local.literallayout.attrib = empty
527literallayout.role.attrib = role.attrib
528literallayout.attlist &=
529  width.attrib,
530  linespecific.attrib,
531  [ a:defaultValue = "normal" ]
532  attribute class { "monospaced" | "normal" }?,
533  common.attrib,
534  literallayout.role.attrib,
535  local.literallayout.attrib
536local.figure.attrib = empty
537figure.role.attrib = role.attrib
538figure.attlist &=
539  [ a:defaultValue = "0" ] attribute float { yesorno.attvals }?,
540  attribute floatstyle { text }?,
541  attribute pgwide { yesorno.attvals }?,
542  label.attrib,
543  common.attrib,
544  figure.role.attrib,
545  local.figure.attrib
546local.mediaobject.attrib = empty
547mediaobject.role.attrib = role.attrib
548mediaobject =
549  element mediaobject {
550    mediaobject.attlist, objectinfo?, mediaobject.mix+, caption?
551  }
552mediaobject.attlist &=
553  common.attrib, mediaobject.role.attrib, local.mediaobject.attrib
554local.inlinemediaobject.attrib = empty
555inlinemediaobject.role.attrib = role.attrib
556inlinemediaobject =
557  element inlinemediaobject {
558    inlinemediaobject.attlist, objectinfo?, mediaobject.mix+
559  }
560inlinemediaobject.attlist &=
561  common.attrib,
562  inlinemediaobject.role.attrib,
563  local.inlinemediaobject.attrib
564local.videoobject.attrib = empty
565videoobject.role.attrib = role.attrib
566videoobject =
567  element videoobject { videoobject.attlist, objectinfo?, videodata }
568videoobject.attlist &=
569  common.attrib, videoobject.role.attrib, local.videoobject.attrib
570local.audioobject.attrib = empty
571audioobject.role.attrib = role.attrib
572audioobject =
573  element audioobject { audioobject.attlist, objectinfo?, audiodata }
574audioobject.attlist &=
575  common.attrib, audioobject.role.attrib, local.audioobject.attrib
576local.imageobject.attrib = empty
577imageobject.role.attrib = role.attrib
578imageobject =
579  element imageobject { imageobject.attlist, objectinfo?, imagedata }
580imageobject.attlist &=
581  common.attrib, imageobject.role.attrib, local.imageobject.attrib
582local.textobject.attrib = empty
583textobject.role.attrib = role.attrib
584textobject =
585  element textobject {
586    textobject.attlist,
587    objectinfo?,
588    (phrase | textdata | textobject.mix+)
589  }
590textobject.attlist &=
591  common.attrib, textobject.role.attrib, local.textobject.attrib
592local.objectinfo.attrib = empty
593objectinfo.role.attrib = role.attrib
594objectinfo.attlist &=
595  common.attrib, objectinfo.role.attrib, local.objectinfo.attrib
596local.objectdata.attrib = empty
597objectdata.attrib =
598  attribute entityref { xsd:ENTITY }?,
599  attribute fileref { text }?,
600  attribute format { notation.class }?,
601  attribute srccredit { text }?,
602  local.objectdata.attrib
603local.videodata.attrib = empty
604videodata.role.attrib = role.attrib
605videodata = element videodata { videodata.attlist, empty }
606videodata.attlist &=
607  attribute width { text }?,
608  attribute contentwidth { text }?,
609  attribute depth { text }?,
610  attribute contentdepth { text }?,
611  attribute align { "left" | "right" | "center" }?,
612  attribute valign { "top" | "middle" | "bottom" }?,
613  attribute scale { text }?,
614  attribute scalefit { yesorno.attvals }?,
615  objectdata.attrib,
616  common.attrib,
617  videodata.role.attrib,
618  local.videodata.attrib
619local.audiodata.attrib = empty
620audiodata.role.attrib = role.attrib
621audiodata = element audiodata { audiodata.attlist, empty }
622audiodata.attlist &=
623  objectdata.attrib,
624  common.attrib,
625  audiodata.role.attrib,
626  local.audiodata.attrib
627local.imagedata.attrib = empty
628imagedata.role.attrib = role.attrib
629imagedata = element imagedata { imagedata.attlist, empty }
630imagedata.attlist &=
631  attribute width { text }?,
632  attribute contentwidth { text }?,
633  attribute depth { text }?,
634  attribute contentdepth { text }?,
635  attribute align { "left" | "right" | "center" }?,
636  attribute valign { "top" | "middle" | "bottom" }?,
637  attribute scale { text }?,
638  attribute scalefit { yesorno.attvals }?,
639  objectdata.attrib,
640  common.attrib,
641  imagedata.role.attrib,
642  local.imagedata.attrib
643local.textdata.attrib = empty
644textdata.role.attrib = role.attrib
645textdata = element textdata { textdata.attlist, empty }
646textdata.attlist &=
647  attribute encoding { text }?,
648  objectdata.attrib,
649  common.attrib,
650  textdata.role.attrib,
651  local.textdata.attrib
652html.coreattrs =
653  attribute id { xsd:ID }?,
654  attribute class { text }?,
655  attribute style { text }?,
656  attribute title { text }?
657i18n = attribute xml:lang { xsd:NMTOKEN }?
658events =
659  attribute onclick { text }?,
660  attribute ondblclick { text }?,
661  attribute onmousedown { text }?,
662  attribute onmouseup { text }?,
663  attribute onmouseover { text }?,
664  attribute onmousemove { text }?,
665  attribute onmouseout { text }?,
666  attribute onkeypress { text }?,
667  attribute onkeydown { text }?,
668  attribute onkeyup { text }?
669attrs = html.coreattrs, i18n, events
670cellhalign =
671  attribute align { "left" | "center" | "right" | "justify" | "char" }?,
672  attribute char { text }?,
673  attribute charoff { text }?
674cellvalign =
675  attribute valign { "top" | "middle" | "bottom" | "baseline" }?
676colgroup = element colgroup { colgroup.attlist, col* }
677col = element col { col.attlist, empty }
678tr = element tr { tr.attlist, (th | td)+ }
679th = element th { th.attlist, (para.char.mix | tabentry.mix)* }
680td = element td { td.attlist, (para.char.mix | tabentry.mix)* }
681colgroup.attlist &=
682  attrs,
683  [ a:defaultValue = "1" ] attribute span { text }?,
684  attribute width { text }?,
685  cellhalign,
686  cellvalign
687col.attlist &=
688  attrs,
689  [ a:defaultValue = "1" ] attribute span { text }?,
690  attribute width { text }?,
691  cellhalign,
692  cellvalign
693tr.attlist &=
694  attrs,
695  cellhalign,
696  cellvalign,
697  attribute bgcolor { text }?
698th.attlist &=
699  attrs,
700  attribute abbr { text }?,
701  attribute axis { text }?,
702  attribute headers { xsd:IDREFS }?,
703  attribute scope { "row" | "col" | "rowgroup" | "colgroup" }?,
704  [ a:defaultValue = "1" ] attribute rowspan { text }?,
705  [ a:defaultValue = "1" ] attribute colspan { text }?,
706  cellhalign,
707  cellvalign,
708  attribute nowrap { "nowrap" }?,
709  attribute bgcolor { text }?,
710  attribute width { text }?,
711  attribute height { text }?
712td.attlist &=
713  attrs,
714  attribute abbr { text }?,
715  attribute axis { text }?,
716  attribute headers { xsd:IDREFS }?,
717  attribute scope { "row" | "col" | "rowgroup" | "colgroup" }?,
718  [ a:defaultValue = "1" ] attribute rowspan { text }?,
719  [ a:defaultValue = "1" ] attribute colspan { text }?,
720  cellhalign,
721  cellvalign,
722  attribute nowrap { "nowrap" }?,
723  attribute bgcolor { text }?,
724  attribute width { text }?,
725  attribute height { text }?
726tables.role.attrib = role.attrib
727bodyatt =
728  attribute floatstyle { text }?,
729  label.attrib
730secur =
731  common.attrib,
732  attribute class { text }?,
733  attribute style { text }?,
734  attribute title { text }?,
735  i18n,
736  events,
737  tables.role.attrib
738common.table.attribs = bodyatt, secur
739tbl.table.att =
740  attribute tabstyle { text }?,
741  attribute tocentry { yesorno.attvals }?,
742  attribute shortentry { yesorno.attvals }?,
743  attribute orient { "port" | "land" }?,
744  attribute pgwide { yesorno.attvals }?,
745  attribute summary { text }?,
746  attribute width { text }?,
747  attribute border { text }?,
748  attribute rules { "none" | "groups" | "rows" | "cols" | "all" }?,
749  attribute cellspacing { text }?,
750  attribute cellpadding { text }?,
751  attribute align { "left" | "center" | "right" }?,
752  attribute bgcolor { text }?
753tbl.frame.attval =
754  "void"
755  | "above"
756  | "below"
757  | "hsides"
758  | "lhs"
759  | "rhs"
760  | "vsides"
761  | "box"
762  | "border"
763  | "top"
764  | "bottom"
765  | "topbot"
766  | "all"
767  | "sides"
768  | "none"
769tbl.entry.mdl = para.char.mix | tabentry.mix
770tbl.hdft.mdl = tr+ | (colspec*, row+)
771tbl.tbody.mdl = tr+ | row+
772yesorno = string
773tbl.tgroup.mdl = colspec*, spanspec*, thead?, tfoot?, tbody
774tbl.tgroup.att = attribute tgroupstyle { text }?
775tbl.row.mdl = (entry | entrytbl)+
776tbl.entrytbl.mdl = colspec*, spanspec*, thead?, tbody
777table = element table { table.attlist, tbl.table.mdl }
778table.attlist &=
779  attribute frame { tbl.frame.attval }?,
780  attribute colsep { yesorno }?,
781  attribute rowsep { yesorno }?,
782  tbl.table.att,
783  bodyatt,
784  secur
785tgroup = element tgroup { tgroup.attlist, tbl.tgroup.mdl }
786tgroup.attlist &=
787  attribute cols { text },
788  tbl.tgroup.att,
789  attribute colsep { yesorno }?,
790  attribute rowsep { yesorno }?,
791  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
792  attribute char { text }?,
793  attribute charoff { text }?,
794  secur
795colspec = element colspec { colspec.attlist, empty }
796colspec.attlist &=
797  attribute colnum { text }?,
798  attribute colname { text }?,
799  attribute colwidth { text }?,
800  attribute colsep { yesorno }?,
801  attribute rowsep { yesorno }?,
802  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
803  attribute char { text }?,
804  attribute charoff { text }?
805spanspec = element spanspec { spanspec.attlist, empty }
806spanspec.attlist &=
807  attribute namest { text },
808  attribute nameend { text },
809  attribute spanname { text },
810  attribute colsep { yesorno }?,
811  attribute rowsep { yesorno }?,
812  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
813  attribute char { text }?,
814  attribute charoff { text }?
815thead = element thead { thead.attlist, tbl.hdft.mdl }
816thead.attlist &=
817  attribute valign { "top" | "middle" | "bottom" }?,
818  secur
819tfoot = element tfoot { tfoot.attlist, tbl.hdft.mdl }
820tfoot.attlist &=
821  attribute valign { "top" | "middle" | "bottom" }?,
822  secur
823tbody = element tbody { tbody.attlist, tbl.tbody.mdl }
824tbody.attlist &=
825  attribute valign { "top" | "middle" | "bottom" }?,
826  secur
827row = element row { row.attlist, tbl.row.mdl }
828row.attlist &=
829  attribute rowsep { yesorno }?,
830  attribute valign { "top" | "middle" | "bottom" }?,
831  secur
832entrytbl = element entrytbl { entrytbl.attlist, tbl.entrytbl.mdl }
833entrytbl.attlist &=
834  attribute cols { text },
835  tbl.tgroup.att,
836  attribute colname { text }?,
837  attribute spanname { text }?,
838  attribute namest { text }?,
839  attribute nameend { text }?,
840  attribute colsep { yesorno }?,
841  attribute rowsep { yesorno }?,
842  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
843  attribute char { text }?,
844  attribute charoff { text }?,
845  secur
846entry = element entry { entry.attlist, tbl.entry.mdl* }
847entry.attlist &=
848  attribute colname { text }?,
849  attribute namest { text }?,
850  attribute nameend { text }?,
851  attribute spanname { text }?,
852  attribute morerows { text }?,
853  attribute colsep { yesorno }?,
854  attribute rowsep { yesorno }?,
855  attribute align { "left" | "right" | "center" | "justify" | "char" }?,
856  attribute char { text }?,
857  attribute charoff { text }?,
858  attribute rotate { yesorno }?,
859  attribute valign { "top" | "middle" | "bottom" }?,
860  secur
861local.informaltable.attrib = empty
862informaltable.attlist &=
863  attribute frame { tbl.frame.attval }?,
864  attribute colsep { yesorno.attvals }?,
865  attribute rowsep { yesorno.attvals }?,
866  common.table.attribs,
867  tbl.table.att,
868  local.informaltable.attrib
869local.caption.attrib = empty
870caption.role.attrib = role.attrib
871caption = element caption { caption.attlist, (text | textobject.mix)* }
872caption.attlist.content =
873  lang.attrib,
874  remap.attrib,
875  xreflabel.attrib,
876  revisionflag.attrib,
877  effectivity.attrib,
878  dir.attrib,
879  xml-base.attrib,
880  local.common.attrib,
881  caption.role.attrib,
882  attrs,
883  attribute align { "top" | "bottom" | "left" | "right" }?,
884  local.caption.attrib
885caption.attlist &= caption.attlist.content
886local.affiliation.attrib = empty
887affiliation.role.attrib = role.attrib
888affiliation.attlist &=
889  common.attrib, affiliation.role.attrib, local.affiliation.attrib
890local.jobtitle.attrib = empty
891jobtitle.role.attrib = role.attrib
892jobtitle = element jobtitle { jobtitle.attlist, docinfo.char.mix* }
893jobtitle.attlist &=
894  common.attrib, jobtitle.role.attrib, local.jobtitle.attrib
895local.author.attrib = empty
896author.role.attrib = role.attrib
897author.attlist &= common.attrib, author.role.attrib, local.author.attrib
898local.authorgroup.attrib = empty
899authorgroup.role.attrib = role.attrib
900authorgroup.attlist &=
901  common.attrib, authorgroup.role.attrib, local.authorgroup.attrib
902local.authorinitials.attrib = empty
903authorinitials.role.attrib = role.attrib
904authorinitials =
905  element authorinitials { authorinitials.attlist, docinfo.char.mix* }
906authorinitials.attlist &=
907  common.attrib, authorinitials.role.attrib, local.authorinitials.attrib
908local.confgroup.attrib = empty
909confgroup.role.attrib = role.attrib
910confgroup =
911  element confgroup {
912    confgroup.attlist,
913    (confdates | conftitle | confnum | address | confsponsor)*
914  }
915confgroup.attlist &=
916  common.attrib, confgroup.role.attrib, local.confgroup.attrib
917local.confdates.attrib = empty
918confdates.role.attrib = role.attrib
919confdates = element confdates { confdates.attlist, docinfo.char.mix* }
920confdates.attlist &=
921  common.attrib, confdates.role.attrib, local.confdates.attrib
922local.conftitle.attrib = empty
923conftitle.role.attrib = role.attrib
924conftitle = element conftitle { conftitle.attlist, docinfo.char.mix* }
925conftitle.attlist &=
926  common.attrib, conftitle.role.attrib, local.conftitle.attrib
927local.confnum.attrib = empty
928confnum.role.attrib = role.attrib
929confnum = element confnum { confnum.attlist, docinfo.char.mix* }
930confnum.attlist &=
931  common.attrib, confnum.role.attrib, local.confnum.attrib
932local.confsponsor.attrib = empty
933confsponsor.role.attrib = role.attrib
934confsponsor =
935  element confsponsor { confsponsor.attlist, docinfo.char.mix* }
936confsponsor.attlist &=
937  common.attrib, confsponsor.role.attrib, local.confsponsor.attrib
938local.copyright.attrib = empty
939copyright.role.attrib = role.attrib
940copyright = element copyright { copyright.attlist, year+, holder* }
941copyright.attlist &=
942  common.attrib, copyright.role.attrib, local.copyright.attrib
943local.year.attrib = empty
944year.role.attrib = role.attrib
945year = element year { year.attlist, docinfo.char.mix* }
946year.attlist &= common.attrib, year.role.attrib, local.year.attrib
947local.holder.attrib = empty
948holder.role.attrib = role.attrib
949holder = element holder { holder.attlist, docinfo.char.mix* }
950holder.attlist &= common.attrib, holder.role.attrib, local.holder.attrib
951local.corpauthor.attrib = empty
952corpauthor.role.attrib = role.attrib
953corpauthor =
954  element corpauthor { corpauthor.attlist, docinfo.char.mix* }
955corpauthor.attlist &=
956  common.attrib, corpauthor.role.attrib, local.corpauthor.attrib
957local.date.attrib = empty
958date.role.attrib = role.attrib
959date = element date { date.attlist, docinfo.char.mix* }
960date.attlist &= common.attrib, date.role.attrib, local.date.attrib
961local.edition.attrib = empty
962edition.role.attrib = role.attrib
963edition = element edition { edition.attlist, docinfo.char.mix* }
964edition.attlist &=
965  common.attrib, edition.role.attrib, local.edition.attrib
966local.editor.attrib = empty
967editor.role.attrib = role.attrib
968editor.attlist &= common.attrib, editor.role.attrib, local.editor.attrib
969local.issuenum.attrib = empty
970issuenum.role.attrib = role.attrib
971issuenum = element issuenum { issuenum.attlist, docinfo.char.mix* }
972issuenum.attlist &=
973  common.attrib, issuenum.role.attrib, local.issuenum.attrib
974local.legalnotice.attrib = empty
975legalnotice.role.attrib = role.attrib
976legalnotice.attlist &=
977  common.attrib, legalnotice.role.attrib, local.legalnotice.attrib
978local.orgname.attrib = empty
979orgname.role.attrib = role.attrib
980orgname = element orgname { orgname.attlist, docinfo.char.mix* }
981orgname.attlist &=
982  common.attrib,
983  attribute class {
984    "corporation" | "nonprofit" | "consortium" | "informal" | "other"
985  }?,
986  attribute otherclass { text }?,
987  orgname.role.attrib,
988  local.orgname.attrib
989local.othercredit.attrib = empty
990othercredit.role.attrib = role.attrib
991othercredit.attlist &=
992  attribute class {
993    "graphicdesigner"
994    | "productioneditor"
995    | "copyeditor"
996    | "technicaleditor"
997    | "translator"
998    | "other"
999  }?,
1000  common.attrib,
1001  othercredit.role.attrib,
1002  local.othercredit.attrib
1003local.firstname.attrib = empty
1004firstname.role.attrib = role.attrib
1005firstname = element firstname { firstname.attlist, docinfo.char.mix* }
1006firstname.attlist &=
1007  common.attrib, firstname.role.attrib, local.firstname.attrib
1008local.honorific.attrib = empty
1009honorific.role.attrib = role.attrib
1010honorific = element honorific { honorific.attlist, docinfo.char.mix* }
1011honorific.attlist &=
1012  common.attrib, honorific.role.attrib, local.honorific.attrib
1013local.lineage.attrib = empty
1014lineage.role.attrib = role.attrib
1015lineage = element lineage { lineage.attlist, docinfo.char.mix* }
1016lineage.attlist &=
1017  common.attrib, lineage.role.attrib, local.lineage.attrib
1018local.othername.attrib = empty
1019othername.role.attrib = role.attrib
1020othername = element othername { othername.attlist, docinfo.char.mix* }
1021othername.attlist &=
1022  common.attrib, othername.role.attrib, local.othername.attrib
1023local.surname.attrib = empty
1024surname.role.attrib = role.attrib
1025surname = element surname { surname.attlist, docinfo.char.mix* }
1026surname.attlist &=
1027  common.attrib, surname.role.attrib, local.surname.attrib
1028local.pubdate.attrib = empty
1029pubdate.role.attrib = role.attrib
1030pubdate = element pubdate { pubdate.attlist, docinfo.char.mix* }
1031pubdate.attlist &=
1032  common.attrib, pubdate.role.attrib, local.pubdate.attrib
1033local.publishername.attrib = empty
1034publishername.role.attrib = role.attrib
1035publishername =
1036  element publishername { publishername.attlist, docinfo.char.mix* }
1037publishername.attlist &=
1038  common.attrib, publishername.role.attrib, local.publishername.attrib
1039local.releaseinfo.attrib = empty
1040releaseinfo.role.attrib = role.attrib
1041releaseinfo =
1042  element releaseinfo { releaseinfo.attlist, docinfo.char.mix* }
1043releaseinfo.attlist &=
1044  common.attrib, releaseinfo.role.attrib, local.releaseinfo.attrib
1045local.revhistory.attrib = empty
1046revhistory.role.attrib = role.attrib
1047revhistory = element revhistory { revhistory.attlist, revision+ }
1048revhistory.attlist &=
1049  common.attrib, revhistory.role.attrib, local.revhistory.attrib
1050local.revision.attrib = empty
1051revision.role.attrib = role.attrib
1052revision =
1053  element revision {
1054    revision.attlist,
1055    revnumber,
1056    date,
1057    (author | authorinitials)*,
1058    (revremark | revdescription)?
1059  }
1060revision.attlist &=
1061  common.attrib, revision.role.attrib, local.revision.attrib
1062local.revnumber.attrib = empty
1063revnumber.role.attrib = role.attrib
1064revnumber = element revnumber { revnumber.attlist, docinfo.char.mix* }
1065revnumber.attlist &=
1066  common.attrib, revnumber.role.attrib, local.revnumber.attrib
1067local.revremark.attrib = empty
1068revremark.role.attrib = role.attrib
1069revremark = element revremark { revremark.attlist, docinfo.char.mix* }
1070revremark.attlist &=
1071  common.attrib, revremark.role.attrib, local.revremark.attrib
1072local.revdescription.attrib = empty
1073revdescription.role.attrib = role.attrib
1074revdescription =
1075  element revdescription { revdescription.attlist, revdescription.mix+ }
1076revdescription.attlist &=
1077  common.attrib, revdescription.role.attrib, local.revdescription.attrib
1078local.volumenum.attrib = empty
1079volumenum.role.attrib = role.attrib
1080volumenum = element volumenum { volumenum.attlist, docinfo.char.mix* }
1081volumenum.attlist &=
1082  common.attrib, volumenum.role.attrib, local.volumenum.attrib
1083local.command.attrib = empty
1084command.role.attrib = role.attrib
1085command = element command { command.attlist, cptr.char.mix* }
1086command.attlist &=
1087  moreinfo.attrib,
1088  common.attrib,
1089  command.role.attrib,
1090  local.command.attrib
1091local.computeroutput.attrib = empty
1092computeroutput.role.attrib = role.attrib
1093computeroutput.attlist &=
1094  moreinfo.attrib,
1095  common.attrib,
1096  computeroutput.role.attrib,
1097  local.computeroutput.attrib
1098local.email.attrib = empty
1099email.role.attrib = role.attrib
1100email = element email { email.attlist, docinfo.char.mix* }
1101email.attlist &= common.attrib, email.role.attrib, local.email.attrib
1102local.filename.attrib = empty
1103filename.role.attrib = role.attrib
1104filename = element filename { filename.attlist, cptr.char.mix* }
1105filename.attlist &=
1106  attribute class {
1107    "headerfile"
1108    | "partition"
1109    | "devicefile"
1110    | "libraryfile"
1111    | "directory"
1112    | "extension"
1113    | "symlink"
1114  }?,
1115  attribute path { text }?,
1116  moreinfo.attrib,
1117  common.attrib,
1118  filename.role.attrib,
1119  local.filename.attrib
1120local.lineannotation.attrib = empty
1121lineannotation.role.attrib = role.attrib
1122lineannotation =
1123  element lineannotation { lineannotation.attlist, para.char.mix* }
1124lineannotation.attlist &=
1125  common.attrib, lineannotation.role.attrib, local.lineannotation.attrib
1126local.literal.attrib = empty
1127literal.role.attrib = role.attrib
1128literal = element literal { literal.attlist, cptr.char.mix* }
1129literal.attlist &=
1130  moreinfo.attrib,
1131  common.attrib,
1132  literal.role.attrib,
1133  local.literal.attrib
1134local.option.attrib = empty
1135option.role.attrib = role.attrib
1136option = element option { option.attlist, cptr.char.mix* }
1137option.attlist &= common.attrib, option.role.attrib, local.option.attrib
1138local.replaceable.attrib = empty
1139replaceable.role.attrib = role.attrib
1140replaceable.attlist &=
1141  attribute class { "command" | "function" | "option" | "parameter" }?,
1142  common.attrib,
1143  replaceable.role.attrib,
1144  local.replaceable.attrib
1145local.systemitem.attrib = empty
1146systemitem.role.attrib = role.attrib
1147systemitem.attlist &=
1148  attribute class {
1149    "constant"
1150    | "event"
1151    | "eventhandler"
1152    | "domainname"
1153    | "fqdomainname"
1154    | "ipaddress"
1155    | "netmask"
1156    | "etheraddress"
1157    | "groupname"
1158    | "library"
1159    | "macro"
1160    | "osname"
1161    | "filesystem"
1162    | "resource"
1163    | "systemname"
1164    | "username"
1165    | "newsgroup"
1166    | "process"
1167    | "service"
1168    | "server"
1169    | "daemon"
1170  }?,
1171  moreinfo.attrib,
1172  common.attrib,
1173  systemitem.role.attrib,
1174  local.systemitem.attrib
1175local.userinput.attrib = empty
1176userinput.role.attrib = role.attrib
1177userinput.attlist &=
1178  moreinfo.attrib,
1179  common.attrib,
1180  userinput.role.attrib,
1181  local.userinput.attrib
1182local.abbrev.attrib = empty
1183abbrev.role.attrib = role.attrib
1184abbrev = element abbrev { abbrev.attlist, word.char.mix* }
1185abbrev.attlist &= common.attrib, abbrev.role.attrib, local.abbrev.attrib
1186local.acronym.attrib = empty
1187acronym.role.attrib = role.attrib
1188acronym = element acronym { acronym.attlist, word.char.mix* }
1189acronym.attlist &=
1190  common.attrib, acronym.role.attrib, local.acronym.attrib
1191local.citetitle.attrib = empty
1192citetitle.role.attrib = role.attrib
1193citetitle = element citetitle { citetitle.attlist, para.char.mix* }
1194citetitle.attlist &=
1195  attribute pubwork {
1196    "article"
1197    | "book"
1198    | "chapter"
1199    | "part"
1200    | "refentry"
1201    | "section"
1202    | "journal"
1203    | "series"
1204    | "set"
1205    | "manuscript"
1206    | "cdrom"
1207    | "dvd"
1208    | "wiki"
1209    | "gopher"
1210    | "bbs"
1211    | "emailmessage"
1212    | "webpage"
1213    | "newsposting"
1214  }?,
1215  common.attrib,
1216  citetitle.role.attrib,
1217  local.citetitle.attrib
1218local.emphasis.attrib = empty
1219emphasis.role.attrib = role.attrib
1220emphasis = element emphasis { emphasis.attlist, para.char.mix* }
1221emphasis.attlist &=
1222  common.attrib, emphasis.role.attrib, local.emphasis.attrib
1223local.phrase.attrib = empty
1224phrase.role.attrib = role.attrib
1225phrase = element phrase { phrase.attlist, para.char.mix* }
1226phrase.attlist &= common.attrib, phrase.role.attrib, local.phrase.attrib
1227local.quote.attrib = empty
1228quote.role.attrib = role.attrib
1229quote = element quote { quote.attlist, para.char.mix* }
1230quote.attlist &= common.attrib, quote.role.attrib, local.quote.attrib
1231local.ssscript.attrib = empty
1232ssscript.role.attrib = role.attrib
1233subscript.attlist &=
1234  common.attrib, ssscript.role.attrib, local.ssscript.attrib
1235superscript.attlist &=
1236  common.attrib, ssscript.role.attrib, local.ssscript.attrib
1237local.trademark.attrib = empty
1238trademark.role.attrib = role.attrib
1239trademark.attlist &=
1240  [ a:defaultValue = "trade" ]
1241  attribute class { "service" | "trade" | "registered" | "copyright" }?,
1242  common.attrib,
1243  trademark.role.attrib,
1244  local.trademark.attrib
1245local.link.attrib = empty
1246link.role.attrib = role.attrib
1247link = element link { link.attlist, para.char.mix* }
1248link.attlist &=
1249  attribute endterm { xsd:IDREF }?,
1250  attribute xrefstyle { text }?,
1251  attribute type { text }?,
1252  linkendreq.attrib,
1253  common.attrib,
1254  link.role.attrib,
1255  local.link.attrib
1256local.ulink.attrib = empty
1257ulink.role.attrib = role.attrib
1258ulink = element ulink { ulink.attlist, para.char.mix* }
1259ulink.attlist &=
1260  attribute url { text },
1261  attribute type { text }?,
1262  attribute xrefstyle { text }?,
1263  common.attrib,
1264  ulink.role.attrib,
1265  local.ulink.attrib
1266local.footnoteref.attrib = empty
1267footnoteref.role.attrib = role.attrib
1268footnoteref = element footnoteref { footnoteref.attlist, empty }
1269footnoteref.attlist &=
1270  linkendreq.attrib,
1271  label.attrib,
1272  common.attrib,
1273  footnoteref.role.attrib,
1274  local.footnoteref.attrib
1275local.xref.attrib = empty
1276xref.role.attrib = role.attrib
1277xref = element xref { xref.attlist, empty }
1278xref.attlist &=
1279  attribute endterm { xsd:IDREF }?,
1280  attribute xrefstyle { text }?,
1281  common.attrib,
1282  linkendreq.attrib,
1283  xref.role.attrib,
1284  local.xref.attrib
1285local.anchor.attrib = empty
1286anchor.role.attrib = role.attrib
1287anchor = element anchor { anchor.attlist, empty }
1288anchor.attlist &=
1289  idreq.attrib,
1290  pagenum.attrib,
1291  remap.attrib,
1292  xreflabel.attrib,
1293  revisionflag.attrib,
1294  effectivity.attrib,
1295  anchor.role.attrib,
1296  local.anchor.attrib
1297objectinfo =
1298  element objectinfo {
1299    objectinfo.attlist,
1300    (mediaobject
1301     | legalnotice
1302     | keywordset
1303     | subjectset
1304     | bibliocomponent.mix)+
1305  }
1306authorgroup =
1307  element authorgroup {
1308    authorgroup.attlist, (author | editor | corpauthor | othercredit)+
1309  }
1310author = element author { author.attlist, person.ident.mix+ }
1311editor = element editor { editor.attlist, person.ident.mix+ }
1312othercredit =
1313  element othercredit { othercredit.attlist, person.ident.mix+ }
1314para = element para { para.attlist, para.char.mix* }
1315informaltable.table.mdl =
1316  (mediaobject+ | tgroup+)
1317  | (caption, (col* | colgroup*), thead?, tfoot?, (tbody+ | tr+))
1318informaltable =
1319  element informaltable {
1320    informaltable.attlist, informaltable.table.mdl
1321  }
1322replaceable =
1323  element replaceable {
1324    replaceable.attlist,
1325    (text | link.char.class | base.char.class | inlinemediaobject)*
1326  }
1327trademark =
1328  element trademark {
1329    trademark.attlist,
1330    (text
1331     | link.char.class
1332     | tech.char.class
1333     | inlinemediaobject
1334     | emphasis)*
1335  }
1336sidebar =
1337  element sidebar {
1338    sidebar.attlist, formalobject.title.content?, sidebar.mix+
1339  }
1340programlisting =
1341  element programlisting {
1342    programlisting.attlist, (para.char.mix | lineannotation)*
1343  }
1344literallayout =
1345  element literallayout {
1346    literallayout.attlist, (para.char.mix | lineannotation)*
1347  }
1348itemizedlist =
1349  element itemizedlist {
1350    itemizedlist.attlist,
1351    formalobject.title.content?,
1352    listpreamble.mix*,
1353    listitem+
1354  }
1355orderedlist =
1356  element orderedlist {
1357    orderedlist.attlist,
1358    formalobject.title.content?,
1359    listpreamble.mix*,
1360    listitem+
1361  }
1362variablelist =
1363  element variablelist {
1364    variablelist.attlist,
1365    formalobject.title.content?,
1366    listpreamble.mix*,
1367    varlistentry+
1368  }
1369example =
1370  element example {
1371    example.attlist, formalobject.title.content, example.mix+
1372  }
1373figure =
1374  element figure {
1375    figure.attlist,
1376    formalobject.title.content,
1377    (figure.mix | link.char.class)+
1378  }
1379legalnotice =
1380  element legalnotice { legalnotice.attlist, title?, legalnotice.mix+ }
1381systemitem =
1382  element systemitem { systemitem.attlist, (cptr.char.mix | acronym)* }
1383computeroutput =
1384  element computeroutput { computeroutput.attlist, cptr.char.mix* }
1385userinput = element userinput { userinput.attlist, cptr.char.mix* }
1386blockquote =
1387  element blockquote {
1388    blockquote.attlist, title?, attribution?, component.mix+
1389  }
1390subscript =
1391  element subscript {
1392    subscript.attlist,
1393    (text
1394     | link.char.class
1395     | emphasis
1396     | replaceable
1397     | inlinemediaobject
1398     | base.char.class
1399     | other.char.class)*
1400  }
1401superscript =
1402  element superscript {
1403    superscript.attlist,
1404    (text
1405     | link.char.class
1406     | emphasis
1407     | replaceable
1408     | inlinemediaobject
1409     | base.char.class
1410     | other.char.class)*
1411  }
1412screen =
1413  element screen { screen.attlist, (para.char.mix | lineannotation)* }
1414screen.role.attrib = role.attrib
1415local.screen.attrib = empty
1416screen.attlist &=
1417  width.attrib,
1418  linespecific.attrib,
1419  common.attrib,
1420  screen.role.attrib,
1421  local.screen.attrib
1422affiliation =
1423  element affiliation {
1424    affiliation.attlist, jobtitle?, orgname?, address*
1425  }
1426address = element address { address.attlist, text }
1427address.role.attrib = role.attrib
1428address.attlist &=
1429  linespecific.attrib, common.attrib, address.role.attrib
1430slides =
1431  element slides {
1432    slides.attlist, slidesinfo, speakernotes?, foil*, foilgroup*
1433  }
1434slides.attlist &=
1435  label.attrib, status.attrib, common.attrib, role.attrib
1436slidesinfo =
1437  element slidesinfo {
1438    slidesinfo.attlist,
1439    (mediaobject
1440     | legalnotice
1441     | subjectset
1442     | keywordset
1443     | bibliocomponent.mix)+
1444  }
1445slidesinfo.attlist &= common.attrib, role.attrib
1446foilgroup =
1447  element foilgroup {
1448    foilgroup.attlist,
1449    foilgroupinfo?,
1450    title,
1451    subtitle?,
1452    titleabbrev?,
1453    divcomponent.mix*,
1454    foil+
1455  }
1456foilgroup.attlist &=
1457  label.attrib, status.attrib, common.attrib, role.attrib
1458foilgroupinfo =
1459  element foilgroupinfo {
1460    foilgroupinfo.attlist,
1461    (mediaobject
1462     | legalnotice
1463     | subjectset
1464     | keywordset
1465     | bibliocomponent.mix)+
1466  }
1467foilgroupinfo.attlist &= common.attrib, role.attrib
1468foil =
1469  element foil {
1470    foil.attlist,
1471    foilinfo?,
1472    title,
1473    subtitle?,
1474    titleabbrev?,
1475    divcomponent.mix+
1476  }
1477foil.attlist &= label.attrib, status.attrib, common.attrib, role.attrib
1478foilinfo =
1479  element foilinfo {
1480    foilinfo.attlist,
1481    (mediaobject
1482     | legalnotice
1483     | subjectset
1484     | keywordset
1485     | bibliocomponent.mix)+
1486  }
1487foilinfo.attlist &= common.attrib, role.attrib
1488speakernotes =
1489  element speakernotes { speakernotes.attlist, divcomponent.mix* }
1490speakernotes.attlist &= common.attrib, role.attrib
1491start = slides
1492