comments on the 990421 drafr of the XSL specification

The following comments pertain to the XML DTD in Appendix A "DTD for XSL
Formatting Objects" in the W3C working draft of the "Extensible Stylesheet
Language Specification" dated April 21, 1999
(http://www.w3.org/TR/1999/WD-xsl-19990421). The numbers in square brackets
refer to the productions in the current XML specification
(http://www.w3.org/TR/REC-xml) defining XML syntax.

1. [5} "Name" and [45] "elementdecl" which define the ELEMENT declaration in
XML do not allow element types to be defined in terms of a name group.
Accordingly, the following ELEMENT declaration 

<!ELEMENT (fo:table-header | fo:table-footer | fo:table-body)
  (
    fo:table-row+
  | fo:table-cell+
  )
>

must be rewritten as three separate ELEMENT declarations

<!ELEMENT fo:table-header
  (
    fo:table-row+
  | fo:table-cell+
  )
>

<!ELEMENT fo:table-footer
  (
    fo:table-row+
  | fo:table-cell+
  )
>

<!ELEMENT fo:table-body
  (
    fo:table-row+
  | fo:table-cell+
  )
>

2. [5] "Name" and [52] "AttlistDecl" which define the ATTLIST  declaration
in XML do not allow the attributes of element types to be defined in terms
of a name group. Accordingly, the following ATTLIST declaration 

<!ATTLIST (fo:table-header | fo:table-footer | fo:table-body)
    %common-absolute-position-properties;
    %common-aural-properties;
    %common-border-padding-and-background-properties;     
    id  CDATA  #IMPLIED
>

must be rewritten as three separate ATTLIST declarations

<!ATTLIST fo:table-header
    %common-absolute-position-properties;
    %common-aural-properties;
    %common-border-padding-and-background-properties;
    id  CDATA  #IMPLIED
>

<!ATTLIST fo:table-footer
    %common-absolute-position-properties;
    %common-aural-properties;
    %common-border-padding-and-background-properties;
    id  CDATA  #IMPLIED
>

<!ATTLIST fo:table-body
    %common-absolute-position-properties;
    %common-aural-properties;
    %common-border-padding-and-background-properties;
    id  CDATA  #IMPLIED
>

3. [45] "elementdecl", [46] "contentspec", and [51] "Mixed" require that
content models containing the "#PCDATA" content token along with other
content tokens must be of the form 

(#PCDATA | a | b | c| . . . )*

Accordingly, the occurrence indicator "+" in five ELEMENT declarations 

<!ELEMENT fo:inline-sequence (
    #PCDATA
  | %inlines;
  | %block-level;
  )+
>

<!ELEMENT fo:footnote-citation (
    #PCDATA
  | %inlines;
  )+
>

<!ELEMENT fo:bidi-override (
    #PCDATA
  | %inlines;
  )+
>

<!ELEMENT fo:simple-link (
    #PCDATA
  | %inlines;
  | %block-level;
  )+
>

<!ELEMENT fo:multi-toggle (
    #PCDATA
  | %inlines;
  )+
>

must changed to "*" as follows

<!ELEMENT fo:inline-sequence (
    #PCDATA
  | %inlines;
  | %block-level;
  )*
>

<!ELEMENT fo:footnote-citation (
    #PCDATA
  | %inlines;
  )*
>

<!ELEMENT fo:bidi-override (
    #PCDATA
  | %inlines;
  )*
>

<!ELEMENT fo:simple-link (
    #PCDATA
  | %inlines;
  | %block-level;
  )*
>

<!ELEMENT fo:multi-toggle (
    #PCDATA
  | %inlines;
  )*
>

4. As noted previously, [45] "elementdecl", [46] "contentspec", and [51]
"Mixed" require that content models containing the "#PCDATA" content token
along with other content tokens must be of the form 

(#PCDATA | a | b | c| . . . )*

The following two ELEMENT declarations 

<!ELEMENT fo:block (
  fo:first-line-marker?,
    (
      #PCDATA
    | %inlines;
    | %block-level;
    )+
  )
>

<!ELEMENT fo:multi-properties (
    fo:multi-property-set+,
    (
      #PCDATA
    | %inlines;
    | %block-level;
    )+
  )
>

have content models of the forms 

(z1?, (#PCDATA | y | x | w | . . . )

(z2+, (#PCDATA | y | x | w | . . . )

respectively. These two content models will have to be rewritten in the form
of

(#PCDATA | a | b | c| . . . )*
 
5. [45] "elementdecl", [46] "contentspec", [47] "children" and [51] "Mixed"
do not permit the inclusions or exclusions exceptions of SGML in XML. The
content models of the three ELEMENT declarations

<!ELEMENT fo:float (
    %block-level;
  )+                      -(%out-of-lines)
>

<!ELEMENT fo:footnote (
    fo:footnote-citation?,
    (%block-level;)+
  )                       -(%out-of-lines)
>

<!ELEMENT fo:multi-case (
    #PCDATA
  | %inlines;
  | %block-level;
  )+                            +(fo:multi-toggle)
>

will have to be rewritten so as to model their acceptable content without
resorting to exclusions or inclusions exceptions. 

Also note that the "%out-of-line" general entity references are not
terminated by ";" as required by [68] "EntityRef". Finally, the "+"
following the last content model above must be "*" in accordance with [45]
"elementdecl", [46] "contentspec", and [51] "Mixed". 

Received on Tuesday, 18 May 1999 13:43:43 UTC