You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ar...@apache.org on 2001/01/08 03:37:01 UTC
cvs commit: xml-fop/docs/design/fo_impl fo_classes.xml
arved 01/01/07 18:37:01
Added: docs/design/fo_impl fo_classes.xml
Log:
New docs for discussion of refactoring of FOs
Revision Changes Path
1.1 xml-fop/docs/design/fo_impl/fo_classes.xml
Index: fo_classes.xml
===================================================================
<?xml version="1.0"?>
<!DOCTYPE formattingObjects [
<!ELEMENT formattingObjects (title,usage,category+,notes?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT usage (para)*>
<!ELEMENT para (#PCDATA|em|term)*>
<!ELEMENT em (#PCDATA)>
<!ELEMENT term (#PCDATA)>
<!ELEMENT category (object)+>
<!ATTLIST category
class CDATA #REQUIRED>
<!ELEMENT object (name,baseClass,specContent,generatedAreas,breaksKeeps?)>
<!ATTLIST object
implemented (true|false) "true">
<!ELEMENT name (#PCDATA)>
<!ELEMENT baseClass (#PCDATA)>
<!ELEMENT specContent (#PCDATA)>
<!ELEMENT generatedAreas (type,multiplicity,currentLayout)?>
<!ATTLIST generatedAreas
isReference (true|false) "false">
<!ELEMENT type (class,stacking)>
<!ELEMENT class (#PCDATA)>
<!ELEMENT stacking (#PCDATA)>
<!ELEMENT multiplicity (#PCDATA)>
<!ELEMENT currentLayout (#PCDATA)>
<!ATTLIST currentLayout
intoParentArea (true|false) "false">
<!ELEMENT breaksKeeps (#PCDATA)>
<!ELEMENT notes (note)+>
<!ELEMENT note (#PCDATA)>
]>
<formattingObjects>
<title>FOP Implementation of Layout Formatting Objects</title>
<usage>
<para>
This table displays information concerning FOP implementation
of XSL formatting objects of the layout type.
</para>
<para>
The category classes refer to the XSL specification notation
<term>%block;</term> and <term>%inline;</term>. These
classifications are rather less useful in practical terms than
one might initially suppose.
</para>
<para>
The <em>Base Class</em> of each object is the FOP implementation
class.
</para>
<para>
The <em>Spec Content</em> is the BNF grammar describing
the content of each FO, as taken from the XSL specification.
</para>
<para>
The <em>Breaks and Keeps</em> describes what breaks and keeps apply
to each FO. <em>All</em> means all breaks and keeps, <em>All Keeps</em>
indicates that <term>keep-together</term>, <term>keep-with-next</term>,
and <term>keep-with-previous</term> all apply. The abbreviations
<term>kt</term>, <term>kwn</term>, and <term>kwp</term> specify
individual keep properties.
</para>
<para>
The information on generated areas describes what type of areas are
<em>generated</em> by a given FO, how many there are, whether or not
they are reference areas, and what FOP area class is being used for layout.
In some cases content is laid-out into the parent area; in others, the
content is laid-out in new areas that are constructed as required, then
added to the parent area - this is also noted in the table. In practise,
we should see that FOs that do not generate areas should layout into the
parent.
</para>
<para>
The Name, Spec Content, and Breaks & Keeps information is definite.
The type and multiplicity of generated areas is definite, as well as whether
the generated areas are reference areas or not. The BaseClass and the
layout area information is FOP-implementation dependent.
</para>
<para><em>Note:</em> Numbers in parentheses refer to Notes. A * after
an FO name indicates that the object is not yet implemented.</para>
</usage>
<category class="block-level">
<object>
<name>block</name>
<baseClass>FObjMixed</baseClass>
<specContent><![CDATA[(#PCDATA|%inline;|%block;)*]]></specContent>
<generatedAreas>
<type><class>normal</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout>BlockArea</currentLayout>
</generatedAreas>
<breaksKeeps>All (2)</breaksKeeps>
</object>
<object>
<name>block-container</name>
<baseClass>FObj</baseClass>
<specContent><![CDATA[(%block;)+]]></specContent>
<generatedAreas isReference="true">
<type><class>viewport/ref</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout>AreaContainer</currentLayout>
</generatedAreas>
<breaksKeeps>All</breaksKeeps>
</object>
<object implemented="false">
<name>table-and-caption</name>
<baseClass>FObj (1)</baseClass>
<specContent>(table-caption?,table)</specContent>
<generatedAreas>
<type><class>normal</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout>AreaContainer</currentLayout>
</generatedAreas>
<breaksKeeps>All keeps</breaksKeeps>
</object>
<object>
<name>table</name>
<baseClass>FObj</baseClass>
<specContent>(table-column*,table-header?, table-footer?,table-body+)</specContent>
<generatedAreas isReference="true">
<type><class>normal</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout>AreaContainer</currentLayout>
</generatedAreas>
<breaksKeeps>All</breaksKeeps>
</object>
<object>
<name>list-block</name>
<baseClass>FObj</baseClass>
<specContent>(list-item+)</specContent>
<generatedAreas>
<type><class>normal</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout>BlockArea</currentLayout>
</generatedAreas>
<breaksKeeps>All</breaksKeeps>
</object>
</category>
<category class="inline-level">
<object implemented="false">
<name>bidi-override</name>
<baseClass>FObjMixed (1)</baseClass>
<specContent><![CDATA[(#PCDATA|%inline;|%block;)*]]></specContent>
<generatedAreas>
<type><class>normal</class><stacking>inline</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout/>
</generatedAreas>
<breaksKeeps/>
</object>
<object>
<name>character</name>
<baseClass>FObj</baseClass>
<specContent>EMPTY</specContent>
<generatedAreas>
<type><class>normal</class><stacking>inline</stacking></type>
<multiplicity>1</multiplicity>
<currentLayout intoParentArea="true">BlockArea</currentLayout>
</generatedAreas>
<breaksKeeps>kwn, kwp</breaksKeeps>
</object>
<object>
<name>external-graphic</name>
<baseClass>FObj</baseClass>
<specContent>EMPTY</specContent>
<generatedAreas>
<type><class>viewport/ref</class><stacking>inline</stacking></type>
<multiplicity>1</multiplicity>
<currentLayout>ImageArea</currentLayout>
</generatedAreas>
<breaksKeeps>kwn, kwp</breaksKeeps>
</object>
<object implemented="false">
<name>initial-property-set</name>
<baseClass>FObj (1)</baseClass>
<specContent>EMPTY</specContent>
<generatedAreas/>
<breaksKeeps/>
</object>
<object>
<name>instream-foreign-object</name>
<baseClass>FObj</baseClass>
<specContent>XML</specContent>
<generatedAreas>
<type><class>viewport/ref</class><stacking>inline</stacking></type>
<multiplicity>1</multiplicity>
<currentLayout>ForeignObjectArea</currentLayout>
</generatedAreas>
<breaksKeeps>kwn, kwp</breaksKeeps>
</object>
<object>
<name>inline</name>
<baseClass>FObjMixed</baseClass>
<specContent><![CDATA[(#PCDATA|%inline;|%block;)*]]></specContent>
<generatedAreas>
<type><class>normal</class><stacking>inline</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout intoParentArea="true">Area</currentLayout>
</generatedAreas>
<breaksKeeps>All keeps</breaksKeeps>
</object>
<object implemented="false">
<name>inline-container</name>
<baseClass>FObj (1)</baseClass>
<specContent><![CDATA[(%block;)+]]></specContent>
<generatedAreas isReference="true">
<type><class>viewport/ref</class><stacking>inline</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout/>
</generatedAreas>
<breaksKeeps>All keeps</breaksKeeps>
</object>
<object>
<name>leader</name>
<baseClass>FObjMixed</baseClass>
<specContent><![CDATA[(#PCDATA|%inline;)*]]></specContent>
<generatedAreas>
<type><class>normal</class><stacking>inline</stacking></type>
<multiplicity>1</multiplicity>
<currentLayout intoParentArea="true">BlockArea</currentLayout>
</generatedAreas>
<breaksKeeps/>
</object>
<object>
<name>page-number</name>
<baseClass>FObj</baseClass>
<specContent>EMPTY</specContent>
<generatedAreas>
<type><class>normal</class><stacking>inline</stacking></type>
<multiplicity>1</multiplicity>
<currentLayout intoParentArea="true">BlockArea (4)</currentLayout>
</generatedAreas>
<breaksKeeps>kwn, kwp</breaksKeeps>
</object>
<object>
<name>page-number-citation</name>
<baseClass>FObj</baseClass>
<specContent>EMPTY</specContent>
<generatedAreas>
<type><class>normal</class><stacking>inline</stacking></type>
<multiplicity>1</multiplicity>
<currentLayout intoParentArea="true">BlockArea (4)</currentLayout>
</generatedAreas>
<breaksKeeps>kwn, kwp</breaksKeeps>
</object>
<object>
<name>basic-link</name>
<baseClass>FObjMixed</baseClass>
<specContent><![CDATA[(#PCDATA|%inline;|%block;)*]]></specContent>
<generatedAreas>
<type><class>normal</class><stacking>inline</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout intoParentArea="true">Area (4)</currentLayout>
</generatedAreas>
<breaksKeeps>All keeps</breaksKeeps>
</object>
</category>
<category class="other">
<object>
<name>list-item-body</name>
<baseClass>FObj</baseClass>
<specContent><![CDATA[(%block;)+]]></specContent>
<generatedAreas>
<type><class>None</class><stacking>None</stacking></type>
<multiplicity/>
<currentLayout intoParentArea="true">Area</currentLayout>
</generatedAreas>
<breaksKeeps>kt</breaksKeeps>
</object>
<object>
<name>list-item</name>
<baseClass>FObj</baseClass>
<specContent>(list-item-label,list-item-body)</specContent>
<generatedAreas>
<type><class>normal</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout>BlockArea</currentLayout>
</generatedAreas>
<breaksKeeps>All</breaksKeeps>
</object>
<object>
<name>list-item-label</name>
<baseClass>FObj</baseClass>
<specContent><![CDATA[(%block;)*]]></specContent>
<generatedAreas>
<type><class>None</class><stacking>None</stacking></type>
<multiplicity/>
<currentLayout intoParentArea="true">Area</currentLayout>
</generatedAreas>
<breaksKeeps>kt</breaksKeeps>
</object>
<object>
<name>table-body</name>
<baseClass>FObj</baseClass>
<specContent>(table-row+|table-cell+)</specContent>
<generatedAreas>
<type><class>None</class><stacking>None</stacking></type>
<multiplicity/>
<currentLayout>AreaContainer (3)</currentLayout>
</generatedAreas>
<breaksKeeps/>
</object>
<object implemented="false">
<name>table-caption</name>
<baseClass>FObj (1)</baseClass>
<specContent><![CDATA[(%block;)+]]></specContent>
<generatedAreas>
<type><class>normal</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout/>
</generatedAreas>
<breaksKeeps>kt</breaksKeeps>
</object>
<object>
<name>table-cell</name>
<baseClass>FObj</baseClass>
<specContent><![CDATA[(%block;)+]]></specContent>
<generatedAreas isReference="true">
<type><class>normal</class><stacking>block</stacking></type>
<multiplicity>1..*</multiplicity>
<currentLayout>AreaContainer</currentLayout>
</generatedAreas>
<breaksKeeps/>
</object>
<object>
<name>table-column</name>
<baseClass>FObj</baseClass>
<specContent>EMPTY</specContent>
<generatedAreas/>
<breaksKeeps/>
</object>
<object>
<name>table-footer</name>
<baseClass>TableBody</baseClass>
<specContent>(table-row+|table-cell+)</specContent>
<generatedAreas>
<type><class>None</class><stacking>None</stacking></type>
<multiplicity/>
<currentLayout>AreaContainer (3)</currentLayout>
</generatedAreas>
<breaksKeeps/>
</object>
<object>
<name>table-header</name>
<baseClass>TableBody</baseClass>
<specContent>(table-row+|table-cell+)</specContent>
<generatedAreas>
<type><class>None</class><stacking>None</stacking></type>
<multiplicity/>
<currentLayout>AreaContainer (3)</currentLayout>
</generatedAreas>
<breaksKeeps/>
</object>
<object>
<name>table-row</name>
<baseClass>FObj</baseClass>
<specContent>(table-cell+)</specContent>
<generatedAreas/>
<breaksKeeps>All</breaksKeeps>
</object>
</category>
<notes>
<note>not yet implemented; suggested base class</note>
<note>also widows & orphans</note>
<note>This is being generated in FOP, but an fo:table-body, or fo:table-header,
or fo:table-footer, generate no areas.</note>
<note>Should generate an area.</note>
</notes>
</formattingObjects>