1584 lines
58 KiB
XML
1584 lines
58 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
|
|
<!--
|
|
This DTD has been developed in order to validate XSL FO documents
|
|
conformant to XSL Recommendation of October 15, 2001. The namespace
|
|
prefix is
|
|
|
|
xmlns:fo="http://www.w3.org/1999/XSL/Format".
|
|
|
|
This DTD also makes provision for few extensions to XSL Rec, put
|
|
into a separate namespace:
|
|
|
|
xmlns:rx="http://www.renderx.com/XSL/Extensions".
|
|
|
|
Please e-mail your comments to Nikolai Grigoriev <grig@renderx.com>
|
|
|
|
? RenderX, 1999-2002.
|
|
|
|
-->
|
|
|
|
|
|
<!-- *******************************************************************
|
|
|
|
This DTD was written in mind to validate testcases for the new XSL FO
|
|
draft. Therefore, it is restrictive with respect to the spec: some rare
|
|
XSL FO features have been dropped in order to validate others more
|
|
reliably. Unless a document intentionally uses some of the functionality
|
|
listed below in the introductory notes, it shall be conformant to this
|
|
DTD in order to be a valid XSL FO document.
|
|
|
|
INTRODUCTORY NOTES
|
|
|
|
1. XSL FO are hard to validate by a DTD: attributes are universally
|
|
inheritable due to the adoption of the 'inherit' value from CSS2; and
|
|
even for the content model, presence of universal wrappers like fo:wrapper
|
|
makes it impossible to trace a neat distinction between inline-level and
|
|
block-level content. Therefore, this version of the DTD cannot reliably
|
|
detect inconsistencies in attribute sets: real checks are performed
|
|
only for empty inline elements and top-level elements (fo:layout-master-set
|
|
and its descendants).
|
|
|
|
2. The contents of the fo:instream-foreign-object element is hardvired to
|
|
be an SVG graphic. To validate it, this DTD includes an SVG DTD as an
|
|
external entity.
|
|
|
|
DEVIATIONS FROM THE DRAFT
|
|
|
|
1. Content model for <fo:layout-master-set> is made more strict:
|
|
at least one fo:simple-page-master should be present. (I think this
|
|
is more like a correction to the spec, rather than a deviation from it).
|
|
|
|
2. In XSL 1.0, page and region-body margins may be expressed in terms
|
|
of space-*. This does not make any sense, as far as no stacked
|
|
constraint may occur. For this reason, I have disabled spaces
|
|
in this context, leaving only plain old CSS margins.
|
|
|
|
3. Attributes of elements inside fo:layout-master-set may have a value
|
|
of 'inherit'. However, I have disabled the occurrence of such attributes
|
|
on parent elements: inheriting them buys us little in terms of
|
|
conciseness, but is error-prone in the initial phase.
|
|
|
|
4. Table-omit-{header|footer}-at-break is added a value of 'inherit',
|
|
to align it with the rest of table attributes. (If table-layout may have
|
|
it, why these two should not?)
|
|
|
|
5. Text-align has a closed list of values, neglecting the <string> value
|
|
type. The reason is practical: many stylesheet writers are used to write
|
|
"centered" and "justified", whereas the correct values for this version
|
|
of the draft are "center" and "justify"; catching this error in the DTD
|
|
turned out to be useful. Moreover, <string> values are poorly described
|
|
in the draft (nothing but a reference to CSS2), and are unlikely to be
|
|
implemented soon. (Ultimate reason: changing the attribute value back to
|
|
CDATA is a matter of few seconds ;-)).
|
|
|
|
6. Only basic values for writing-mode are included.
|
|
|
|
7. "Reference-orientation" is given <angle> values, besides numeric
|
|
ones described in the Recommendation.
|
|
|
|
8. Several extension elements and properties are added to enable
|
|
functionality missing from the Recommendation:
|
|
|
|
rx:background-content-height (attribute)
|
|
rx:background-content-width (attribute)
|
|
rx:background-content-type (attribute)
|
|
rx:background-scaling (attribute)
|
|
|
|
These properties are exact analogs of 'content-height', 'content-width'
|
|
'content-type', and 'scaling' but apply to the background image.
|
|
|
|
rx:outline (element)
|
|
rx:bookmark (element)
|
|
rx:bookmark-label (element)
|
|
|
|
These elements implement PDF bookmarks.
|
|
|
|
rx:meta-info (element)
|
|
rx:meta-field (element)
|
|
|
|
These elements pass meta-information about the document.
|
|
|
|
rx:page-device (element)
|
|
|
|
This element permits passing parameters to setpagedevice
|
|
operator in PostScript
|
|
|
|
rx:flow-section (element)
|
|
|
|
This element permits setting arbitrary number of columns
|
|
in a sigle page.
|
|
|
|
rx:key (attribute)
|
|
rx:page-index (element)
|
|
|
|
These elements implement page number lists in indexes.
|
|
|
|
|
|
******************************************************************** -->
|
|
|
|
<!-- *************************************************************** -->
|
|
<!-- Include external DTDs for foreign objects -->
|
|
<!-- *************************************************************** -->
|
|
|
|
<!-- Commented out for evaluation version
|
|
|
|
<!ENTITY % instream-foreign-object-dtd SYSTEM "instream-foreign-object.dtd">
|
|
|
|
%instream-foreign-object-dtd;
|
|
|
|
-->
|
|
|
|
<!-- *************************************************************** -->
|
|
<!-- Entity definitions for groups of formatting objects -->
|
|
<!-- *************************************************************** -->
|
|
|
|
<!ENTITY % basic-inlines "
|
|
fo:bidi-override
|
|
| fo:character
|
|
| fo:external-graphic
|
|
| fo:instream-foreign-object
|
|
| fo:inline
|
|
| fo:inline-container
|
|
| fo:leader
|
|
| fo:page-number
|
|
| fo:page-number-citation
|
|
| fo:basic-link
|
|
| fo:multi-toggle
|
|
| rx:pinpoint
|
|
| rx:page-index
|
|
">
|
|
|
|
<!ENTITY % basic-blocks "
|
|
fo:block
|
|
| fo:block-container
|
|
| fo:table-and-caption
|
|
| fo:table
|
|
| fo:list-block
|
|
">
|
|
|
|
<!ENTITY % out-of-lines "
|
|
fo:footnote
|
|
| fo:float
|
|
">
|
|
|
|
<!ENTITY % wrappers "
|
|
fo:multi-switch
|
|
| fo:multi-properties
|
|
| fo:wrapper
|
|
| fo:marker
|
|
| fo:retrieve-marker
|
|
">
|
|
|
|
<!ENTITY % inlines "
|
|
#PCDATA
|
|
| %basic-inlines;
|
|
| %out-of-lines;
|
|
| %wrappers;
|
|
">
|
|
|
|
<!ENTITY % blocks "
|
|
%basic-blocks;
|
|
| %out-of-lines;
|
|
| %wrappers;
|
|
">
|
|
|
|
<!ENTITY % mixed-level "
|
|
#PCDATA
|
|
| %basic-inlines;
|
|
| %basic-blocks;
|
|
| %out-of-lines;
|
|
| %wrappers;
|
|
">
|
|
|
|
|
|
<!-- *************************************************************** -->
|
|
<!-- Entity definitions for common groups of properties -->
|
|
<!-- This grouping reflects properties cooccurrence, rather than -->
|
|
<!-- property semantics. It does not correspond to grouping in the -->
|
|
<!-- draft. -->
|
|
<!-- *************************************************************** -->
|
|
|
|
<!-- Accessibility Properties -->
|
|
<!ENTITY % accessibility-properties "
|
|
source-document CDATA #IMPLIED
|
|
role CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Relative Position Properties -->
|
|
<!-- 'position' shorthand property also makes part of this group -->
|
|
<!ENTITY % relative-position-properties "
|
|
relative-position ( auto | static | relative | inherit ) #IMPLIED
|
|
position ( static | relative | absolute | fixed | inherit) #IMPLIED
|
|
top CDATA #IMPLIED
|
|
right CDATA #IMPLIED
|
|
bottom CDATA #IMPLIED
|
|
left CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Absolute or Relative Position Properties -->
|
|
<!-- There is no object that can be positioned only absolutely. -->
|
|
<!-- Therefore, absolute and relative positioning properties are -->
|
|
<!-- grouped together -->
|
|
<!ENTITY % absolute-or-relative-position-properties "
|
|
absolute-position ( auto | absolute | fixed | inherit ) #IMPLIED
|
|
%relative-position-properties;
|
|
">
|
|
|
|
|
|
<!-- Aural Properties -->
|
|
<!-- 'cue' and 'pause' shorthand properties are also included -->
|
|
<!ENTITY % aural-properties "
|
|
azimuth CDATA #IMPLIED
|
|
cue CDATA #IMPLIED
|
|
cue-after CDATA #IMPLIED
|
|
cue-before CDATA #IMPLIED
|
|
elevation CDATA #IMPLIED
|
|
pause CDATA #IMPLIED
|
|
pause-after CDATA #IMPLIED
|
|
pause-before CDATA #IMPLIED
|
|
pitch CDATA #IMPLIED
|
|
pitch-range CDATA #IMPLIED
|
|
play-during CDATA #IMPLIED
|
|
richness CDATA #IMPLIED
|
|
speak ( normal | none | spell-out | inherit ) #IMPLIED
|
|
speak-header ( once | always | inherit ) #IMPLIED
|
|
speak-numeral ( digits | continuous | inherit ) #IMPLIED
|
|
speak-punctuation ( code | none | inherit ) #IMPLIED
|
|
speech-rate CDATA #IMPLIED
|
|
stress CDATA #IMPLIED
|
|
voice-family CDATA #IMPLIED
|
|
volume CDATA #IMPLIED
|
|
">
|
|
|
|
|
|
<!-- Common Border, Padding, and Background Properties -->
|
|
<!-- Relative shorthand properties are also included -->
|
|
<!ENTITY % border-padding-background-properties "
|
|
background CDATA #IMPLIED
|
|
background-attachment ( scroll | fixed | inherit ) #IMPLIED
|
|
background-color CDATA #IMPLIED
|
|
background-image CDATA #IMPLIED
|
|
background-position CDATA #IMPLIED
|
|
background-position-vertical CDATA #IMPLIED
|
|
background-position-horizontal CDATA #IMPLIED
|
|
background-repeat ( repeat | repeat-x | repeat-y
|
|
| no-repeat | inherit ) #IMPLIED
|
|
rx:background-content-type CDATA #IMPLIED
|
|
rx:background-content-height CDATA #IMPLIED
|
|
rx:background-content-width CDATA #IMPLIED
|
|
rx:background-scaling ( uniform | non-uniform) #IMPLIED
|
|
border CDATA #IMPLIED
|
|
border-after-color CDATA #IMPLIED
|
|
border-after-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-after-width CDATA #IMPLIED
|
|
border-after-width.length CDATA #IMPLIED
|
|
border-after-width.conditionality ( discard | retain) #IMPLIED
|
|
border-before-color CDATA #IMPLIED
|
|
border-before-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-before-width CDATA #IMPLIED
|
|
border-before-width.length CDATA #IMPLIED
|
|
border-before-width.conditionality ( discard | retain) #IMPLIED
|
|
border-bottom CDATA #IMPLIED
|
|
border-bottom-color CDATA #IMPLIED
|
|
border-bottom-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-bottom-width CDATA #IMPLIED
|
|
border-bottom-width.length CDATA #IMPLIED
|
|
border-bottom-width.conditionality ( discard | retain) #IMPLIED
|
|
border-color CDATA #IMPLIED
|
|
border-end-color CDATA #IMPLIED
|
|
border-end-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-end-width CDATA #IMPLIED
|
|
border-end-width.length CDATA #IMPLIED
|
|
border-end-width.conditionality ( discard | retain) #IMPLIED
|
|
border-left CDATA #IMPLIED
|
|
border-left-color CDATA #IMPLIED
|
|
border-left-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-left-width CDATA #IMPLIED
|
|
border-left-width.length CDATA #IMPLIED
|
|
border-left-width.conditionality ( discard | retain) #IMPLIED
|
|
border-right CDATA #IMPLIED
|
|
border-right-color CDATA #IMPLIED
|
|
border-right-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-right-width CDATA #IMPLIED
|
|
border-right-width.length CDATA #IMPLIED
|
|
border-right-width.conditionality ( discard | retain) #IMPLIED
|
|
border-start-color CDATA #IMPLIED
|
|
border-start-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-start-width CDATA #IMPLIED
|
|
border-start-width.length CDATA #IMPLIED
|
|
border-start-width.conditionality ( discard | retain) #IMPLIED
|
|
border-style CDATA #IMPLIED
|
|
border-top CDATA #IMPLIED
|
|
border-top-color CDATA #IMPLIED
|
|
border-top-style ( none | hidden | dotted | dashed
|
|
| solid | double | groove | ridge
|
|
| inset | outset | inherit ) #IMPLIED
|
|
border-top-width CDATA #IMPLIED
|
|
border-top-width.length CDATA #IMPLIED
|
|
border-top-width.conditionality ( discard | retain) #IMPLIED
|
|
border-width CDATA #IMPLIED
|
|
padding CDATA #IMPLIED
|
|
padding-after CDATA #IMPLIED
|
|
padding-after.length CDATA #IMPLIED
|
|
padding-after.conditionality ( discard | retain) #IMPLIED
|
|
padding-before CDATA #IMPLIED
|
|
padding-before.length CDATA #IMPLIED
|
|
padding-before.conditionality ( discard | retain) #IMPLIED
|
|
padding-bottom CDATA #IMPLIED
|
|
padding-bottom.length CDATA #IMPLIED
|
|
padding-bottom.conditionality ( discard | retain) #IMPLIED
|
|
padding-end CDATA #IMPLIED
|
|
padding-end.length CDATA #IMPLIED
|
|
padding-end.conditionality ( discard | retain) #IMPLIED
|
|
padding-left CDATA #IMPLIED
|
|
padding-left.length CDATA #IMPLIED
|
|
padding-left.conditionality ( discard | retain) #IMPLIED
|
|
padding-right CDATA #IMPLIED
|
|
padding-right.length CDATA #IMPLIED
|
|
padding-right.conditionality ( discard | retain) #IMPLIED
|
|
padding-start CDATA #IMPLIED
|
|
padding-start.length CDATA #IMPLIED
|
|
padding-start.conditionality ( discard | retain) #IMPLIED
|
|
padding-top CDATA #IMPLIED
|
|
padding-top.length CDATA #IMPLIED
|
|
padding-top.conditionality ( discard | retain) #IMPLIED
|
|
">
|
|
|
|
<!-- Border Precedence Properties for tables -->
|
|
<!ENTITY % border-precedence-properties "
|
|
border-after-precedence CDATA #IMPLIED
|
|
border-before-precedence CDATA #IMPLIED
|
|
border-end-precedence CDATA #IMPLIED
|
|
border-start-precedence CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Box Size Properties -->
|
|
<!ENTITY % box-size-properties "
|
|
height CDATA #IMPLIED
|
|
min-height CDATA #IMPLIED
|
|
max-height CDATA #IMPLIED
|
|
width CDATA #IMPLIED
|
|
min-width CDATA #IMPLIED
|
|
max-width CDATA #IMPLIED
|
|
inline-progression-dimension CDATA #IMPLIED
|
|
inline-progression-dimension.minimum CDATA #IMPLIED
|
|
inline-progression-dimension.optimum CDATA #IMPLIED
|
|
inline-progression-dimension.maximum CDATA #IMPLIED
|
|
block-progression-dimension CDATA #IMPLIED
|
|
block-progression-dimension.minimum CDATA #IMPLIED
|
|
block-progression-dimension.optimum CDATA #IMPLIED
|
|
block-progression-dimension.maximum CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Common Area Properties -->
|
|
<!ENTITY % area-properties "
|
|
clip CDATA #IMPLIED
|
|
overflow ( visible | hidden | scroll | auto
|
|
| error-if-overflow | inherit ) #IMPLIED
|
|
display-align ( auto | before | center | after | inherit ) #IMPLIED
|
|
reference-orientation ( 0 | 90 | 180 | 270 | -90 | -180 | -270
|
|
| 0deg | 90deg | 180deg | 270deg
|
|
| -90deg | -180deg | -270deg | inherit ) #IMPLIED
|
|
writing-mode ( lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit ) #IMPLIED
|
|
">
|
|
|
|
|
|
<!-- Common Font Properties -->
|
|
<!-- 'font' shorthand property is also included -->
|
|
<!ENTITY % font-properties "
|
|
font CDATA #IMPLIED
|
|
font-selection-strategy (auto | character-by-character | inherit) #IMPLIED
|
|
font-family CDATA #IMPLIED
|
|
font-size CDATA #IMPLIED
|
|
font-size-adjust CDATA #IMPLIED
|
|
font-stretch (normal | wider | narrower
|
|
| ultra-condensed | extra-condensed | condensed
|
|
| semi-condensed | semi-expanded | expanded
|
|
| extra-expanded | ultra-expanded | inherit) #IMPLIED
|
|
font-style ( normal | italic | oblique | backslant | inherit) #IMPLIED
|
|
font-variant ( normal | small-caps | inherit ) #IMPLIED
|
|
font-weight (normal | bold | bolder | lighter | inherit
|
|
| 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900) #IMPLIED
|
|
">
|
|
|
|
<!-- Common Hyphenation Properties - Inline -->
|
|
<!-- 'xml:lang' shorthand property is also included -->
|
|
<!ENTITY % hyphenation-properties-inline "
|
|
country CDATA #IMPLIED
|
|
language CDATA #IMPLIED
|
|
script CDATA #IMPLIED
|
|
xml:lang CDATA #IMPLIED
|
|
hyphenate ( false | true | inherit ) #IMPLIED
|
|
hyphenation-character CDATA #IMPLIED
|
|
hyphenation-push-character-count CDATA #IMPLIED
|
|
hyphenation-remain-character-count CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Common Hyphenation Properties - Block -->
|
|
|
|
<!ENTITY % hyphenation-properties-block "
|
|
hyphenation-keep ( auto | column | page | inherit ) #IMPLIED
|
|
hyphenation-ladder-count CDATA #IMPLIED
|
|
%hyphenation-properties-inline;
|
|
">
|
|
|
|
|
|
<!-- Common CSS Margin Properties -->
|
|
<!-- 'margin' shorthand property is also included -->
|
|
<!ENTITY % margin-properties-CSS "
|
|
margin CDATA #IMPLIED
|
|
margin-bottom CDATA #IMPLIED
|
|
margin-left CDATA #IMPLIED
|
|
margin-right CDATA #IMPLIED
|
|
margin-top CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Common Margin Properties - Block -->
|
|
<!ENTITY % margin-properties-block "
|
|
%margin-properties-CSS;
|
|
space-after CDATA #IMPLIED
|
|
space-after.minimum CDATA #IMPLIED
|
|
space-after.optimum CDATA #IMPLIED
|
|
space-after.maximum CDATA #IMPLIED
|
|
space-after.precedence CDATA #IMPLIED
|
|
space-after.conditionality ( retain | discard ) #IMPLIED
|
|
space-before CDATA #IMPLIED
|
|
space-before.minimum CDATA #IMPLIED
|
|
space-before.optimum CDATA #IMPLIED
|
|
space-before.maximum CDATA #IMPLIED
|
|
space-before.precedence CDATA #IMPLIED
|
|
space-before.conditionality ( retain | discard ) #IMPLIED
|
|
start-indent CDATA #IMPLIED
|
|
end-indent CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Common Margin Properties - Inline -->
|
|
<!ENTITY % margin-properties-inline "
|
|
%margin-properties-block;
|
|
space-start CDATA #IMPLIED
|
|
space-start.minimum CDATA #IMPLIED
|
|
space-start.optimum CDATA #IMPLIED
|
|
space-start.maximum CDATA #IMPLIED
|
|
space-start.precedence CDATA #IMPLIED
|
|
space-start.conditionality ( retain | discard ) #IMPLIED
|
|
space-end CDATA #IMPLIED
|
|
space-end.minimum CDATA #IMPLIED
|
|
space-end.optimum CDATA #IMPLIED
|
|
space-end.maximum CDATA #IMPLIED
|
|
space-end.precedence CDATA #IMPLIED
|
|
space-end.conditionality ( retain | discard ) #IMPLIED
|
|
">
|
|
|
|
<!-- Area Alignment Properties - inline -->
|
|
<!-- 'vertical-align' shorthand is added -->
|
|
<!ENTITY % area-alignment-properties-inline "
|
|
alignment-adjust CDATA #IMPLIED
|
|
alignment-baseline ( auto | baseline | before-edge | text-before-edge
|
|
| middle | central | after-edge | text-after-edge
|
|
| top | text-top | bottom | text-bottom
|
|
| ideographic | alphabetic | hanging
|
|
| mathematical | inherit ) #IMPLIED
|
|
baseline-shift CDATA #IMPLIED
|
|
dominant-baseline ( auto | use-script | no-change
|
|
| reset-size | ideographic | alphabetic
|
|
| hanging | mathematical | central | middle
|
|
| text-after-edge | text-before-edge |inherit ) #IMPLIED
|
|
vertical-align CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Line Height Properties -->
|
|
|
|
<!ENTITY % line-height-properties "
|
|
line-height CDATA #IMPLIED
|
|
line-height.minimum CDATA #IMPLIED
|
|
line-height.optimum CDATA #IMPLIED
|
|
line-height.maximum CDATA #IMPLIED
|
|
line-height.precedence CDATA #IMPLIED
|
|
line-height.conditionality ( retain | discard ) #IMPLIED
|
|
line-height-shift-adjustment CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Line Related Properties -->
|
|
<!-- [!] <string> values are temporarily excluded from text-align -->
|
|
|
|
<!ENTITY % line-related-properties "
|
|
text-align ( start | center | end | justify
|
|
| inside | outside | left | right | inherit ) #IMPLIED
|
|
text-align-last ( relative | start | center | end | justify
|
|
| inside | outside | left | right | inherit ) #IMPLIED
|
|
text-indent CDATA #IMPLIED
|
|
last-line-end-indent CDATA #IMPLIED
|
|
line-stacking-strategy ( line-height | font-height
|
|
| max-height | inherit ) #IMPLIED
|
|
linefeed-treatment ( ignore | preserve | treat-as-space
|
|
| treat-as-zero-width-space | inherit ) #IMPLIED
|
|
white-space ( normal | pre | nowrap | inherit ) #IMPLIED
|
|
white-space-treatment ( ignore | preserve
|
|
| ignore-if-before-linefeed | ignore-if-after-linefeed
|
|
| ignore-if-surrounding-linefeed | inherit ) #IMPLIED
|
|
white-space-collapse ( false | true | inherit ) #IMPLIED
|
|
wrap-option ( no-wrap | wrap | inherit ) #IMPLIED
|
|
unicode-bidi ( normal | embed | bidi-override | inherit ) #IMPLIED
|
|
direction ( ltr | rtl | inherit ) #IMPLIED
|
|
">
|
|
|
|
|
|
<!-- Character Properties -->
|
|
|
|
<!ENTITY % character-properties "
|
|
letter-spacing CDATA #IMPLIED
|
|
letter-spacing.minimum CDATA #IMPLIED
|
|
letter-spacing.optimum CDATA #IMPLIED
|
|
letter-spacing.maximum CDATA #IMPLIED
|
|
letter-spacing.precedence CDATA #IMPLIED
|
|
letter-spacing.conditionality ( retain | discard ) #IMPLIED
|
|
word-spacing CDATA #IMPLIED
|
|
word-spacing.minimum CDATA #IMPLIED
|
|
word-spacing.optimum CDATA #IMPLIED
|
|
word-spacing.maximum CDATA #IMPLIED
|
|
word-spacing.precedence CDATA #IMPLIED
|
|
word-spacing.conditionality ( retain | discard ) #IMPLIED
|
|
treat-as-word-space ( auto | true | false | inherit ) #IMPLIED
|
|
text-decoration NMTOKENS #IMPLIED
|
|
score-spaces ( true | false | inherit ) #IMPLIED
|
|
text-shadow CDATA #IMPLIED
|
|
text-transform ( capitalize | uppercase | lowercase
|
|
| none | inherit ) #IMPLIED
|
|
suppress-at-line-break ( auto | suppress | retain | inherit ) #IMPLIED
|
|
text-altitude CDATA #IMPLIED
|
|
text-depth CDATA #IMPLIED
|
|
glyph-orientation-horizontal ( 0 | 90 | 180 | 270 | -90 | -180 | -270
|
|
| 0deg | 90deg | 180deg | 270deg
|
|
|-90deg | -180deg | -270deg | inherit ) #IMPLIED
|
|
glyph-orientation-vertical ( 0 | 90 | 180 | 270 | -90 | -180 | -270
|
|
| 0deg | 90deg | 180deg | 270deg
|
|
|-90deg | -180deg | -270deg | inherit ) #IMPLIED
|
|
%font-properties;
|
|
%line-height-properties;
|
|
">
|
|
|
|
|
|
<!-- Common Keeps and Breaks Properties - Atomic objects -->
|
|
<!-- 'page-break-*' shorthand properties are also included -->
|
|
<!ENTITY % keeps-and-breaks-properties-atomic "
|
|
break-after ( auto | column | page
|
|
| even-page | odd-page | inherit ) #IMPLIED
|
|
break-before ( auto | column | page
|
|
| even-page | odd-page | inherit ) #IMPLIED
|
|
keep-with-next CDATA #IMPLIED
|
|
keep-with-next.within-line CDATA #IMPLIED
|
|
keep-with-next.within-column CDATA #IMPLIED
|
|
keep-with-next.within-page CDATA #IMPLIED
|
|
keep-with-previous CDATA #IMPLIED
|
|
keep-with-previous.within-line CDATA #IMPLIED
|
|
keep-with-previous.within-column CDATA #IMPLIED
|
|
keep-with-previous.within-page CDATA #IMPLIED
|
|
page-break-after ( auto | always | avoid
|
|
| left | right | inherit ) #IMPLIED
|
|
page-break-before ( auto | always | avoid
|
|
| left | right | inherit ) #IMPLIED
|
|
">
|
|
|
|
<!-- Common Keeps and Breaks Properties - Inline -->
|
|
<!-- 'page-break-inside' shorthand property is also included -->
|
|
<!ENTITY % keeps-and-breaks-properties-inline "
|
|
%keeps-and-breaks-properties-atomic;
|
|
keep-together CDATA #IMPLIED
|
|
keep-together.within-line CDATA #IMPLIED
|
|
keep-together.within-column CDATA #IMPLIED
|
|
keep-together.within-page CDATA #IMPLIED
|
|
page-break-inside ( avoid | auto | inherit ) #IMPLIED
|
|
">
|
|
|
|
<!-- Common Keeps and Breaks Properties - Block -->
|
|
<!ENTITY % keeps-and-breaks-properties-block "
|
|
%keeps-and-breaks-properties-inline;
|
|
orphans CDATA #IMPLIED
|
|
widows CDATA #IMPLIED
|
|
">
|
|
|
|
|
|
<!-- Leader and Rule Properties -->
|
|
|
|
<!ENTITY % leader-properties "
|
|
leader-alignment ( none | reference-area | page | inherit ) #IMPLIED
|
|
leader-pattern ( space | rule | dots
|
|
| use-content | inherit ) #IMPLIED
|
|
leader-pattern-width CDATA #IMPLIED
|
|
leader-length CDATA #IMPLIED
|
|
leader-length.minimum CDATA #IMPLIED
|
|
leader-length.optimum CDATA #IMPLIED
|
|
leader-length.maximum CDATA #IMPLIED
|
|
rule-style ( none | dotted | dashed | solid | double
|
|
| groove | ridge | inherit ) #IMPLIED
|
|
rule-thickness CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Table Properties -->
|
|
<!-- 'border-spacing' shorthand property is also included -->
|
|
<!-- 'inherit' property added to table-omit-...er-at-break -->
|
|
|
|
<!ENTITY % table-properties "
|
|
border-collapse ( collapse | collapse-with-precedence | separate | inherit ) #IMPLIED
|
|
border-spacing CDATA #IMPLIED
|
|
border-separation CDATA #IMPLIED
|
|
border-separation.inline-progression-direction CDATA #IMPLIED
|
|
border-separation.block-progression-direction CDATA #IMPLIED
|
|
caption-side ( before | after | start | end
|
|
| top | bottom | left | right | inherit ) #IMPLIED
|
|
empty-cells ( show | hide | inherit ) #IMPLIED
|
|
table-layout ( auto | fixed | inherit ) #IMPLIED
|
|
table-omit-header-at-break ( true | false | inherit ) #IMPLIED
|
|
table-omit-footer-at-break ( true | false | inherit ) #IMPLIED
|
|
">
|
|
|
|
<!-- List Properties -->
|
|
|
|
<!ENTITY % list-properties "
|
|
provisional-distance-between-starts CDATA #IMPLIED
|
|
provisional-label-separation CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- Float Properties -->
|
|
|
|
<!ENTITY % float-properties "
|
|
float ( before | start | end | left | right | none | inherit ) #IMPLIED
|
|
clear ( start | end | left | right | both | none | inherit ) #IMPLIED
|
|
intrusion-displace ( auto | none | line | indent | block | inherit ) #IMPLIED
|
|
">
|
|
|
|
<!-- Visibility Properties -->
|
|
|
|
<!ENTITY % visibility-properties "
|
|
visibility ( visible | hidden | collapse | inherit ) #IMPLIED
|
|
z-index CDATA #IMPLIED
|
|
">
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Set of all inheritable properties. This includes attributes -->
|
|
<!-- marked as inheritable in the spec, as well as all features that -->
|
|
<!-- may assume a value of "inherit" (because all such features are -->
|
|
<!-- also permitted at parent elements). By XSL design, this set -->
|
|
<!-- comprises nearly all attributes. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ENTITY % inheritable-properties "
|
|
color CDATA #IMPLIED
|
|
relative-align ( before | baseline | inherit ) #IMPLIED
|
|
span ( none | all | inherit ) #IMPLIED
|
|
|
|
%accessibility-properties;
|
|
%absolute-or-relative-position-properties;
|
|
%border-padding-background-properties;
|
|
%border-precedence-properties;
|
|
%aural-properties;
|
|
%box-size-properties;
|
|
%margin-properties-inline;
|
|
%area-properties;
|
|
%area-alignment-properties-inline;
|
|
%character-properties;
|
|
%table-properties;
|
|
%list-properties;
|
|
%float-properties;
|
|
%line-related-properties;
|
|
%leader-properties;
|
|
%keeps-and-breaks-properties-block;
|
|
%hyphenation-properties-block;
|
|
%visibility-properties;
|
|
">
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Common property subsets. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!-- Properties for every block that may contain text children -->
|
|
|
|
<!ENTITY % block-properties "
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
">
|
|
|
|
<!-- Properties for nonempty inline elements -->
|
|
|
|
<!ENTITY % inline-properties "
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
">
|
|
|
|
|
|
<!-- Properties for empty inline elements that contain characters -->
|
|
|
|
<!ENTITY % empty-inline-properties "
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
color CDATA #IMPLIED
|
|
%accessibility-properties;
|
|
%aural-properties;
|
|
%relative-position-properties;
|
|
%area-alignment-properties-inline;
|
|
%character-properties;
|
|
%border-padding-background-properties;
|
|
%hyphenation-properties-inline;
|
|
%visibility-properties;
|
|
">
|
|
|
|
<!-- Properties for graphical inline elements -->
|
|
|
|
<!ENTITY % graphic-properties "
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
content-type CDATA #IMPLIED
|
|
|
|
%accessibility-properties;
|
|
%relative-position-properties;
|
|
%aural-properties;
|
|
%border-padding-background-properties;
|
|
%margin-properties-inline;
|
|
%area-alignment-properties-inline;
|
|
%box-size-properties;
|
|
%font-properties;
|
|
%line-height-properties;
|
|
%keeps-and-breaks-properties-atomic;
|
|
|
|
content-height CDATA #IMPLIED
|
|
content-width CDATA #IMPLIED
|
|
display-align ( auto | before | center | after | inherit ) #IMPLIED
|
|
overflow ( visible | hidden | scroll | auto
|
|
| error-if-overflow | inherit ) #IMPLIED
|
|
scaling ( uniform | non-uniform | inherit ) #IMPLIED
|
|
scaling-method ( auto | integer-pixels
|
|
| resample-any-method | inherit ) #IMPLIED
|
|
text-align ( start | center | end | justify
|
|
| inside | outside | left | right | inherit ) #IMPLIED
|
|
">
|
|
|
|
|
|
|
|
<!-- *************************************************************** -->
|
|
<!-- Content models and attributes -->
|
|
<!-- -->
|
|
<!-- A. Element structure for top-level elements -->
|
|
<!-- *************************************************************** -->
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Root element. Contains everything, generates nothing. It has an -->
|
|
<!-- id, a FO namespace prefix declaration, and other namespace -->
|
|
<!-- declarations if used. It can also bear inheritable properties, -->
|
|
<!-- passed further to fo:flows/fo:static-contents. Inheritable -->
|
|
<!-- properties from fo:layout-master-set are banned in this version -->
|
|
<!-- of the DTD. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:root (
|
|
rx:meta-info?,
|
|
rx:page-device?,
|
|
fo:layout-master-set,
|
|
fo:declarations?,
|
|
rx:outline?,
|
|
fo:page-sequence+
|
|
)
|
|
>
|
|
<!ATTLIST fo:root
|
|
xmlns:fo CDATA #REQUIRED
|
|
xmlns:rx CDATA #IMPLIED
|
|
xmlns:svg CDATA #IMPLIED
|
|
media-usage ( auto | paginate | bounded-in-one-dimension | unbounded ) #IMPLIED
|
|
%inheritable-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Document meta information - RenderX extension -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT rx:meta-info (rx:meta-field+)>
|
|
<!ATTLIST rx:meta-info
|
|
xmlns:rx CDATA #IMPLIED
|
|
>
|
|
|
|
<!ELEMENT rx:meta-field EMPTY>
|
|
<!ATTLIST rx:meta-field
|
|
name CDATA #REQUIRED
|
|
value CDATA #REQUIRED
|
|
>
|
|
|
|
<!ELEMENT rx:page-device EMPTY>
|
|
<!ATTLIST rx:page-device
|
|
input-tray CDATA #IMPLIED
|
|
output-tray CDATA #IMPLIED
|
|
manual-feed (true|false) #IMPLIED
|
|
|
|
duplex (true|false) #IMPLIED
|
|
mirror-print (true|false) #IMPLIED
|
|
negative-print (true|false) #IMPLIED
|
|
|
|
collate (true|false) #IMPLIED
|
|
number-copies CDATA #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Color profile declarations -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:declarations (
|
|
fo:color-profile+
|
|
)
|
|
>
|
|
|
|
<!ELEMENT fo:color-profile EMPTY >
|
|
|
|
<!ATTLIST fo:color-profile
|
|
src CDATA #REQUIRED
|
|
color-profile-name CDATA #REQUIRED
|
|
rendering-intent CDATA #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Bookmarks - RenderX extension -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT rx:outline (
|
|
rx:bookmark+
|
|
)
|
|
>
|
|
<!ATTLIST rx:outline
|
|
xmlns:rx CDATA #IMPLIED
|
|
>
|
|
|
|
<!ELEMENT rx:bookmark (
|
|
rx:bookmark-label,
|
|
rx:bookmark*
|
|
)
|
|
>
|
|
<!ATTLIST rx:bookmark
|
|
internal-destination CDATA #IMPLIED
|
|
external-destination CDATA #IMPLIED
|
|
collapse-subtree (true | false) #IMPLIED
|
|
>
|
|
|
|
<!ELEMENT rx:bookmark-label (#PCDATA) >
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Layout-master-set. Contains a set of page-masters. Neither of -->
|
|
<!-- its descendants generates any area, so no inherited elements -->
|
|
<!-- can be specified on it or on its children. -->
|
|
<!-- Content model made more strict than in the draft, to enforce -->
|
|
<!-- that a page-sequence-master be always accompanied by at least -->
|
|
<!-- one simple-page-master. -->
|
|
<!-- =============================================================== -->
|
|
|
|
|
|
<!ELEMENT fo:layout-master-set
|
|
(
|
|
fo:page-sequence-master*, fo:simple-page-master,
|
|
( fo:simple-page-master | fo:page-sequence-master )*
|
|
)
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Page sequence master -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:page-sequence-master (
|
|
(
|
|
fo:single-page-master-reference
|
|
| fo:repeatable-page-master-reference
|
|
| fo:repeatable-page-master-alternatives
|
|
)+
|
|
)
|
|
>
|
|
<!ATTLIST fo:page-sequence-master
|
|
master-name CDATA #REQUIRED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Sequence specifiers are predefined sequences of page masters -->
|
|
<!-- that are used by page sequence master to construct a desired -->
|
|
<!-- page collection. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:single-page-master-reference EMPTY>
|
|
<!ATTLIST fo:single-page-master-reference
|
|
master-reference CDATA #REQUIRED
|
|
>
|
|
|
|
<!ELEMENT fo:repeatable-page-master-reference EMPTY>
|
|
<!ATTLIST fo:repeatable-page-master-reference
|
|
master-reference CDATA #REQUIRED
|
|
maximum-repeats CDATA #IMPLIED
|
|
>
|
|
|
|
<!ELEMENT fo:repeatable-page-master-alternatives
|
|
( fo:conditional-page-master-reference+ )
|
|
>
|
|
<!ATTLIST fo:repeatable-page-master-alternatives
|
|
maximum-repeats CDATA #IMPLIED
|
|
>
|
|
|
|
<!ELEMENT fo:conditional-page-master-reference EMPTY>
|
|
<!ATTLIST fo:conditional-page-master-reference
|
|
master-reference CDATA #REQUIRED
|
|
page-position ( first | last | rest | any | inherit ) #IMPLIED
|
|
odd-or-even ( odd | even | any | inherit ) #IMPLIED
|
|
blank-or-not-blank ( blank | not-blank | any | inherit ) #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Simple page master defines a page layout. It does not -->
|
|
<!-- explicitly generate any content. Most of its properties are -->
|
|
<!-- local except for writing-mode and reference-orientation that -->
|
|
<!-- are inherited by the underlying region-* objects. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!-- NOTE. We could think about a common background/padding/border -->
|
|
<!-- for every page instance generated by the page master. For such -->
|
|
<!-- a scope, we may add borders/padding/background to its features. -->
|
|
<!-- However, in the current version this is ruled out explicitly by -->
|
|
<!-- the XSL specs. -->
|
|
|
|
<!ELEMENT fo:simple-page-master
|
|
(
|
|
fo:region-body,
|
|
fo:region-before?,
|
|
fo:region-after?,
|
|
fo:region-start?,
|
|
fo:region-end?
|
|
)
|
|
>
|
|
|
|
<!ATTLIST fo:simple-page-master
|
|
%margin-properties-CSS;
|
|
master-name CDATA #REQUIRED
|
|
page-height CDATA #IMPLIED
|
|
page-width CDATA #IMPLIED
|
|
size CDATA #IMPLIED
|
|
reference-orientation ( 0 | 90 | 180 | 270 | -90 | -180 | -270
|
|
| 0deg | 90deg | 180deg | 270deg
|
|
| -90deg | -180deg | -270deg | inherit ) #IMPLIED
|
|
writing-mode ( lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit ) #IMPLIED
|
|
>
|
|
|
|
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
<!-- Regions. The page instance is divided into subareas, whose -->
|
|
<!-- properties are described by the five region-* elements. These -->
|
|
<!-- elements by themselves do not generate any content. -->
|
|
<!-- Reference-orientation and writing-mode may be inherited from -->
|
|
<!-- the page master; all other features are local. -->
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
|
|
<!ENTITY % region-properties "
|
|
%border-padding-background-properties;
|
|
%area-properties;
|
|
|
|
region-name CDATA #IMPLIED
|
|
">
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Body region: middle of the page. Unlike side regions, this one -->
|
|
<!-- may have multiple columns. -->
|
|
<!-- [!] We have restricted margin properties to be margin-only, -->
|
|
<!-- allowing no spaces. This is done because no clear semantics -->
|
|
<!-- can be ascribed to single components of a space vector. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:region-body EMPTY>
|
|
<!ATTLIST fo:region-body
|
|
%region-properties;
|
|
%margin-properties-CSS;
|
|
column-count CDATA #IMPLIED
|
|
column-gap CDATA #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Side regions: page edges. These regions have extent and -->
|
|
<!-- precedence that is used to arbitrate corner conflicts. Side -->
|
|
<!-- regions are viewed as frames, and may not have margins. -->
|
|
<!-- Extent made obligatory: its default value of 0.0pt does not -->
|
|
<!-- make much sense. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ENTITY % side-region-properties "
|
|
%region-properties;
|
|
extent CDATA #REQUIRED
|
|
precedence ( true | false | inherit ) #IMPLIED
|
|
">
|
|
|
|
<!ELEMENT fo:region-before EMPTY>
|
|
<!ATTLIST fo:region-before %side-region-properties;>
|
|
|
|
<!ELEMENT fo:region-after EMPTY>
|
|
<!ATTLIST fo:region-after %side-region-properties;>
|
|
|
|
<!ELEMENT fo:region-start EMPTY>
|
|
<!ATTLIST fo:region-start %side-region-properties;>
|
|
|
|
<!ELEMENT fo:region-end EMPTY>
|
|
<!ATTLIST fo:region-end %side-region-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Page sequence defines the order of choosing page masters to -->
|
|
<!-- accomodate all the contents generated by its fo:flow and -->
|
|
<!-- fo:static-content children, and the way of numbering them. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:page-sequence
|
|
(
|
|
fo:title?,
|
|
fo:static-content*,
|
|
fo:flow
|
|
)
|
|
>
|
|
<!ATTLIST fo:page-sequence
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
master-reference CDATA #REQUIRED
|
|
|
|
initial-page-number CDATA #IMPLIED
|
|
force-page-count ( auto | even | odd | end-on-even
|
|
| end-on-odd | no-force | inherit) #IMPLIED
|
|
|
|
format CDATA #IMPLIED
|
|
letter-value ( auto | alphabetic | traditional ) #IMPLIED
|
|
grouping-separator CDATA #IMPLIED
|
|
grouping-size CDATA #IMPLIED
|
|
|
|
%inheritable-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Title may not contain out-of-lines. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:title
|
|
( #PCDATA
|
|
| %basic-inlines;
|
|
| %wrappers; )*
|
|
>
|
|
|
|
<!ATTLIST fo:title %inheritable-properties;>
|
|
|
|
|
|
<!-- *************************************************************** -->
|
|
<!-- B. Element structure for content-bearing elements -->
|
|
<!-- *************************************************************** -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Flows. They are just sequences of blocks. 'flow-name' feature -->
|
|
<!-- defines linkage of the flow to a region in the page master. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- An extension element, fo:flow-section, has been added in order -->
|
|
<!-- to overcome limitations on multicolumn layout imposed by XSL FO -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ENTITY % flow-properties "
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
flow-name CDATA #REQUIRED
|
|
%inheritable-properties;
|
|
">
|
|
|
|
<!ELEMENT fo:static-content (%blocks;)+ >
|
|
<!ATTLIST fo:static-content %flow-properties; >
|
|
|
|
<!ELEMENT fo:flow (%blocks; | rx:flow-section)+ >
|
|
<!ATTLIST fo:flow %flow-properties; >
|
|
|
|
<!-- Extension element. Acts like a top-level block -->
|
|
<!-- with multiple columns. -->
|
|
|
|
<!ELEMENT rx:flow-section (%blocks;)+ >
|
|
<!ATTLIST rx:flow-section
|
|
column-count CDATA #IMPLIED
|
|
column-gap CDATA #IMPLIED
|
|
%block-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Block is the base element for all content areas. Besides -->
|
|
<!-- properties used to format the block itself, it also conveys -->
|
|
<!-- formatting information to its inline-level children. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:block (
|
|
#PCDATA
|
|
| fo:initial-property-set
|
|
| %basic-inlines;
|
|
| %basic-blocks;
|
|
| %out-of-lines;
|
|
| %wrappers;
|
|
)*
|
|
>
|
|
<!ATTLIST fo:block %block-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Block container -->
|
|
<!-- =============================================================== -->
|
|
<!ELEMENT fo:block-container ( %blocks; )+ >
|
|
<!ATTLIST fo:block-container %block-properties;>
|
|
|
|
<!-- *************************************************************** -->
|
|
<!-- Inline elements -->
|
|
<!-- *************************************************************** -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Unicode bidi-override -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:bidi-override ( %inlines; )*>
|
|
<!ATTLIST fo:bidi-override %inline-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Single character -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:character EMPTY>
|
|
<!ATTLIST fo:character
|
|
character CDATA #REQUIRED
|
|
%empty-inline-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Initial property set specifies properties for one or more lines -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:initial-property-set EMPTY>
|
|
<!ATTLIST fo:initial-property-set
|
|
%empty-inline-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- External graphic -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:external-graphic EMPTY >
|
|
<!ATTLIST fo:external-graphic
|
|
%graphic-properties;
|
|
src CDATA #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- In-stream graphic -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:instream-foreign-object ANY>
|
|
<!ATTLIST fo:instream-foreign-object %graphic-properties;>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- An element to mark a point in the XML output (RenderX extension)-->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT rx:pinpoint EMPTY>
|
|
<!ATTLIST rx:pinpoint
|
|
value CDATA #REQUIRED
|
|
|
|
%accessibility-properties;
|
|
%relative-position-properties;
|
|
%area-alignment-properties-inline;
|
|
%keeps-and-breaks-properties-atomic;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Inline -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:inline ( %mixed-level; )*>
|
|
<!ATTLIST fo:inline %inline-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Inline container -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:inline-container ( %blocks; )*>
|
|
<!ATTLIST fo:inline-container %inline-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Leader -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:leader ( %inlines; )*>
|
|
<!ATTLIST fo:leader
|
|
%inline-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Page Number -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:page-number EMPTY>
|
|
<!ATTLIST fo:page-number %empty-inline-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Page number citation -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:page-number-citation EMPTY>
|
|
<!ATTLIST fo:page-number-citation
|
|
%empty-inline-properties;
|
|
ref-id CDATA #REQUIRED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Page number list - index entry -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT rx:page-index EMPTY>
|
|
<!ATTLIST rx:page-index
|
|
%empty-inline-properties;
|
|
ref-key CDATA #REQUIRED
|
|
list-separator CDATA #IMPLIED
|
|
range-separator CDATA #IMPLIED
|
|
merge-subsequent-page-numbers CDATA #IMPLIED
|
|
>
|
|
|
|
|
|
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
<!-- Formatting objects for tables. -->
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Table & Caption is a wrapper to all the stuff pertinent to a -->
|
|
<!-- given table. It generates a block consisting of two subblocks: -->
|
|
<!-- one for the caption, another one for the table itself. The -->
|
|
<!-- placement of these two blocks is controlled by the -->
|
|
<!-- 'caption-side' property: if caption-side="before"|"after" (or -->
|
|
<!-- their absolute orientation equivalents), the two blocks are -->
|
|
<!-- drawn one after another; if it is "start"|"end", then the -->
|
|
<!-- caption is displayed on the correspondent side of the table. -->
|
|
<!-- In this case, the relative alignment of the two blocks is given -->
|
|
<!-- by the 'relative-align'/'display-align' property. -->
|
|
<!-- -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:table-and-caption (
|
|
fo:table-caption?,
|
|
fo:table
|
|
)
|
|
>
|
|
|
|
<!ATTLIST fo:table-and-caption %block-properties;>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Table caption is an area container. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:table-caption ( %blocks; )+ >
|
|
<!ATTLIST fo:table-caption %block-properties;>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- fo:table is the basic element for all tables. All the contents -->
|
|
<!-- placed inside it is distributed over a single rectangular grid -->
|
|
<!-- of rows and columns. -->
|
|
<!-- =============================================================== -->
|
|
|
|
|
|
<!ELEMENT fo:table (
|
|
fo:table-column*,
|
|
fo:table-header?,
|
|
fo:table-footer?,
|
|
fo:table-body+
|
|
)
|
|
>
|
|
<!ATTLIST fo:table %block-properties;>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Table column specifies common properties to ascribe to all -->
|
|
<!-- cells in a column *or a group of columns*. Note that, if both -->
|
|
<!-- 'number-columns-repeated' and 'number-columns-spanned' exceed -->
|
|
<!-- 1, the column counter is increased by 'number-columns-spanned'. -->
|
|
<!-- it means that you only set properties for columns: -->
|
|
<!-- 'column-number' -->
|
|
<!-- 'column-number' + 'number-columns-spanned' -->
|
|
<!-- 'column-number' + 2 * 'number-columns-spanned' -->
|
|
<!-- and so on, leaving default properties for intermediate columns. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:table-column EMPTY >
|
|
<!ATTLIST fo:table-column
|
|
column-number CDATA #IMPLIED
|
|
column-width CDATA #IMPLIED
|
|
number-columns-repeated CDATA #IMPLIED
|
|
number-columns-spanned CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Table header, table footer, and table body are wrappers for -->
|
|
<!-- groups of rows. They contain either one or more fo:table-rows, -->
|
|
<!-- or one or more fo:table-cells; in the latter case, row breaks -->
|
|
<!-- are specified in the cells by 'starts-row'/'ends-row'. -->
|
|
<!-- All these elements are identical both in the content structure -->
|
|
<!-- and in the attributes. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ENTITY % row-group " fo:table-row+ | fo:table-cell+ ">
|
|
|
|
<!ELEMENT fo:table-header ( %row-group; ) >
|
|
<!ATTLIST fo:table-header
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
>
|
|
|
|
<!ELEMENT fo:table-footer ( %row-group;) >
|
|
<!ATTLIST fo:table-footer
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
>
|
|
|
|
<!ELEMENT fo:table-body ( %row-group; )>
|
|
<!ATTLIST fo:table-body
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Table row. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:table-row ( fo:table-cell+ ) >
|
|
<!ATTLIST fo:table-row
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Table cell. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:table-cell ( %blocks; )+ >
|
|
<!ATTLIST fo:table-cell
|
|
%block-properties;
|
|
|
|
column-number CDATA #IMPLIED
|
|
ends-row ( true | false ) #IMPLIED
|
|
number-columns-spanned CDATA #IMPLIED
|
|
number-rows-spanned CDATA #IMPLIED
|
|
starts-row ( true | false ) #IMPLIED
|
|
>
|
|
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
<!-- Formatting objects for lists. -->
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- List block is a block, with some extra features to control the -->
|
|
<!-- disposition of list items. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:list-block ( fo:list-item+ ) >
|
|
<!ATTLIST fo:list-block %block-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- List item is a coupling of item label and item body. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:list-item ( fo:list-item-label, fo:list-item-body ) >
|
|
<!ATTLIST fo:list-item %block-properties;>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- List item label and list item body -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:list-item-label ( %blocks; )+ >
|
|
<!ATTLIST fo:list-item-label %block-properties;>
|
|
|
|
<!ELEMENT fo:list-item-body ( %blocks;)+ >
|
|
<!ATTLIST fo:list-item-body %block-properties;>
|
|
|
|
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
<!-- Out-of-lines. -->
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Floats and footnotes resemble containers. Accordingly, we treat -->
|
|
<!-- them as block sequences. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:float ( %blocks; )+ >
|
|
<!ATTLIST fo:float %block-properties;>
|
|
|
|
|
|
<!ELEMENT fo:footnote (
|
|
fo:inline,
|
|
fo:footnote-body
|
|
)
|
|
>
|
|
|
|
<!ATTLIST fo:footnote %block-properties;>
|
|
|
|
|
|
<!ELEMENT fo:footnote-body ( %blocks; )+ >
|
|
<!ATTLIST fo:footnote-body %block-properties;>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Simple link. From the formatting point of view, it's nothing -->
|
|
<!-- but a regular inline sequence. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:basic-link ( %mixed-level; )* >
|
|
<!ATTLIST fo:basic-link
|
|
%inline-properties;
|
|
|
|
external-destination CDATA #IMPLIED
|
|
internal-destination CDATA #IMPLIED
|
|
indicate-destination ( true | false ) #IMPLIED
|
|
show-destination ( replace | new ) #IMPLIED
|
|
destination-placement-offset CDATA #IMPLIED
|
|
target-processing-context CDATA #IMPLIED
|
|
target-presentation-context CDATA #IMPLIED
|
|
target-stylesheet CDATA #IMPLIED
|
|
>
|
|
|
|
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
<!-- Wrappers and Markers. -->
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Wrapper. This may be useful but breaks every effort to validate -->
|
|
<!-- content models for blocks and inlines. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:wrapper ( %mixed-level; )* >
|
|
<!ATTLIST fo:wrapper
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
%inheritable-properties;
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Marker. This element may embrace any content but cannot pass -->
|
|
<!-- properties to its children; so, it may not have features other -->
|
|
<!-- than marker-class-name. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:marker ( %mixed-level; )* >
|
|
<!ATTLIST fo:marker
|
|
marker-class-name CDATA #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Marker retrieval. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:retrieve-marker EMPTY>
|
|
<!ATTLIST fo:retrieve-marker
|
|
retrieve-class-name CDATA #IMPLIED
|
|
retrieve-position ( first-starting-within-page
|
|
| first-including-carryover
|
|
| last-starting-within-page
|
|
| last-ending-within-page ) #IMPLIED
|
|
retrieve-boundary ( page | page-sequence | document ) #IMPLIED
|
|
>
|
|
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
<!-- Multistate stuff. This section is the least developed in the -->
|
|
<!-- whole DTD, and most solutions are arbitrary. We beg thy pardon. -->
|
|
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Switch. This is a pure logical operator; no formatting may be -->
|
|
<!-- conveyed through it. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:multi-switch ( fo:multi-case )+ >
|
|
<!ATTLIST fo:multi-switch
|
|
%inheritable-properties;
|
|
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
auto-restore ( true | false ) #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Single case. Block-level formatting may be conveyed. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:multi-case ( %mixed-level; )* >
|
|
|
|
<!ATTLIST fo:multi-case
|
|
%inheritable-properties;
|
|
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
starting-state CDATA #IMPLIED
|
|
case-name CDATA #IMPLIED
|
|
case-title CDATA #IMPLIED
|
|
>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Toggle. This is a typical inline. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:multi-toggle ( %inlines; )*>
|
|
<!ATTLIST fo:multi-toggle
|
|
%inheritable-properties;
|
|
|
|
id CDATA #IMPLIED
|
|
rx:key CDATA #IMPLIED
|
|
switch-to CDATA #IMPLIED
|
|
>
|
|
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Multi-properties is listed among block-level elements. -->
|
|
<!-- Formatting common to all property sets can be specified here; -->
|
|
<!-- we expect it to be block-level only. -->
|
|
<!-- =============================================================== -->
|
|
|
|
|
|
<!ELEMENT fo:multi-properties
|
|
(
|
|
fo:multi-property-set+,
|
|
fo:wrapper
|
|
)
|
|
>
|
|
<!ATTLIST fo:multi-properties %block-properties;>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Multi property set. Since these are properties of a -->
|
|
<!-- fo:multi-properties that is considered a block, we accept only -->
|
|
<!-- block properties here. -->
|
|
<!-- =============================================================== -->
|
|
|
|
<!ELEMENT fo:multi-property-set EMPTY>
|
|
<!ATTLIST fo:multi-property-set
|
|
%block-properties;
|
|
active-state ( link | visited | active | hover | focus ) #REQUIRED
|
|
>
|