<level-3 name="table" compliance-level="1" comply="yes"/>
<level-3 name="table-body" compliance-level="1" comply="yes"/>
<level-3 name="table-cell" compliance-level="1" comply="yes">
- <comment>must contain block-level FOs (cannot contain straight character data</comment>
+ <comment>must contain block-level FOs (cannot contain straight character data</comment>
</level-3>
<level-3 name="table-column" compliance-level="1" comply="yes">
<comment>you must explicitly specify column widths</comment>
-<?xml version="1.0" standalone="no"?>
+<?xml version="1.0" standalone="no"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
defined in the specification. A number of optimisations may be possible
for similar areas and groups of areas.
</p>
- <p>
+ <p>
Since the area tree will be used during the layout by the layout managers
it will need to store information that affects the layout. The information
such as spacing and keeps will be held in such a way that it can be
</p>
<section>
<title>Structure</title>
-<p>
+<p>
The area tree is a root element that has a list of page-viewport-areas.
Each page viewport has a page-reference-area which holds the contents of
the page. To handle the processing better FOP does not maintain a list
indicating various conditions (ISFIRST, ISLAST, CAN_BREAK_AFTER,
FORCE_BREAK_AFTER, ANCHORS etc). A BreakPoss contains a reference to
the top-level LayoutManager which generated it.
-</p>
+</p>
<p>A BreakPoss contains an object implementing
the BreakPoss.Position interface. This object is specific to the layout
manager which created the BreakPoss. It should indicate where the
-break occurs and allow the LM to
+break occurs and allow the LM to
create an area corresponding to the BP. A higher level LM Position
must somehow reference or wrap the Position returned by its child LM in its
BreakPoss object. The layout manager modifies the flags and dimension
</section>
<section>
<title>A walk-through</title>
-<p>Layout Managers are created from the top down. First the
+<p>Layout Managers are created from the top down. First the
page sequence creates a PageLM and a FlowLM. The PageLM will manage
finding the right page model (with help from the PageSequenceMaster)
and managing the balancing act between before-floats, footnotes and
<authors>
<person name="Keiron Liddle" email="keiron@aftexsw.com"/>
</authors>
- </header>
+ </header>
<body>
<section>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-<document>
+<document>
<header>
<title>FO Tree</title>
<subtitle>Design of FO Tree Structure</subtitle>
<body>
<section>
<title>Introduction</title>
-<p>
+<p>
The FO Tree is an internal representation of the input FO document.
The tree is created by building the elements and attributes from
the SAX events.
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-<document>
+<document>
<header>
<title>Properties</title>
<subtitle>Properties overview</subtitle>
</authors>
</header>
- <body>
+ <body>
<section>
<title>Properties</title>
<title>Property datatypes</title>
<p>The property datatypes are defined in the
org.apache.fop.datatypes package, except Number and String which are java
-primitives. The FOP datatypes are:</p>
+primitives. The FOP datatypes are:</p>
<ul>
<li>Number</li>
<li>String</li>
The FO Tree is simply a heirarchy of java objects that
represent the fo elements from xml. The traversal is done by
the layout or structure process only in the flow elements.
- </p>
+ </p>
<section>
<title>Properties</title>
any element, but it's possible to set up an element-specific property
Maker. The attribute name to Maker mappings are automatically created
during the code generation phase by processing the XML property
-description files.</p>
+description files.</p>
</section>
<section>
<title>Processing the attribute list</title>
<p>The PLB first looks to see if the font-size property is specified, since
-it sets up relative units which can be used in other property
+it sets up relative units which can be used in other property
specifications. Each attribute is then handled in turn. If the attribute
specifies part of a compound property such as space-before.optimum, the
PLB looks to see if the attribute list also contains the "base" property
still needs to be parsed as described next.</p>
<p>The Maker also checks to see if the property is an Enumerated type and
-then checks whether the value matches one of the specified enumeration
+then checks whether the value matches one of the specified enumeration
values.</p>
<p>Otherwise the Maker uses the property parser in the fo.expr package to
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-<document>
- <header>
- <title>Configuration</title>
- </header>
- <body>
+<document>
+ <header>
+ <title>Configuration</title>
+ </header>
+ <body>
<section>
<title>Configuring FOP</title>
<p>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-<document>
- <header>
- <title>FO Examples</title>
- </header>
- <body>
+<document>
+ <header>
+ <title>FO Examples</title>
+ </header>
+ <body>
<section>
<title>Example Documents Using FOP</title>
<p>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-<document>
- <header>
- <title>Extensions to FOP</title>
- </header>
- <body>
+<document>
+ <header>
+ <title>Extensions to FOP</title>
+ </header>
+ <body>
<section>
<title>Overview</title>
<p>
<question>Watermarks</question>
<answer>
<p> Answer: see 3.3, or use a a region overlapping the flowing text and put
- an image there:
+ an image there:
</p>
<p> > From: Trevor_Campbell@kaz.com.au
Use the region-before. Make it large enough to contain your image and then
</fo:block>
<fo:block>
-
+
</fo:block>
<fo:block space-before.optimum="5pt" space-after.optimum="5pt" font-weight="bold" font-size="12pt">
</fo:block>
<fo:block>
-
+
</fo:block>
</fo:flow>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
- <document>
- <header>
- <title>FOP 1.0 development</title>
- </header>
- <body>
+ <document>
+ <header>
+ <title>FOP 1.0 development</title>
+ </header>
+ <body>
<section>
<title>Introduction</title>
<p>
is formatted into the two pages on the right. The document contains static areasthat appear on every page, an external graphic in this case an svg document.
There is a footnote on the first page and a table that goes across both pages.
</p>
-<p>
+<p>
The advantage of XSL is the ability to take an XML document and to format
the information into a page layout. The XML document can be generated
in any way, the most common would be to use XSLT. FOP takes the XML
and formats the data into pages. The pages are then rendered to the
requested output.
-</p>
+</p>
<p>
This is a real document. The image was created by rendering the document
to the svg renderer then putting the rendered pages into an svg document
<p>Conformance to the XML 1.0 Recommendation, XSLT 1.0 Recommendation and the XML Namespaces Recommendation is
understood. Other relevant documents, such as the XPath and XLink Working Drafts, are referenced as necessary. The FOP
Project will attempt to use the latest version of evolving specifications.
- </p>
+ </p>
<p>To reach this aim currently the layout system is being redesigned to
better handle the formatting of all different types of formatting objects.
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-<document>
- <header>
- <title>SVG in FOP</title>
- </header>
- <body>
+<document>
+ <header>
+ <title>SVG in FOP</title>
+ </header>
+ <body>
<section>
<title>Introduction</title>
<p>
<caption>SVG to PDF examples</caption>
<tr>
<th></th>
- <th>svg file</th>
- <th>png file</th>
- <th>pdf result</th>
+ <th>svg file</th>
+ <th>png file</th>
+ <th>pdf result</th>
</tr>
<tr>
- <td>images</td>
- <td><link href="svg/images.svg">images.svg</link></td>
+ <td>images</td>
+ <td><link href="svg/images.svg">images.svg</link></td>
<td><!--link href="svg/images.png"-->images.png<!--/link--></td>
<td><link href="svg/images.pdf">images.pdf</link></td>
</tr>
<td><link href="fo/embedding.fo">embedding.fo</link></td>
<td><link href="fo/embedding.fo.pdf">embedding.fo.pdf</link></td>
</tr>
- </table>
+ </table>
</section>
<section>
<title>Important Notes</title>
<line x1="30" y1="80" x2="100" y2="80"/>
<line x1="50" y1="100" x2="80" y2="100"/>
</g>
-</g>
+</g>
</glyph>
<glyph unicode="P" glyph-name="p" horiz-adv-x="210">
<line x1="5" y1="85" x2="40" y2="85"/>
<line x1="5" y1="110" x2="40" y2="110"/>
</g>
-</g>
+</g>
</glyph>
<hkern g1="F" g2="O" k="5"/>
</li>
<li>readme.fo - uses an old version of Fop documentation for a longer example
</li>
-
+
<li>Look also into the directory examples/svg. There you find some very extensive svg examples.
Just start makedoc.
</li>
</fox:outline>
<fox:outline>
</fo:root>]]></source>
- <p>It works similarly to a basic-link. There is also an external-destination
- property, but it isn't supported currently. See the pdfoutline.fo file in
+ <p>It works similarly to a basic-link. There is also an external-destination
+ property, but it isn't supported currently. See the pdfoutline.fo file in
docs/examples/fo for a more complete example.</p>
</section>
</section>
<question>Watermarks</question>
<answer>
<p> Answer: see 3.3, or use a a region overlapping the flowing text and put
- an image there:
+ an image there:
</p>
<p> > From: Trevor_Campbell@kaz.com.au
Use the region-before. Make it large enough to contain your image and then
<fo:page-sequence id="N2528" master-reference="left">
<fo:static-content flow-name="xsl-region-after">
- <fo:block text-align-last="center" font-size="10pt">
- <fo:page-number/>
- </fo:block>
+ <fo:block text-align-last="center" font-size="10pt">
+ <fo:page-number/>
+ </fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:page-sequence id="N2528" master-reference="left">
<fo:static-content flow-name="xsl-region-after">
- <fo:block text-align-last="center" font-size="10pt">
- <fo:page-number/>
- </fo:block>
+ <fo:block text-align-last="center" font-size="10pt">
+ <fo:page-number/>
+ </fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:page-sequence id="N2528" master-reference="left">
<fo:static-content flow-name="xsl-region-after">
- <fo:block text-align-last="center" font-size="10pt">
- <fo:page-number/>
- </fo:block>
+ <fo:block text-align-last="center" font-size="10pt">
+ <fo:page-number/>
+ </fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
<fo:page-sequence id="N2528" master-reference="left">
<fo:static-content flow-name="xsl-region-after">
- <fo:block text-align-last="center" font-size="10pt">
- <fo:page-number/>
- </fo:block>
+ <fo:block text-align-last="center" font-size="10pt">
+ <fo:page-number/>
+ </fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body">
</section>
<section>
<title>1) Formatting Objects</title>
- <p>This section follows the table "B Formatting Object Summary" in the xsl:fo specification. At the
+ <p>This section follows the table "B Formatting Object Summary" in the xsl:fo specification. At the
end of each sub-section you find listed what is not implemented.</p>
<section>
<li>region-before</li>
<li>region-after</li>
<li>region-start</li>
- <li>region-end</li>
+ <li>region-end</li>
<li>flow</li>
<li>static-content</li>
</ul>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-<document>
- <header>
- <title>FOP</title>
- </header>
- <body>
+<document>
+ <header>
+ <title>FOP</title>
+ </header>
+ <body>
<section>
<title>Introduction</title>
<p>FOP (Formatting Objects Processor) is the world's first print formatter driven by XSL formatting
objects and the world's first output independent formatter. It is a
Java application that reads a formatting object tree and then
renders the resulting pages to a specified output. <link href="output.html">Output formats</link>
- currently supported are PDF, PCL, PS, SVG, XML (area tree representation),
+ currently supported are PDF, PCL, PS, SVG, XML (area tree representation),
Print, AWT, MIF and TXT.
- The primary output target is PDF.
+ The primary output target is PDF.
</p>
<note>
The PDF files on this site are created using current CVS.
</note>
- <figure width="480" height="260" src="images/document.jpg" alt="Render Diagram" />
+ <figure width="480" height="260" src="images/document.jpg" alt="Render Diagram" />
<p>The latest version of Fop is 0.20.4 and it supports the
<link href="http://www.w3.org/TR/2001/REC-xsl-20011015/">XSL-FO Version 1.0
W3C Recommendation</link>.
- You can <link href="download.html">download</link>
- Fop including a precompiled version, the source code and many example files to
+ You can <link href="download.html">download</link>
+ Fop including a precompiled version, the source code and many example files to
get you started. Pointers to introductions into xsl:fo can be found in the
- <link href="resources.html">resources</link> section. Please be aware, that
+ <link href="resources.html">resources</link> section. Please be aware, that
Fop is at the moment not a full implementation of the basic conformance level
of the xsl:fo standard. You can find a list of supported flow objects and properties
in the section <link href="implemented.html">Features</link> and in section
<section>
<title>The Apache Software License, Version 1.1</title>
<p> Copyright (C) 1999-2001 The Apache Software Foundation. All rights reserved.</p>
- <p> Redistribution and use in source and binary forms, with or without modification,
+ <p> Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:</p>
<p>1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
<p>
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
- James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ James Tauber <jtauber@jtauber.com>. For more information on the Apache
Software Foundation, please see <link href="http://www.apache.org/">http://www.apache.org/</link>.
</p>
</section>
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
<!-- Output Formats: Renderers -->
-<document>
+<document>
<header>
<title>Output</title>
<subtitle>Notes about Output Formats: Renderers</subtitle>
</p>
<section>
<title>Common Information</title>
- <p>
+ <p>
Each renderer is given an area tree to render to its output format.
The area tree is simply a representation of the pages and the placement
of text and graphical objects on those pages.
</p>
<p>
Fonts and Layout - some formats (eg. PDF and AWT) rely on different
-font information. The fonts for these outputs have different sizes
+font information. The fonts for these outputs have different sizes
for the same point size. This means that the layout can be quite
different for the same fo document.
</p>
(which includes Crimson and Xalan).
</li>
<li>The following JARs have been updated:
- Xerces to version 2.0.1, Xalan to version 2.3.1 and Batik to version 1.5beta2.
+ Xerces to version 2.0.1, Xalan to version 2.3.1 and Batik to version 1.5beta2.
</li>
<li>Fop has been compiled with Jimi support this time
but you still have to download
<?xml version="1.0" standalone="no"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
-
+
<!-- FOP Relevant Specifications and links -->
-<document>
+<document>
<header>
<title>Resources</title>
<subtitle>Resources useful for developing and using FOP</subtitle>
- </header>
+ </header>
<body>
<section>
<title>FOP Relevant Specifications and Links</title>
"http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
<!-- Status -->
-
+
<document>
<header>
<title>FOP Status</title>
<subtitle>Current Status of FOP</subtitle>
</header>
-
+
<body>
<section>
<title>Status</title>
performance and design issues.
</p>
</section>
-
+
<section>
<title>Development Status</title>
<p>
to the spec and be able to handle large documents. The development effort
is roughly 50% towards a developers release.
</p>
-<p>
+<p>
The developers release should have the following: similar functionality
to previous FOP releases, a rough API and a suitable design for
developers to work on more functionality.
<tr><td>xalan.jar</td><td>883 kb</td></tr>
<tr><td>xerces.jar</td><td>1,809 kb</td></tr>
</table>
-
+
<p><strong>Lines of code</strong> using "find . -iname "*.java" | xargs cat | wc -l"</p>
<table>
<tr><td>org.apache.fop.*</td><td>67479</td></tr>
<section>
<title>Running and Using Tests</title>
<p>
-Testing is an important part of getting FOP to operate correctly and conform to the
+Testing is an important part of getting FOP to operate correctly and conform to the
necessary standards.
</p>
<p>
-A testing system has been set up that works with as a build target when developing
+A testing system has been set up that works with as a build target when developing
with FOP. A developer can run the tests after making changes to the code, the aim
is to have the tests run to verfiy that nothing working has been broken.
</p>
To setup the testing the developer must place a reference fop.jar in the
"<cvs_repository>/test/reference/" directory. This jar will be dynamically
loaded to create the reference output.
- </p>
+ </p>
</section>
<section>
<section>
<title>Writing a Test</title>
<p>
-A test belongs to one of a few catagories. A basic test should excercise one
+A test belongs to one of a few catagories. A basic test should excercise one
element in a number of situations such as changing a property. This should have
-at least one normal value, one border value and one invalid value. If the property
+at least one normal value, one border value and one invalid value. If the property
can be of different types then this should also be included.
</p>
<p>
<!-- transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory -->
</map:transformer>
</map:transformers>
-
+
<map:readers default="resource">
<map:reader name="resource" src="org.apache.cocoon.reading.ResourceReader"/>
</map:readers>
<map:pipeline name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/>
-->
</map:pipelines>
-
+
</map:components>
<!-- =========================== Views =================================== -->
<map:parameter name="isfaq" value="{isfaq}"/>
<map:parameter name="nopdf" value="{nopdf}"/>
<map:parameter name="path" value="{path}"/>
- <!-- Can set an alternative project skinconfig here
+ <!-- Can set an alternative project skinconfig here
<map:parameter name="config-file" value="../../../../skinconf.xml"/>
-->
</map:transform>
<!-- =========================== Pipelines ================================= -->
<map:pipelines>
-
+
<!-- Pipeline that manages the internal URI space
For the external URI space manager, see the next pipeline. -->
<map:pipeline internal-only="true">
<!-- ========================== FOP Additions ========================== -->
- <map:match pattern="body-compliance.xml">
+ <map:match pattern="body-compliance.xml">
<map:generate type="file-nolabel" src="content/xdocs/compliance.xml"/>
<map:transform src="resources/stylesheets/compliance2document.xsl" label="content"/>
<map:call resource="skinit">
</map:match>
<map:match pattern="**">
-
+
<!-- if the file is present verbatim as content, give that to the user... -->
<map:act type="resource-exists">
<map:parameter name="url" value="content/{1}"/>
<map:read src="content/{../1}"/>
</map:act>
-
+
<!-- ... otherwise try to generate it using these rules. -->
-
+
<map:match pattern="apachestats">
<map:generate type="html"
src="http://www.apache.org/~rubys/stats/xml.apache.org/">
<map:serialize type="xml"/>
</map:match>
-
+
<map:match pattern="*.html">
<map:aggregate element="site">
<map:part src="cocoon:/book-{1}.xml"/>
</map:match>
</map:match>
-
+
</map:pipeline>
</map:pipelines>
<!ELEMENT credit (name, url, image, width?, height?)>
<!ELEMENT disable-search (#PCDATA)>
<!ELEMENT searchsite-domain (#PCDATA)>
- <!ELEMENT searchsite-name (#PCDATA)>
+ <!ELEMENT searchsite-name (#PCDATA)>
<!ELEMENT project-name (#PCDATA)>
<!ELEMENT project-url (#PCDATA)>
<!ELEMENT project-logo (#PCDATA)>
<!-- Do we want the Google search box? -->
<disable-search>false</disable-search>
<searchsite-domain>xml.apache.org</searchsite-domain>
- <searchsite-name>Apache XML</searchsite-name>
+ <searchsite-name>Apache XML</searchsite-name>
<project-name>FOP</project-name>