- From: Glen Mazza <grm7793@yahoo.com>
- Date: Mon, 28 Jun 2004 06:54:35 -0400
- To: XSL Editors <xsl-editors@w3.org>
Editors: The content-model syntax used to define for each FO the valid child elements and their ordering/frequency is proving to be a very efficient shorthand for documenting and coding validity checking. It would be helpful for all FO's that can have their content defined exclusively with this syntax be done in this manner. Section 6.2 of the 1.1 specification[1], appears to support this view, that prose will be used [only] where additional constraints are "not expressible in XML content models." A good example of a FO needing prose is for fo:block-container (below), where certain conditions must be met for an fo:marker child element to be valid: <Q> fo:block-container: (%block;)+ In addition an fo:block-container that does not generate an absolutely positioned area may have a sequence of zero or more fo:markers as its initial children. </Q> However, many of the other FO content models appear to have fo:marker unnecessarily pulled out of the content model and placed into prose instead. Although it is true that fo:markers are processed differently than most other formatting objects, for the purpose of the content models, which are just to define the valid child elements for each FO, the need to have them factored out is unclear. Furthermore, the idea (*if* this was the idea) that certain formatting objects, due to their uniqueness in processing, should be pulled out of the content models might not prove scalable over time. If necessary, the XML recommendation[2] does allow for using parentheses for grouping elements but it appears in most cases the fo:markers can be placed into the content models without needing to resort to them. I'd like to make the following recommendations, for the listed formatting objects, to place fo:markers within the content-model syntax and remove the prose previously used to define their location. Thanks, Glen Mazza EDS / XML Apache FOP Project [1] http://www.w3.org/TR/2003/WD-xsl11-20031217/#d0e6425 [2] http://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation 1.) fo:table: =================================================== Change from: (table-column*,table-header?,table-footer?,table-body+) In addition this formatting object may have a sequence of zero or more fo:markers as its initial children. To: (marker*,table-column*,table-header?,table-footer?,table-body+) 2.) fo:block: =================================================== Change from: (#PCDATA|%inline;|%block;)* In addition this formatting object may have a sequence of zero or more fo:markers as its initial children, optionally followed by an fo:initial-property-set. To: (marker*, initial-property-set?, (#PCDATA|%inline;|%block;)*) 3.) fo:list-item: =============================================== Change from: (list-item-label,list-item-body) In addition this formatting object may have a sequence of zero or more fo:markers as its initial children. Change to: (marker*,list-item-label,list-item-body) 4.) fo:list-block =============================================== Change from: (list-item+) In addition this formatting object may have a sequence of zero or more fo:markers as its initial children. Change to: (marker*, list-item+) 5.) fo:table-and-caption ======================================= Change from: (table-caption?,table) In addition this formatting object may have a sequence of zero or more fo:markers as its initial children. Change to: (marker*,table-caption?,table) 6.) fo:table-header, fo:table-footer, fo:table-body ============= Change from: (table-row+|table-cell+) In addition this formatting object may have a sequence of zero or more fo:markers as its initial children. To: (marker*, (table-row+|table-cell+)) 7.) fo:flow, fo:inline-container, fo:table-cell, fo:list-item-body, fo:list-item-label, fo:table-caption: ======== Change from: (%block;)+ In addition this formatting object may have a sequence of zero or more fo:markers as its initial children. To: (marker*, (%block;)+) or (marker*, %block;+) 8.) fo:bidi-override, fo:basic-link, fo:inline: ================= Change from: (#PCDATA|%inline;|%block;)* In addition this formatting object may have a sequence of zero or more fo:markers as its initial children. To: (marker*, (#PCDATA|%inline;|%block;)*)
Received on Monday, 28 June 2004 06:49:58 UTC