home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2002 December / INTERNET97.ISO / pc / software / windows / building / xmlspy / setup44.exe / Data1.cab / def_fo.dtd < prev    next >
Encoding:
Extensible Markup Language  |  2002-05-23  |  54.3 KB  |  1,246 lines

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- 
  3.    This DTD has been developed in order to validate XSL FO documents 
  4.    conformant to XSL Recommendation of October 15, 2001. The namespace 
  5.    prefix is 
  6.    
  7.      xmlns:fo="http://www.w3.org/1999/XSL/Format".
  8.  
  9.    This DTD also makes provision for few extensions to XSL Rec, put 
  10.    into a separate namespace: 
  11.  
  12.      xmlns:rx="http://www.renderx.com/XSL/Extensions".
  13.  
  14.    Please e-mail your comments to Nikolai Grigoriev <grig@renderx.com>
  15.  
  16.    ┬⌐ RenderX, 1999-2002. 
  17.  
  18. -->
  19. <!-- *******************************************************************
  20.  
  21. This DTD was written in mind to validate testcases for the new XSL FO 
  22. draft. Therefore, it is restrictive with respect to the Recommendation: 
  23. some rare XSL FO features have been dropped in order to validate others 
  24. more reliably. Unless a document intentionally uses some of the 
  25. functionality listed below in the introductory notes, it shall be 
  26. conformant to this DTD in order to be a valid XSL FO document. 
  27.  
  28. INTRODUCTORY NOTES
  29.  
  30. 1. XSL FO are hard to validate by a DTD: attributes are universally 
  31. inheritable due to the adoption of the 'inherit' value from CSS2; and 
  32. even for the content model, presence of universal wrappers like fo:wrapper 
  33. makes it impossible to trace a neat distinction between inline-level and 
  34. block-level content. Therefore, this version of the DTD cannot reliably
  35. detect inconsistencies in attribute sets: real checks are performed 
  36. only for empty inline elements and top-level elements (fo:layout-master-set 
  37. and its descendants). 
  38.  
  39. 2. The contents of the fo:instream-foreign-object element is hardwired to
  40. be an SVG graphic. To validate it, this DTD includes an SVG DTD as an 
  41. external entity.
  42.  
  43. DEVIATIONS FROM THE DRAFT
  44.  
  45. 1. Content model for <fo:layout-master-set> is made more strict:
  46. at least one fo:simple-page-master should be present. (I think this 
  47. is more like a correction to the Recommendation, rather than 
  48. a deviation from it).
  49.  
  50. 2. In XSL 1.0, page and region-body margins may be expressed in terms
  51. of space-*. This does not make much sense, as far as no stacked 
  52. constraint may occur. For this reason, I have disabled spaces
  53. in this context, leaving only plain old CSS margins.
  54.  
  55. 3. Attributes of elements inside fo:layout-master-set may have a value 
  56. of 'inherit'. However, I have disabled the occurrence of such attributes
  57. on parent elements: inheriting them buys us little in terms of 
  58. conciseness, but is error-prone in the initial phase.
  59.  
  60. 4. Table-omit-{header|footer}-at-break is added a value of 'inherit',
  61. to align it with the rest of table attributes. (If table-layout may have
  62. it, why these two should not?)
  63.  
  64. 5. Text-align has a closed list of values, neglecting the <string> value
  65. type. The reason is practical: many stylesheet writers are used to write 
  66. "centered" and "justified", whereas the correct values for this version 
  67. of the draft are "center" and "justify"; catching this error in the DTD
  68. turned out to be useful. Moreover, <string> values are poorly described 
  69. in the draft (nothing but a reference to CSS2), and are unlikely to be 
  70. implemented soon. (Ultimate reason: changing the attribute value back to 
  71. CDATA is a matter of few seconds ;-)).
  72.  
  73. 6. Only basic values for writing-mode are included. 
  74.  
  75. 7. Several extension elements and properties are added to enable 
  76. functionality missing from the Proposed Recommendation:
  77.  
  78. rx:background-content-height
  79. rx:background-content-width
  80. rx:background-scaling
  81.  
  82.    These properties are exact analogs of 'content-height', 'content-width'
  83.    and 'scaling' but apply to the background image.
  84.  
  85. rx:outline
  86. rx:bookmark
  87. rx:bookmark-label
  88.  
  89.    These elements implement PDF bookmarks.
  90.  
  91. rx:meta-info
  92. rx:meta-field
  93.  
  94.    These elements pass meta-information about the document.
  95.  
  96. rx:page-device 
  97.  
  98.    This element permits passing parameters to setpagedevice
  99.    operator in PostScript
  100.  
  101.  
  102. ******************************************************************** -->
  103. <!-- *************************************************************** -->
  104. <!-- Include external DTDs for foreign objects                       -->
  105. <!-- *************************************************************** -->
  106. <!--
  107. <!ENTITY % instream-foreign-object-dtd 
  108.            PUBLIC "-//W3C//DTD SVG 1.0//EN"
  109.            "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
  110. %instream-foreign-object-dtd; 
  111. -->
  112. <!-- *************************************************************** -->
  113. <!-- Entity definitions for groups of formatting objects             -->
  114. <!-- *************************************************************** -->
  115. <!ENTITY % basic-inlines "
  116.     fo:bidi-override
  117.   | fo:character
  118.   | fo:external-graphic
  119.   | fo:instream-foreign-object  
  120.   | fo:inline
  121.   | fo:inline-container
  122.   | fo:leader
  123.   | fo:page-number
  124.   | fo:page-number-citation
  125.   | fo:basic-link
  126.   | fo:multi-toggle
  127. ">
  128. <!ENTITY % basic-blocks "
  129.     fo:block
  130.   | fo:block-container
  131.   | fo:table-and-caption
  132.   | fo:table
  133.   | fo:list-block
  134. ">
  135. <!ENTITY % out-of-lines "
  136.     fo:footnote
  137.   | fo:float
  138. ">
  139. <!ENTITY % wrappers "
  140.     fo:multi-switch
  141.   | fo:multi-properties
  142.   | fo:wrapper 
  143.   | fo:marker
  144.   | fo:retrieve-marker
  145. ">
  146. <!ENTITY % inlines " 
  147.     #PCDATA 
  148.   | %basic-inlines; 
  149.   | %out-of-lines; 
  150.   | %wrappers;
  151. ">
  152. <!ENTITY % blocks " 
  153.     %basic-blocks; 
  154.   | %out-of-lines; 
  155.   | %wrappers;
  156. ">
  157. <!ENTITY % mixed-level " 
  158.     #PCDATA 
  159.   | %basic-inlines; 
  160.   | %basic-blocks; 
  161.   | %out-of-lines; 
  162.   | %wrappers;
  163. ">
  164. <!-- *************************************************************** -->
  165. <!-- Entity definitions for common groups of properties              -->
  166. <!-- This grouping reflects properties cooccurrence, rather than     -->
  167. <!-- property semantics. It does not correspond to grouping in the   -->
  168. <!-- draft.                                                          -->
  169. <!-- *************************************************************** -->
  170. <!-- Accessibility Properties                                        -->
  171. <!ENTITY % accessibility-properties "
  172.   source-document  CDATA  #IMPLIED
  173.   role  CDATA  #IMPLIED
  174. ">
  175. <!-- Relative Position Properties                                    -->
  176. <!-- 'position' shorthand property also makes part of this group     -->
  177. <!ENTITY % relative-position-properties "
  178.   relative-position  ( auto | static | relative | inherit )  #IMPLIED
  179.   position  ( static | relative | absolute | fixed | inherit)  #IMPLIED
  180.   top  CDATA  #IMPLIED
  181.   right  CDATA  #IMPLIED
  182.   bottom  CDATA  #IMPLIED
  183.   left  CDATA  #IMPLIED
  184. ">
  185. <!-- Absolute or Relative Position Properties                       -->
  186. <!-- There is no object that can be positioned only absolutely.     -->
  187. <!-- Therefore, absolute and relative positioning properties are    -->
  188. <!-- grouped together                                               -->
  189. <!ENTITY % absolute-or-relative-position-properties "
  190.   absolute-position  ( auto | absolute | fixed | inherit )  #IMPLIED
  191.   %relative-position-properties;
  192. ">
  193. <!-- Aural Properties                                                -->
  194. <!-- 'cue' and 'pause' shorthand properties are also included        -->
  195. <!ENTITY % aural-properties "
  196.   azimuth  CDATA  #IMPLIED
  197.   cue  CDATA  #IMPLIED
  198.   cue-after  CDATA  #IMPLIED
  199.   cue-before  CDATA  #IMPLIED
  200.   elevation  CDATA  #IMPLIED
  201.   pause  CDATA  #IMPLIED
  202.   pause-after  CDATA  #IMPLIED
  203.   pause-before  CDATA  #IMPLIED
  204.   pitch  CDATA  #IMPLIED
  205.   pitch-range  CDATA  #IMPLIED
  206.   play-during  CDATA  #IMPLIED
  207.   richness  CDATA  #IMPLIED
  208.   speak  ( normal | none | spell-out | inherit )  #IMPLIED
  209.   speak-header  ( once | always | inherit ) #IMPLIED
  210.   speak-numeral  ( digits | continuous | inherit )  #IMPLIED
  211.   speak-punctuation  ( code | none | inherit )  #IMPLIED
  212.   speech-rate  CDATA  #IMPLIED
  213.   stress  CDATA  #IMPLIED
  214.   voice-family  CDATA  #IMPLIED
  215.   volume  CDATA  #IMPLIED
  216. ">
  217. <!-- Common Border, Padding, and Background Properties               -->
  218. <!-- Relative shorthand properties are also included                 -->
  219. <!ENTITY % border-padding-background-properties "
  220.   background  CDATA  #IMPLIED
  221.   background-attachment  ( scroll | fixed | inherit )  #IMPLIED
  222.   background-color  CDATA  #IMPLIED
  223.   background-image  CDATA  #IMPLIED
  224.   background-position  CDATA  #IMPLIED
  225.   background-position-vertical  CDATA  #IMPLIED
  226.   background-position-horizontal  CDATA  #IMPLIED
  227.   background-repeat  ( repeat | repeat-x | repeat-y 
  228.                      | no-repeat | inherit ) #IMPLIED
  229.   rx:background-content-height  CDATA  #IMPLIED
  230.   rx:background-content-width  CDATA  #IMPLIED
  231.   rx:background-scaling  ( uniform | non-uniform)  #IMPLIED
  232.   border  CDATA  #IMPLIED
  233.   border-after-color  CDATA  #IMPLIED
  234.   border-after-style  ( none | hidden | dotted | dashed 
  235.                       | solid | double | groove | ridge 
  236.                       | inset | outset | inherit )  #IMPLIED
  237.   border-after-width  CDATA  #IMPLIED
  238.   border-after-width.length  CDATA  #IMPLIED
  239.   border-after-width.conditionality ( discard | retain)  #IMPLIED
  240.   border-before-color  CDATA  #IMPLIED
  241.   border-before-style  ( none | hidden | dotted | dashed 
  242.                        | solid | double | groove | ridge 
  243.                        | inset | outset | inherit )   #IMPLIED
  244.   border-before-width  CDATA  #IMPLIED
  245.   border-before-width.length  CDATA  #IMPLIED
  246.   border-before-width.conditionality ( discard | retain)  #IMPLIED
  247.   border-bottom  CDATA  #IMPLIED
  248.   border-bottom-color  CDATA  #IMPLIED
  249.   border-bottom-style  ( none | hidden | dotted | dashed 
  250.                        | solid | double | groove | ridge 
  251.                        | inset | outset | inherit )   #IMPLIED
  252.   border-bottom-width  CDATA  #IMPLIED
  253.   border-bottom-width.length  CDATA  #IMPLIED
  254.   border-bottom-width.conditionality ( discard | retain)  #IMPLIED
  255.   border-color  CDATA  #IMPLIED
  256.   border-end-color  CDATA  #IMPLIED
  257.   border-end-style  ( none | hidden | dotted | dashed 
  258.                     | solid | double | groove | ridge 
  259.                     | inset | outset | inherit )   #IMPLIED
  260.   border-end-width  CDATA  #IMPLIED
  261.   border-end-width.length  CDATA  #IMPLIED
  262.   border-end-width.conditionality ( discard | retain)  #IMPLIED
  263.   border-left  CDATA  #IMPLIED
  264.   border-left-color  CDATA  #IMPLIED
  265.   border-left-style  ( none | hidden | dotted | dashed 
  266.                      | solid | double | groove | ridge 
  267.                      | inset | outset | inherit )   #IMPLIED
  268.   border-left-width  CDATA  #IMPLIED
  269.   border-left-width.length  CDATA  #IMPLIED
  270.   border-left-width.conditionality ( discard | retain)  #IMPLIED
  271.   border-right  CDATA  #IMPLIED
  272.   border-right-color  CDATA  #IMPLIED
  273.   border-right-style  ( none | hidden | dotted | dashed 
  274.                       | solid | double | groove | ridge 
  275.                       | inset | outset | inherit )   #IMPLIED
  276.   border-right-width  CDATA  #IMPLIED
  277.   border-right-width.length  CDATA  #IMPLIED
  278.   border-right-width.conditionality ( discard | retain)  #IMPLIED
  279.   border-start-color  CDATA  #IMPLIED
  280.   border-start-style  ( none | hidden | dotted | dashed 
  281.                       | solid | double | groove | ridge 
  282.                       | inset | outset | inherit )   #IMPLIED
  283.   border-start-width  CDATA  #IMPLIED
  284.   border-start-width.length  CDATA  #IMPLIED
  285.   border-start-width.conditionality ( discard | retain)  #IMPLIED
  286.   border-style CDATA #IMPLIED
  287.   border-top  CDATA  #IMPLIED
  288.   border-top-color  CDATA  #IMPLIED
  289.   border-top-style  ( none | hidden | dotted | dashed 
  290.                     | solid | double | groove | ridge 
  291.                     | inset | outset | inherit )   #IMPLIED
  292.   border-top-width  CDATA  #IMPLIED
  293.   border-top-width.length  CDATA  #IMPLIED
  294.   border-top-width.conditionality ( discard | retain)  #IMPLIED
  295.   border-width  CDATA  #IMPLIED
  296.   padding  CDATA  #IMPLIED
  297.   padding-after  CDATA  #IMPLIED
  298.   padding-after.length  CDATA  #IMPLIED
  299.   padding-after.conditionality ( discard | retain)  #IMPLIED
  300.   padding-before  CDATA  #IMPLIED
  301.   padding-before.length  CDATA  #IMPLIED
  302.   padding-before.conditionality ( discard | retain)  #IMPLIED
  303.   padding-bottom  CDATA  #IMPLIED
  304.   padding-bottom.length  CDATA  #IMPLIED
  305.   padding-bottom.conditionality ( discard | retain)  #IMPLIED
  306.   padding-end  CDATA  #IMPLIED
  307.   padding-end.length  CDATA  #IMPLIED
  308.   padding-end.conditionality ( discard | retain)  #IMPLIED
  309.   padding-left  CDATA  #IMPLIED
  310.   padding-left.length  CDATA  #IMPLIED
  311.   padding-left.conditionality ( discard | retain)  #IMPLIED
  312.   padding-right  CDATA  #IMPLIED
  313.   padding-right.length  CDATA  #IMPLIED
  314.   padding-right.conditionality ( discard | retain)  #IMPLIED
  315.   padding-start  CDATA  #IMPLIED
  316.   padding-start.length  CDATA  #IMPLIED
  317.   padding-start.conditionality ( discard | retain)  #IMPLIED
  318.   padding-top  CDATA  #IMPLIED
  319.   padding-top.length  CDATA  #IMPLIED
  320.   padding-top.conditionality ( discard | retain)  #IMPLIED
  321. ">
  322. <!-- Border Precedence Properties for tables                         -->
  323. <!ENTITY % border-precedence-properties "
  324.   border-after-precedence  CDATA  #IMPLIED
  325.   border-before-precedence  CDATA  #IMPLIED
  326.   border-end-precedence  CDATA  #IMPLIED
  327.   border-start-precedence  CDATA  #IMPLIED
  328. ">
  329. <!-- Box Size Properties                                             -->
  330. <!ENTITY % box-size-properties "
  331.   height  CDATA  #IMPLIED
  332.   min-height  CDATA  #IMPLIED
  333.   max-height  CDATA  #IMPLIED
  334.   width  CDATA  #IMPLIED
  335.   min-width  CDATA  #IMPLIED
  336.   max-width  CDATA  #IMPLIED
  337.   inline-progression-dimension  CDATA  #IMPLIED
  338.   inline-progression-dimension.minimum  CDATA  #IMPLIED
  339.   inline-progression-dimension.optimum  CDATA  #IMPLIED
  340.   inline-progression-dimension.maximum  CDATA  #IMPLIED
  341.   block-progression-dimension  CDATA  #IMPLIED
  342.   block-progression-dimension.minimum  CDATA  #IMPLIED
  343.   block-progression-dimension.optimum  CDATA  #IMPLIED
  344.   block-progression-dimension.maximum  CDATA  #IMPLIED
  345. ">
  346. <!-- Common Area Properties                                          -->
  347. <!ENTITY % area-properties "
  348.   clip  CDATA  #IMPLIED
  349.   overflow  ( visible | hidden | scroll | auto 
  350.             | error-if-overflow | inherit )  #IMPLIED
  351.   display-align  ( auto | before | center | after | inherit )  #IMPLIED
  352.   reference-orientation  ( 0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit )  #IMPLIED
  353.   writing-mode  ( lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit ) #IMPLIED
  354. ">
  355. <!-- Common Font Properties                                          -->
  356. <!-- 'font' shorthand property is also included                      -->
  357. <!ENTITY % font-properties "
  358.   font  CDATA  #IMPLIED
  359.   font-selection-strategy  (auto | character-by-character | inherit)   #IMPLIED
  360.   font-family  CDATA  #IMPLIED
  361.   font-size  CDATA  #IMPLIED
  362.   font-size-adjust  CDATA  #IMPLIED
  363.   font-stretch  (normal | wider | narrower 
  364.                | ultra-condensed | extra-condensed | condensed
  365.                | semi-condensed | semi-expanded | expanded 
  366.                | extra-expanded | ultra-expanded | inherit) #IMPLIED
  367.   font-style  ( normal | italic | oblique | backslant | inherit)  #IMPLIED
  368.   font-variant  ( normal | small-caps | inherit )  #IMPLIED
  369.   font-weight  (normal | bold | bolder | lighter | inherit 
  370.               | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900) #IMPLIED
  371. ">
  372. <!-- Common Hyphenation Properties - Inline                          -->
  373. <!-- 'xml:lang' shorthand property is also included                  -->
  374. <!ENTITY % hyphenation-properties-inline "
  375.   country  CDATA  #IMPLIED
  376.   language  CDATA  #IMPLIED
  377.   script  CDATA  #IMPLIED
  378.   xml:lang  CDATA  #IMPLIED
  379.   hyphenate  ( false | true | inherit )  #IMPLIED
  380.   hyphenation-character  CDATA  #IMPLIED
  381.   hyphenation-push-character-count  CDATA  #IMPLIED
  382.   hyphenation-remain-character-count  CDATA  #IMPLIED
  383. ">
  384. <!-- Common Hyphenation Properties - Block                           -->
  385. <!ENTITY % hyphenation-properties-block "
  386.   hyphenation-keep  ( auto | column | page | inherit )  #IMPLIED
  387.   hyphenation-ladder-count  CDATA  #IMPLIED
  388.   %hyphenation-properties-inline;
  389. ">
  390. <!-- Common CSS Margin Properties                                    -->
  391. <!-- 'margin' shorthand property is also included                    -->
  392. <!ENTITY % margin-properties-CSS "
  393.   margin  CDATA  #IMPLIED
  394.   margin-bottom  CDATA  #IMPLIED
  395.   margin-left  CDATA  #IMPLIED
  396.   margin-right  CDATA  #IMPLIED
  397.   margin-top  CDATA  #IMPLIED
  398. ">
  399. <!-- Common Margin Properties - Block                                -->
  400. <!ENTITY % margin-properties-block "
  401.   %margin-properties-CSS;
  402.   space-after  CDATA  #IMPLIED
  403.   space-after.minimum  CDATA  #IMPLIED
  404.   space-after.optimum  CDATA  #IMPLIED
  405.   space-after.maximum  CDATA  #IMPLIED
  406.   space-after.precedence  CDATA  #IMPLIED
  407.   space-after.conditionality  ( retain | discard )  #IMPLIED
  408.   space-before  CDATA  #IMPLIED
  409.   space-before.minimum  CDATA  #IMPLIED
  410.   space-before.optimum  CDATA  #IMPLIED
  411.   space-before.maximum  CDATA  #IMPLIED
  412.   space-before.precedence  CDATA  #IMPLIED
  413.   space-before.conditionality  ( retain | discard )  #IMPLIED
  414.   start-indent  CDATA  #IMPLIED
  415.   end-indent  CDATA  #IMPLIED
  416. ">
  417. <!-- Common Margin Properties - Inline                               -->
  418. <!ENTITY % margin-properties-inline "
  419.   %margin-properties-block;
  420.   space-start  CDATA  #IMPLIED
  421.   space-start.minimum  CDATA  #IMPLIED
  422.   space-start.optimum  CDATA  #IMPLIED
  423.   space-start.maximum  CDATA  #IMPLIED
  424.   space-start.precedence  CDATA  #IMPLIED
  425.   space-start.conditionality  ( retain | discard )  #IMPLIED
  426.   space-end  CDATA  #IMPLIED
  427.   space-end.minimum  CDATA  #IMPLIED
  428.   space-end.optimum  CDATA  #IMPLIED
  429.   space-end.maximum  CDATA  #IMPLIED
  430.   space-end.precedence  CDATA  #IMPLIED
  431.   space-end.conditionality  ( retain | discard )  #IMPLIED
  432. ">
  433. <!-- Area Alignment Properties - inline                              -->
  434. <!-- 'vertical-align' shorthand is added                             -->
  435. <!ENTITY % area-alignment-properties-inline "
  436.   alignment-adjust  CDATA  #IMPLIED
  437.   alignment-baseline  ( auto | baseline | before-edge | text-before-edge 
  438.                        | middle | central | after-edge | text-after-edge 
  439.                        | top | text-top | bottom | text-bottom
  440.                        | ideographic | alphabetic | hanging 
  441.                        | mathematical | inherit )  #IMPLIED
  442.   baseline-shift  CDATA  #IMPLIED
  443.   dominant-baseline  ( auto | use-script | no-change 
  444.                      | reset-size | ideographic | alphabetic 
  445.                      | hanging | mathematical | central | middle 
  446.                      | text-after-edge | text-before-edge |inherit )  #IMPLIED
  447.   vertical-align  CDATA  #IMPLIED
  448. ">
  449. <!-- Line Height Properties                                         -->
  450. <!ENTITY % line-height-properties "
  451.   line-height  CDATA  #IMPLIED
  452.   line-height.minimum  CDATA  #IMPLIED
  453.   line-height.optimum  CDATA  #IMPLIED
  454.   line-height.maximum  CDATA  #IMPLIED
  455.   line-height.precedence  CDATA  #IMPLIED
  456.   line-height.conditionality  ( retain | discard )  #IMPLIED
  457.   line-height-shift-adjustment  CDATA  #IMPLIED
  458. ">
  459. <!-- Line Related Properties                                         -->
  460. <!-- [!] <string> values are temporarily excluded from text-align    -->
  461. <!ENTITY % line-related-properties "
  462.   text-align  ( start | center | end | justify 
  463.               | inside | outside | left | right | inherit )  #IMPLIED
  464.   text-align-last  ( relative | start | center | end | justify 
  465.                    | inside | outside | left | right | inherit )  #IMPLIED
  466.   text-indent  CDATA  #IMPLIED
  467.   last-line-end-indent  CDATA  #IMPLIED
  468.   line-stacking-strategy  ( line-height | font-height 
  469.                           | max-height | inherit )  #IMPLIED
  470.   linefeed-treatment  ( ignore | preserve | treat-as-space 
  471.                       | treat-as-zero-width-space | inherit )  #IMPLIED
  472.   white-space  ( normal | pre | nowrap | inherit )  #IMPLIED
  473.   white-space-treatment  ( ignore | preserve  
  474.                          | ignore-if-before-linefeed | ignore-if-after-linefeed 
  475.                          | ignore-if-surrounding-linefeed | inherit )  #IMPLIED
  476.   white-space-collapse  ( false | true | inherit )  #IMPLIED
  477.   wrap-option  ( no-wrap | wrap | inherit )  #IMPLIED
  478.   unicode-bidi  ( normal | embed | bidi-override | inherit )  #IMPLIED
  479.   direction  ( ltr | rtl | inherit )  #IMPLIED
  480. ">
  481. <!-- Character Properties                                            -->
  482. <!ENTITY % character-properties "
  483.   letter-spacing  CDATA  #IMPLIED
  484.   letter-spacing.minimum  CDATA  #IMPLIED
  485.   letter-spacing.optimum  CDATA  #IMPLIED
  486.   letter-spacing.maximum  CDATA  #IMPLIED
  487.   letter-spacing.precedence  CDATA  #IMPLIED
  488.   letter-spacing.conditionality  ( retain | discard )  #IMPLIED
  489.   word-spacing  CDATA  #IMPLIED
  490.   word-spacing.minimum  CDATA  #IMPLIED
  491.   word-spacing.optimum  CDATA  #IMPLIED
  492.   word-spacing.maximum  CDATA  #IMPLIED
  493.   word-spacing.precedence  CDATA  #IMPLIED
  494.   word-spacing.conditionality  ( retain | discard )  #IMPLIED
  495.   treat-as-word-space  ( auto | true | false | inherit )  #IMPLIED
  496.   text-decoration  NMTOKENS  #IMPLIED
  497.   score-spaces  ( true | false | inherit )  #IMPLIED
  498.   text-shadow  CDATA  #IMPLIED
  499.   text-transform  ( capitalize | uppercase | lowercase 
  500.                   | none | inherit )  #IMPLIED
  501.   suppress-at-line-break  ( auto | suppress | retain | inherit )  #IMPLIED
  502.   text-altitude  CDATA  #IMPLIED
  503.   text-depth  CDATA  #IMPLIED
  504.   glyph-orientation-horizontal ( 0 | 90 | 180 | 270 | -90 | -180 | -270  
  505.                              | 0deg  | 90deg   | 180deg  | 270deg 
  506.                              |-90deg | -180deg | -270deg | inherit )  #IMPLIED
  507.   glyph-orientation-vertical ( 0 | 90 | 180 | 270 | -90 | -180 | -270  
  508.                              | 0deg  | 90deg   | 180deg  | 270deg 
  509.                              |-90deg | -180deg | -270deg | inherit )  #IMPLIED
  510.   %font-properties;
  511.   %line-height-properties;
  512. ">
  513. <!-- Common Keeps and Breaks Properties - Atomic objects             -->
  514. <!-- 'page-break-*' shorthand properties are also included           -->
  515. <!ENTITY % keeps-and-breaks-properties-atomic "
  516.   break-after  ( auto | column | page 
  517.                | even-page | odd-page | inherit )  #IMPLIED
  518.   break-before  ( auto | column | page 
  519.                 | even-page | odd-page | inherit )  #IMPLIED
  520.   keep-with-next  CDATA  #IMPLIED
  521.   keep-with-next.within-line  CDATA  #IMPLIED
  522.   keep-with-next.within-column  CDATA  #IMPLIED
  523.   keep-with-next.within-page  CDATA  #IMPLIED
  524.   keep-with-previous  CDATA  #IMPLIED
  525.   keep-with-previous.within-line  CDATA  #IMPLIED
  526.   keep-with-previous.within-column  CDATA  #IMPLIED
  527.   keep-with-previous.within-page  CDATA  #IMPLIED
  528.   page-break-after  ( auto | always | avoid 
  529.                     | left | right | inherit )  #IMPLIED
  530.   page-break-before  ( auto | always | avoid 
  531.                      | left | right | inherit )  #IMPLIED
  532. ">
  533. <!-- Common Keeps and Breaks Properties - Inline                     -->
  534. <!-- 'page-break-inside' shorthand property is also included         -->
  535. <!ENTITY % keeps-and-breaks-properties-inline "
  536.   %keeps-and-breaks-properties-atomic;
  537.   keep-together  CDATA  #IMPLIED
  538.   keep-together.within-line  CDATA  #IMPLIED
  539.   keep-together.within-column  CDATA  #IMPLIED
  540.   keep-together.within-page  CDATA  #IMPLIED
  541.   page-break-inside  ( avoid | auto | inherit )  #IMPLIED
  542. ">
  543. <!-- Common Keeps and Breaks Properties - Block                      -->
  544. <!ENTITY % keeps-and-breaks-properties-block "
  545.   %keeps-and-breaks-properties-inline;
  546.   orphans  CDATA  #IMPLIED
  547.   widows  CDATA  #IMPLIED
  548. ">
  549. <!-- Leader and Rule Properties                                      -->
  550. <!ENTITY % leader-properties "
  551.   leader-alignment  ( none | reference-area | page | inherit )  #IMPLIED
  552.   leader-pattern  ( space | rule | dots 
  553.                   | use-content | inherit )  #IMPLIED
  554.   leader-pattern-width  CDATA  #IMPLIED
  555.   leader-length  CDATA  #IMPLIED
  556.   leader-length.minimum  CDATA  #IMPLIED
  557.   leader-length.optimum  CDATA  #IMPLIED
  558.   leader-length.maximum  CDATA  #IMPLIED
  559.   rule-style  ( none | dotted | dashed | solid | double 
  560.               | groove | ridge | inherit )  #IMPLIED
  561.   rule-thickness  CDATA  #IMPLIED
  562. ">
  563. <!-- Table Properties                                                  -->
  564. <!-- 'border-spacing' shorthand property is also included              -->
  565. <!-- 'inherit' property added to table-omit-...er-at-break             -->
  566. <!ENTITY % table-properties "
  567.   border-collapse  ( collapse | collapse-with-precedence | separate | inherit )  #IMPLIED
  568.   border-spacing  CDATA  #IMPLIED
  569.   border-separation  CDATA  #IMPLIED
  570.   border-separation.inline-progression-direction  CDATA  #IMPLIED
  571.   border-separation.block-progression-direction  CDATA  #IMPLIED
  572.   caption-side  ( before | after | start | end 
  573.                 | top | bottom | left | right | inherit )  #IMPLIED
  574.   empty-cells  ( show | hide | inherit )  #IMPLIED
  575.   table-layout  ( auto | fixed | inherit )  #IMPLIED
  576.   table-omit-header-at-break  ( true | false | inherit )  #IMPLIED
  577.   table-omit-footer-at-break  ( true | false | inherit )  #IMPLIED
  578. ">
  579. <!-- List Properties                                                  -->
  580. <!ENTITY % list-properties "
  581.   provisional-distance-between-starts  CDATA  #IMPLIED
  582.   provisional-label-separation  CDATA  #IMPLIED
  583. ">
  584. <!-- Float Properties                                                 -->
  585. <!ENTITY % float-properties "
  586.   float  ( before | start | end | left | right | none | inherit )  #IMPLIED
  587.   clear  ( start | end | left | right | both | none | inherit )  #IMPLIED
  588.   intrusion-displace ( auto | none | line | indent | block | inherit ) #IMPLIED
  589. ">
  590. <!-- Visibility Properties                                            -->
  591. <!ENTITY % visibility-properties "
  592.   visibility  ( visible | hidden | collapse | inherit )  #IMPLIED
  593.   z-index  CDATA  #IMPLIED
  594. ">
  595. <!-- =============================================================== -->
  596. <!-- Set of all inheritable properties. This includes attributes     -->
  597. <!-- marked as inheritable in the PR, as well as all features that   -->
  598. <!-- may assume a value of "inherit" (because all such features are  -->
  599. <!-- also permitted at parent elements). By XSL PR design, this set  -->
  600. <!-- comprises nearly all attributes.                                -->
  601. <!-- =============================================================== -->
  602. <!ENTITY % inheritable-properties "   
  603.   color  CDATA  #IMPLIED
  604.   relative-align  ( before | baseline | inherit )  #IMPLIED
  605.   span  ( none | all | inherit )  #IMPLIED 
  606.  
  607.   %accessibility-properties;
  608.   %absolute-or-relative-position-properties;
  609.   %border-padding-background-properties;
  610.   %border-precedence-properties;
  611.   %aural-properties;
  612.   %box-size-properties;
  613.   %margin-properties-inline;
  614.   %area-properties;
  615.   %area-alignment-properties-inline;
  616.   %character-properties;
  617.   %table-properties;
  618.   %list-properties;
  619.   %float-properties;
  620.   %line-related-properties;
  621.   %leader-properties;
  622.   %keeps-and-breaks-properties-block;
  623.   %hyphenation-properties-block;
  624.   %visibility-properties;
  625. ">
  626. <!-- =============================================================== -->
  627. <!-- Common property subsets.                                        -->
  628. <!-- =============================================================== -->
  629. <!-- Properties for every block that may contain text children       -->
  630. <!ENTITY % block-properties "   
  631.   id  CDATA  #IMPLIED
  632.   %inheritable-properties;
  633. ">
  634. <!-- Properties for nonempty inline elements                         -->
  635. <!ENTITY % inline-properties "   
  636.   id  CDATA  #IMPLIED
  637.   %inheritable-properties;
  638. ">
  639. <!-- Properties for empty inline elements that contain characters    -->
  640. <!ENTITY % empty-inline-properties "   
  641.   id  CDATA  #IMPLIED
  642.   color  CDATA  #IMPLIED
  643.   %accessibility-properties;
  644.   %aural-properties;
  645.   %relative-position-properties;
  646.   %area-alignment-properties-inline;
  647.   %character-properties;
  648.   %border-padding-background-properties;
  649.   %hyphenation-properties-inline;
  650.   %visibility-properties;
  651. ">
  652. <!-- Properties for graphical inline elements                        -->
  653. <!ENTITY % graphic-properties "   
  654.   id  CDATA  #IMPLIED
  655.   content-type  CDATA  #IMPLIED
  656.  
  657.   %accessibility-properties;
  658.   %relative-position-properties;
  659.   %aural-properties;
  660.   %border-padding-background-properties;
  661.   %margin-properties-inline;
  662.   %area-alignment-properties-inline;
  663.   %box-size-properties;
  664.   %font-properties;
  665.   %line-height-properties;
  666.   %keeps-and-breaks-properties-atomic;
  667.  
  668.   content-height  CDATA  #IMPLIED
  669.   content-width  CDATA  #IMPLIED
  670.   display-align  ( auto | before | center | after | inherit )  #IMPLIED
  671.   overflow  ( visible | hidden | scroll | auto 
  672.             | error-if-overflow | inherit )  #IMPLIED
  673.   scaling  ( uniform | non-uniform | inherit )  #IMPLIED
  674.   scaling-method  ( auto | integer-pixels 
  675.                   | resample-any-method | inherit )  #IMPLIED
  676.   text-align  ( start | center | end | justify 
  677.               | inside | outside | left | right | inherit )  #IMPLIED
  678. ">
  679. <!-- *************************************************************** -->
  680. <!-- Content models and attributes                                   -->
  681. <!--                                                                 -->
  682. <!-- A. Element structure for top-level elements                     -->
  683. <!-- *************************************************************** -->
  684. <!-- =============================================================== -->
  685. <!-- Root element. Contains everything, generates nothing. It has an -->
  686. <!-- id, a FO namespace prefix declaration, and other namespace      -->
  687. <!-- declarations if used. It can also bear inheritable properties,  -->
  688. <!-- passed further to fo:flows/fo:static-contents. Inheritable      -->
  689. <!-- properties from fo:layout-master-set are banned in this version -->
  690. <!-- of the DTD.                                                     -->
  691. <!-- =============================================================== -->
  692. <!ELEMENT fo:root (rx:meta-info?, rx:page-device?, fo:layout-master-set, fo:declarations?, rx:outline?, fo:page-sequence+)>
  693. <!ATTLIST fo:root
  694.     xmlns:fo CDATA #REQUIRED
  695.     xmlns:rx CDATA #IMPLIED
  696.     xmlns:svg CDATA #IMPLIED
  697.     media-usage (auto | paginate | bounded-in-one-dimension | unbounded) #IMPLIED
  698.     %inheritable-properties; 
  699. >
  700. <!-- =============================================================== -->
  701. <!-- Document meta information - RenderX extension                   -->
  702. <!-- =============================================================== -->
  703. <!ELEMENT rx:meta-info (rx:meta-field+)>
  704. <!ATTLIST rx:meta-info
  705.     xmlns:rx CDATA #IMPLIED
  706. >
  707. <!ELEMENT rx:meta-field EMPTY>
  708. <!ATTLIST rx:meta-field
  709.     name CDATA #REQUIRED
  710.     value CDATA #REQUIRED
  711. >
  712. <!ELEMENT rx:page-device EMPTY>
  713. <!ATTLIST rx:page-device
  714.     input-tray CDATA #IMPLIED
  715.     output-tray CDATA #IMPLIED
  716.     manual-feed (true | false) #IMPLIED
  717.     duplex (true | false) #IMPLIED
  718.     mirror-print (true | false) #IMPLIED
  719.     negative-print (true | false) #IMPLIED
  720.     collate (true | false) #IMPLIED
  721.     number-copies CDATA #IMPLIED
  722. >
  723. <!-- =============================================================== -->
  724. <!-- Color profile declarations                                      -->
  725. <!-- =============================================================== -->
  726. <!ELEMENT fo:declarations (fo:color-profile+)>
  727. <!ELEMENT fo:color-profile EMPTY>
  728. <!ATTLIST fo:color-profile
  729.     src CDATA #REQUIRED
  730.     color-profile-name CDATA #REQUIRED
  731.     rendering-intent CDATA #IMPLIED
  732. >
  733. <!-- =============================================================== -->
  734. <!-- Bookmarks - RenderX extension                                   -->
  735. <!-- =============================================================== -->
  736. <!ELEMENT rx:outline (rx:bookmark+)>
  737. <!ATTLIST rx:outline
  738.     xmlns:rx CDATA #IMPLIED
  739. >
  740. <!ELEMENT rx:bookmark (rx:bookmark-label, rx:bookmark*)>
  741. <!ATTLIST rx:bookmark
  742.     internal-destination CDATA #IMPLIED
  743.     external-destination CDATA #IMPLIED
  744.     initial-state (open | closed) #IMPLIED
  745. >
  746. <!ELEMENT rx:bookmark-label (#PCDATA)>
  747. <!-- =============================================================== -->
  748. <!-- Layout-master-set. Contains a set of page-masters. Neither of   -->
  749. <!-- its descendants generates any area, so no inherited elements    -->
  750. <!-- can be specified on it or on its children.                      -->
  751. <!-- Content model made more strict than in the draft, to enforce    -->
  752. <!-- that a page-sequence-master be always accompanied by at least   -->
  753. <!-- one simple-page-master.                                         -->
  754. <!-- =============================================================== -->
  755. <!ELEMENT fo:layout-master-set (fo:page-sequence-master*, fo:simple-page-master, (fo:simple-page-master | fo:page-sequence-master)*)>
  756. <!-- =============================================================== -->
  757. <!-- Page sequence master                                            -->
  758. <!-- =============================================================== -->
  759. <!ELEMENT fo:page-sequence-master ((fo:single-page-master-reference | fo:repeatable-page-master-reference | fo:repeatable-page-master-alternatives)+)>
  760. <!ATTLIST fo:page-sequence-master
  761.     master-name CDATA #REQUIRED
  762. >
  763. <!-- =============================================================== -->
  764. <!-- Sequence specifiers are predefined sequences of page masters    -->
  765. <!-- that are used by page sequence master to construct a desired    -->
  766. <!-- page collection.                                                -->
  767. <!-- =============================================================== -->
  768. <!ELEMENT fo:single-page-master-reference EMPTY>
  769. <!ATTLIST fo:single-page-master-reference
  770.     master-reference CDATA #REQUIRED
  771. >
  772. <!ELEMENT fo:repeatable-page-master-reference EMPTY>
  773. <!ATTLIST fo:repeatable-page-master-reference
  774.     master-reference CDATA #REQUIRED
  775.     maximum-repeats CDATA #IMPLIED
  776. >
  777. <!ELEMENT fo:repeatable-page-master-alternatives (fo:conditional-page-master-reference+)>
  778. <!ATTLIST fo:repeatable-page-master-alternatives
  779.     maximum-repeats CDATA #IMPLIED
  780. >
  781. <!ELEMENT fo:conditional-page-master-reference EMPTY>
  782. <!ATTLIST fo:conditional-page-master-reference
  783.     master-reference CDATA #REQUIRED
  784.     page-position (first | last | rest | any | inherit) #IMPLIED
  785.     odd-or-even (odd | even | any | inherit) #IMPLIED
  786.     blank-or-not-blank (blank | not-blank | any | inherit) #IMPLIED
  787. >
  788. <!-- =============================================================== -->
  789. <!-- Simple page master defines a page layout. It does not           -->
  790. <!-- explicitly generate any content. Most of its properties are     -->
  791. <!-- local except for writing-mode and reference-orientation that    -->
  792. <!-- are inherited by the underlying region-* objects.               -->
  793. <!-- =============================================================== -->
  794. <!-- NOTE. We could think about a common background/padding/border   -->
  795. <!-- for every page instance generated by the page master. For such  -->
  796. <!-- a scope, we may add borders/padding/background to its features. -->
  797. <!-- However, in the current version this is ruled out explicitly by -->
  798. <!-- the XSL specs.                                                  -->
  799. <!ELEMENT fo:simple-page-master (fo:region-body, fo:region-before?, fo:region-after?, fo:region-start?, fo:region-end?)>
  800. <!ATTLIST fo:simple-page-master
  801.     %margin-properties-CSS; 
  802.     master-name CDATA #REQUIRED
  803.     page-height CDATA #IMPLIED
  804.     page-width CDATA #IMPLIED
  805.     size CDATA #IMPLIED
  806.     reference-orientation (0 | 90 | 180 | 270 | -90 | -180 | -270 | inherit) #IMPLIED
  807.     writing-mode (lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit) #IMPLIED
  808. >
  809. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  810. <!-- Regions. The page instance is divided into subareas, whose      -->
  811. <!-- properties are described by the five region-* elements. These   -->
  812. <!-- elements by themselves do not generate any content.             -->
  813. <!-- Reference-orientation and writing-mode may be inherited from    -->
  814. <!-- the page master; all other features are local.                  -->
  815. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  816. <!ENTITY % region-properties "
  817.   %border-padding-background-properties;
  818.   %area-properties;
  819.  
  820.   region-name  CDATA  #IMPLIED
  821. ">
  822. <!-- =============================================================== -->
  823. <!-- Body region: middle of the page. Unlike side regions, this one  -->
  824. <!-- may have multiple columns.                                      -->
  825. <!-- [!] We have restricted margin properties to be margin-only,     -->
  826. <!-- allowing no spaces. This is done because no clear semantics     -->
  827. <!-- can be ascribed to single components of a space vector.         -->
  828. <!-- =============================================================== -->
  829. <!ELEMENT fo:region-body EMPTY>
  830. <!ATTLIST fo:region-body
  831.     %region-properties; 
  832.     %margin-properties-CSS; 
  833.     column-count CDATA #IMPLIED
  834.     column-gap CDATA #IMPLIED
  835. >
  836. <!-- =============================================================== -->
  837. <!-- Side regions: page edges. These regions have extent and         -->
  838. <!-- precedence that is used to arbitrate corner conflicts. Side     -->
  839. <!-- regions are viewed as frames, and may not have margins.         -->
  840. <!-- Extent made obligatory: its default value of 0.0pt does not     -->
  841. <!-- make much sense.                                                -->
  842. <!-- =============================================================== -->
  843. <!ENTITY % side-region-properties "
  844.   %region-properties;
  845.   extent  CDATA  #REQUIRED
  846.   precedence  ( true | false | inherit )  #IMPLIED
  847. ">
  848. <!ELEMENT fo:region-before EMPTY>
  849. <!ATTLIST fo:region-before
  850.     %side-region-properties; 
  851. >
  852. <!ELEMENT fo:region-after EMPTY>
  853. <!ATTLIST fo:region-after
  854.     %side-region-properties; 
  855. >
  856. <!ELEMENT fo:region-start EMPTY>
  857. <!ATTLIST fo:region-start
  858.     %side-region-properties; 
  859. >
  860. <!ELEMENT fo:region-end EMPTY>
  861. <!ATTLIST fo:region-end
  862.     %side-region-properties; 
  863. >
  864. <!-- =============================================================== -->
  865. <!-- Page sequence defines the order of choosing page masters to     -->
  866. <!-- accomodate all the contents generated by its fo:flow and        -->
  867. <!-- fo:static-content children, and the way of numbering them.      -->
  868. <!-- =============================================================== -->
  869. <!ELEMENT fo:page-sequence (fo:title?, fo:static-content*, fo:flow)>
  870. <!ATTLIST fo:page-sequence
  871.     id CDATA #IMPLIED
  872.     master-reference CDATA #REQUIRED
  873.     initial-page-number CDATA #IMPLIED
  874.     force-page-count (auto | even | odd | end-on-even | end-on-odd | no-force | inherit) #IMPLIED
  875.     format CDATA #IMPLIED
  876.     letter-value (auto | alphabetic | traditional) #IMPLIED
  877.     grouping-separator CDATA #IMPLIED
  878.     grouping-size CDATA #IMPLIED
  879.     %inheritable-properties; 
  880. >
  881. <!-- =============================================================== -->
  882. <!-- Title may not contain out-of-lines.                             -->
  883. <!-- =============================================================== -->
  884. <!ELEMENT fo:title (#PCDATA | %basic-inlines; | %wrappers;)*>
  885. <!ATTLIST fo:title
  886.     %inheritable-properties; 
  887. >
  888. <!-- *************************************************************** -->
  889. <!-- B. Element structure for content-bearing elements               -->
  890. <!-- *************************************************************** -->
  891. <!-- =============================================================== -->
  892. <!-- Flows. They are just sequences of blocks. 'flow-name' feature   -->
  893. <!-- defines linkage of the flow to a region in the page master.     -->
  894. <!-- =============================================================== -->
  895. <!ENTITY % flow-properties "
  896.   id  CDATA  #IMPLIED    
  897.   flow-name  CDATA  #REQUIRED
  898.   %inheritable-properties;
  899. ">
  900. <!ELEMENT fo:static-content (%blocks;)+>
  901. <!ATTLIST fo:static-content
  902.     %flow-properties; 
  903. >
  904. <!ELEMENT fo:flow (%blocks;)+>
  905. <!ATTLIST fo:flow
  906.     %flow-properties; 
  907. >
  908. <!-- =============================================================== -->
  909. <!-- Block is the base element for all content areas. Besides        -->
  910. <!-- properties used to format the block itself, it also conveys     -->
  911. <!-- formatting information to its inline-level children.            -->
  912. <!-- =============================================================== -->
  913. <!ELEMENT fo:block (#PCDATA | fo:initial-property-set | %basic-inlines; | %basic-blocks; | %out-of-lines; | %wrappers;)*>
  914. <!ATTLIST fo:block
  915.     %block-properties; 
  916. >
  917. <!-- =============================================================== -->
  918. <!-- Block container                                                 -->
  919. <!-- =============================================================== -->
  920. <!ELEMENT fo:block-container (%blocks;)+>
  921. <!ATTLIST fo:block-container
  922.     %block-properties; 
  923. >
  924. <!-- *************************************************************** -->
  925. <!-- Inline elements                                                 -->
  926. <!-- *************************************************************** -->
  927. <!-- =============================================================== -->
  928. <!-- Unicode bidi-override                                           -->
  929. <!-- =============================================================== -->
  930. <!ELEMENT fo:bidi-override (%inlines;)*>
  931. <!ATTLIST fo:bidi-override
  932.     %inline-properties; 
  933. >
  934. <!-- =============================================================== -->
  935. <!-- Single character                                                -->
  936. <!-- =============================================================== -->
  937. <!ELEMENT fo:character EMPTY>
  938. <!ATTLIST fo:character
  939.     character CDATA #REQUIRED
  940.     %empty-inline-properties; 
  941. >
  942. <!-- =============================================================== -->
  943. <!-- Initial property set specifies properties for one or more lines -->
  944. <!-- =============================================================== -->
  945. <!ELEMENT fo:initial-property-set EMPTY>
  946. <!ATTLIST fo:initial-property-set
  947.     %empty-inline-properties; 
  948. >
  949. <!-- =============================================================== -->
  950. <!-- External graphic                                                -->
  951. <!-- =============================================================== -->
  952. <!ELEMENT fo:external-graphic EMPTY>
  953. <!ATTLIST fo:external-graphic
  954.     %graphic-properties; 
  955.     src CDATA #IMPLIED
  956. >
  957. <!-- =============================================================== -->
  958. <!-- In-stream graphic                                               -->
  959. <!-- =============================================================== -->
  960. <!ELEMENT fo:instream-foreign-object ANY>
  961. <!ATTLIST fo:instream-foreign-object
  962.     %graphic-properties; 
  963. >
  964. <!-- =============================================================== -->
  965. <!-- Inline                                                          -->
  966. <!-- =============================================================== -->
  967. <!ELEMENT fo:inline (%mixed-level;)*>
  968. <!ATTLIST fo:inline
  969.     %inline-properties; 
  970. >
  971. <!-- =============================================================== -->
  972. <!-- Inline container                                                -->
  973. <!-- =============================================================== -->
  974. <!ELEMENT fo:inline-container (%blocks;)*>
  975. <!ATTLIST fo:inline-container
  976.     %inline-properties; 
  977. >
  978. <!-- =============================================================== -->
  979. <!-- Leader                                                          -->
  980. <!-- =============================================================== -->
  981. <!ELEMENT fo:leader (%inlines;)*>
  982. <!ATTLIST fo:leader
  983.     %inline-properties; 
  984. >
  985. <!-- =============================================================== -->
  986. <!-- Page Number                                                     -->
  987. <!-- =============================================================== -->
  988. <!ELEMENT fo:page-number EMPTY>
  989. <!ATTLIST fo:page-number
  990.     %empty-inline-properties; 
  991. >
  992. <!-- =============================================================== -->
  993. <!-- Page number citation                                            -->
  994. <!-- =============================================================== -->
  995. <!ELEMENT fo:page-number-citation EMPTY>
  996. <!ATTLIST fo:page-number-citation
  997.     %empty-inline-properties; 
  998.     ref-id CDATA #REQUIRED
  999. >
  1000. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1001. <!-- Formatting objects for tables.                                  -->
  1002. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1003. <!-- =============================================================== -->
  1004. <!-- Table & Caption is a wrapper to all the stuff pertinent to a    -->
  1005. <!-- given table. It generates a block consisting of two subblocks:  -->
  1006. <!-- one for the caption, another one for the table itself. The      -->
  1007. <!-- placement of these two blocks is controlled by the              -->
  1008. <!-- 'caption-side' property: if  caption-side="before"|"after" (or  -->
  1009. <!-- their absolute orientation equivalents), the two blocks are     -->
  1010. <!-- drawn one after another; if it is "start"|"end", then the       -->
  1011. <!-- caption is displayed on the correspondent side of the table.    -->
  1012. <!-- In this case, the relative alignment of the two blocks is given -->
  1013. <!-- by the 'relative-align'/'display-align' property.               -->
  1014. <!--                                                                 -->
  1015. <!-- =============================================================== -->
  1016. <!ELEMENT fo:table-and-caption (fo:table-caption?, fo:table)>
  1017. <!ATTLIST fo:table-and-caption
  1018.     %block-properties; 
  1019. >
  1020. <!-- =============================================================== -->
  1021. <!-- Table caption is an area container.                             -->
  1022. <!-- =============================================================== -->
  1023. <!ELEMENT fo:table-caption (%blocks;)+>
  1024. <!ATTLIST fo:table-caption
  1025.     %block-properties; 
  1026. >
  1027. <!-- =============================================================== -->
  1028. <!-- fo:table is the basic element for all tables. All the contents  -->
  1029. <!-- placed inside it is distributed over a single rectangular grid  -->
  1030. <!-- of rows and columns.                                            -->
  1031. <!-- =============================================================== -->
  1032. <!ELEMENT fo:table (fo:table-column*, fo:table-header?, fo:table-footer?, fo:table-body+)>
  1033. <!ATTLIST fo:table
  1034.     %block-properties; 
  1035. >
  1036. <!-- =============================================================== -->
  1037. <!-- Table column specifies common properties to ascribe to all      -->
  1038. <!-- cells in a column *or a group of columns*. Note that, if both   -->
  1039. <!-- 'number-columns-repeated' and 'number-columns-spanned' exceed   -->
  1040. <!-- 1, the column counter is increased by 'number-columns-spanned'. -->
  1041. <!-- it means that you only set properties for columns:              -->
  1042. <!--      'column-number'                                            -->
  1043. <!--      'column-number' + 'number-columns-spanned'                 -->
  1044. <!--      'column-number' + 2 * 'number-columns-spanned'             -->
  1045. <!-- and so on, leaving default properties for intermediate columns. -->
  1046. <!-- =============================================================== -->
  1047. <!ELEMENT fo:table-column EMPTY>
  1048. <!ATTLIST fo:table-column
  1049.     column-number CDATA #IMPLIED
  1050.     column-width CDATA #IMPLIED
  1051.     number-columns-repeated CDATA #IMPLIED
  1052.     number-columns-spanned CDATA #IMPLIED
  1053.     %inheritable-properties; 
  1054. >
  1055. <!-- =============================================================== -->
  1056. <!-- Table header, table footer, and table body are wrappers for     -->
  1057. <!-- groups of rows. They contain either one or more fo:table-rows,  -->
  1058. <!-- or one or more fo:table-cells; in the latter case, row breaks   -->
  1059. <!-- are specified in the cells by 'starts-row'/'ends-row'.          -->
  1060. <!-- All these elements are identical both in the content structure  -->
  1061. <!-- and in the attributes.                                          -->
  1062. <!-- =============================================================== -->
  1063. <!ENTITY % row-group " fo:table-row+ | fo:table-cell+ ">
  1064. <!ELEMENT fo:table-header (%row-group;)>
  1065. <!ATTLIST fo:table-header
  1066.     id CDATA #IMPLIED
  1067.     %inheritable-properties; 
  1068. >
  1069. <!ELEMENT fo:table-footer (%row-group;)>
  1070. <!ATTLIST fo:table-footer
  1071.     id CDATA #IMPLIED
  1072.     %inheritable-properties; 
  1073. >
  1074. <!ELEMENT fo:table-body (%row-group;)>
  1075. <!ATTLIST fo:table-body
  1076.     id CDATA #IMPLIED
  1077.     %inheritable-properties; 
  1078. >
  1079. <!-- =============================================================== -->
  1080. <!-- Table row.                                                      -->
  1081. <!-- =============================================================== -->
  1082. <!ELEMENT fo:table-row (fo:table-cell+)>
  1083. <!ATTLIST fo:table-row
  1084.     id CDATA #IMPLIED
  1085.     %inheritable-properties; 
  1086. >
  1087. <!-- =============================================================== -->
  1088. <!-- Table cell.                                                     -->
  1089. <!-- =============================================================== -->
  1090. <!ELEMENT fo:table-cell (%blocks;)+>
  1091. <!ATTLIST fo:table-cell
  1092.     %block-properties; 
  1093.     column-number CDATA #IMPLIED
  1094.     ends-row (true | false) #IMPLIED
  1095.     number-columns-spanned CDATA #IMPLIED
  1096.     number-rows-spanned CDATA #IMPLIED
  1097.     starts-row (true | false) #IMPLIED
  1098. >
  1099. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1100. <!-- Formatting objects for lists.                                   -->
  1101. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1102. <!-- =============================================================== -->
  1103. <!-- List block is a block, with some extra features to control the  -->
  1104. <!-- disposition of list items.                                      -->
  1105. <!-- =============================================================== -->
  1106. <!ELEMENT fo:list-block (fo:list-item+)>
  1107. <!ATTLIST fo:list-block
  1108.     %block-properties; 
  1109. >
  1110. <!-- =============================================================== -->
  1111. <!-- List item is a coupling of item label and item body.            -->
  1112. <!-- =============================================================== -->
  1113. <!ELEMENT fo:list-item (fo:list-item-label, fo:list-item-body)>
  1114. <!ATTLIST fo:list-item
  1115.     %block-properties; 
  1116. >
  1117. <!-- =============================================================== -->
  1118. <!-- List item label and list item body                              -->
  1119. <!-- =============================================================== -->
  1120. <!ELEMENT fo:list-item-label (%blocks;)+>
  1121. <!ATTLIST fo:list-item-label
  1122.     %block-properties; 
  1123. >
  1124. <!ELEMENT fo:list-item-body (%blocks;)+>
  1125. <!ATTLIST fo:list-item-body
  1126.     %block-properties; 
  1127. >
  1128. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1129. <!-- Out-of-lines.                                                   -->
  1130. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1131. <!-- =============================================================== -->
  1132. <!-- Floats and footnotes resemble containers. Accordingly, we treat -->
  1133. <!-- them as block sequences.                                        -->
  1134. <!-- =============================================================== -->
  1135. <!ELEMENT fo:float (%blocks;)+>
  1136. <!ATTLIST fo:float
  1137.     %block-properties; 
  1138. >
  1139. <!ELEMENT fo:footnote (fo:inline, fo:footnote-body)>
  1140. <!ATTLIST fo:footnote
  1141.     %block-properties; 
  1142. >
  1143. <!ELEMENT fo:footnote-body (%blocks;)+>
  1144. <!ATTLIST fo:footnote-body
  1145.     %block-properties; 
  1146. >
  1147. <!-- =============================================================== -->
  1148. <!-- Simple link. From the formatting point of view, it's nothing    -->
  1149. <!-- but a regular inline sequence.                                  -->
  1150. <!-- =============================================================== -->
  1151. <!ELEMENT fo:basic-link (%mixed-level;)*>
  1152. <!ATTLIST fo:basic-link
  1153.     %inline-properties; 
  1154.     external-destination CDATA #IMPLIED
  1155.     internal-destination CDATA #IMPLIED
  1156.     indicate-destination (true | false) #IMPLIED
  1157.     show-destination (replace | new) #IMPLIED
  1158.     destination-placement-offset CDATA #IMPLIED
  1159.     target-processing-context CDATA #IMPLIED
  1160.     target-presentation-context CDATA #IMPLIED
  1161.     target-stylesheet CDATA #IMPLIED
  1162. >
  1163. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1164. <!-- Wrappers and Markers.                                           -->
  1165. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1166. <!-- =============================================================== -->
  1167. <!-- Wrapper. This may be useful but breaks every effort to validate -->
  1168. <!-- content models for blocks and inlines.                          -->
  1169. <!-- =============================================================== -->
  1170. <!ELEMENT fo:wrapper (%mixed-level;)*>
  1171. <!ATTLIST fo:wrapper
  1172.     id CDATA #IMPLIED
  1173.     %inheritable-properties; 
  1174. >
  1175. <!-- =============================================================== -->
  1176. <!-- Marker. This element may embrace any content but cannot pass    -->
  1177. <!-- properties to its children; so, it may not have features other  -->
  1178. <!-- than marker-class-name.                                         -->
  1179. <!-- =============================================================== -->
  1180. <!ELEMENT fo:marker (%mixed-level;)*>
  1181. <!ATTLIST fo:marker
  1182.     marker-class-name CDATA #IMPLIED
  1183. >
  1184. <!-- =============================================================== -->
  1185. <!-- Marker retrieval.                                               -->
  1186. <!-- =============================================================== -->
  1187. <!ELEMENT fo:retrieve-marker EMPTY>
  1188. <!ATTLIST fo:retrieve-marker
  1189.     retrieve-class-name CDATA #IMPLIED
  1190.     retrieve-position (first-starting-within-page | first-including-carryover | last-starting-within-page | last-ending-within-page) #IMPLIED
  1191.     retrieve-boundary (page | page-sequence | document) #IMPLIED
  1192. >
  1193. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1194. <!-- Multistate stuff. This section is the least developed in the    -->
  1195. <!-- whole DTD, and most solutions are arbitrary. We beg thy pardon. -->
  1196. <!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->
  1197. <!-- =============================================================== -->
  1198. <!-- Switch. This is a pure logical operator; no formatting may be   -->
  1199. <!-- conveyed through it.                                            -->
  1200. <!-- =============================================================== -->
  1201. <!ELEMENT fo:multi-switch (fo:multi-case)+>
  1202. <!ATTLIST fo:multi-switch
  1203.     %inheritable-properties; 
  1204.     id CDATA #IMPLIED
  1205.     auto-restore (true | false) #IMPLIED
  1206. >
  1207. <!-- =============================================================== -->
  1208. <!-- Single case. Block-level formatting may be conveyed.            -->
  1209. <!-- =============================================================== -->
  1210. <!ELEMENT fo:multi-case (%mixed-level;)*>
  1211. <!ATTLIST fo:multi-case
  1212.     %inheritable-properties; 
  1213.     id CDATA #IMPLIED
  1214.     starting-state CDATA #IMPLIED
  1215.     case-name CDATA #IMPLIED
  1216.     case-title CDATA #IMPLIED
  1217. >
  1218. <!-- =============================================================== -->
  1219. <!-- Toggle. This is a typical inline.                               -->
  1220. <!-- =============================================================== -->
  1221. <!ELEMENT fo:multi-toggle (%inlines;)*>
  1222. <!ATTLIST fo:multi-toggle
  1223.     %inheritable-properties; 
  1224.     id CDATA #IMPLIED
  1225.     switch-to CDATA #IMPLIED
  1226. >
  1227. <!-- =============================================================== -->
  1228. <!-- Multi-properties is listed among block-level elements.          -->
  1229. <!-- Formatting common to all property sets can be specified here;   -->
  1230. <!-- we expect it to be block-level only.                            -->
  1231. <!-- =============================================================== -->
  1232. <!ELEMENT fo:multi-properties (fo:multi-property-set+, fo:wrapper)>
  1233. <!ATTLIST fo:multi-properties
  1234.     %block-properties; 
  1235. >
  1236. <!-- =============================================================== -->
  1237. <!-- Multi property set. Since these are properties of a             -->
  1238. <!-- fo:multi-properties that is considered a block, we accept only  -->
  1239. <!-- block properties here.                                          -->
  1240. <!-- =============================================================== -->
  1241. <!ELEMENT fo:multi-property-set EMPTY>
  1242. <!ATTLIST fo:multi-property-set
  1243.     %block-properties; 
  1244.     active-state (link | visited | active | hover | focus) #REQUIRED
  1245. >
  1246.