using new forrest docs git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@195365 13f79535-47bb-0310-9956-ffa450edef68pull/30/head
@@ -0,0 +1,27 @@ | |||
############## | |||
# Properties used by forrest.build.xml for building the website | |||
############## | |||
# Prints out a summary of Forrest settings for this project | |||
#forrest.echo=true | |||
# Project name (used to name .war file) | |||
project.name=fop-project | |||
# Specifies name of Forrest skin to use | |||
#project.skin=forrest-site | |||
# Properties that must be set to override the default locations | |||
#project.status=status.xml | |||
project.content-dir=src/documentation | |||
#project.conf-dir=${project.content-dir}/conf | |||
project.sitemap=${project.content-dir}/sitemap.xmap | |||
#project.xdocs-dir=${project.content-dir}/content/xdocs | |||
#project.stylesheets-dir=${project.content-dir}/resources/stylesheets | |||
#project.images-dir=${project.content-dir}/resources/images | |||
#project.schema-dir=${project.content-dir}/resources/schema | |||
#project.skins-dir=${project.content-dir}/skins | |||
project.skinconf=${project.content-dir}/skinconf.xml | |||
#project.lib-dir=${project.content-dir}/lib | |||
#project.classes-dir=${project.content-dir}/classes | |||
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE book PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN" "book-cocoon-v10.dtd"> | |||
<book software="FOP" | |||
title="FOP" | |||
copyright="@year@ The Apache Software Foundation" | |||
xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<menu label="About"> | |||
<menu-item label="Index" href="index.html"/> | |||
<menu-item label="Changes" href="changes.html"/> | |||
<menu-item label="Todo" href="todo.html"/> | |||
</menu> | |||
</book> |
@@ -0,0 +1,16 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE book PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN" "book-cocoon-v10.dtd"> | |||
<book software="FOP" | |||
title="FOP" | |||
copyright="@year@ The Apache Software Foundation" | |||
xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<menu label="About"> | |||
<menu-item label="Index" href="index.html"/> | |||
<menu-item label="Examples" href="examples.html"/> | |||
<menu-item label="SVG" href="svg.html"/> | |||
<menu-item label="Extensions" href="extensions.html"/> | |||
<menu-item label="Configuration" href="configuration.html"/> | |||
</menu> | |||
</book> |
@@ -0,0 +1,45 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> | |||
<document> | |||
<header> | |||
<title>Configuration</title> | |||
</header> | |||
<body> | |||
<section> | |||
<title>Configuring FOP</title> | |||
<p> | |||
In the directory xml-fop/conf you will find an example | |||
configuration file. It contains the default values of various | |||
configurable options available in FOP. | |||
</p> | |||
<p>The file fop.xconf is not read automatically, the user | |||
must specify it on the command line or if embedding then | |||
configure the appropriate classes. | |||
</p> | |||
</section> | |||
<section> | |||
<title>Setting up Hyphenation</title> | |||
<p>Fop comes already with some hyphenation patterns. If you | |||
need a hyphenation pattern which isn't included in the | |||
distribution, do the following: | |||
</p> | |||
<p>1. get the TeX hyphenation pattern file and turn it into an xml file which conforms | |||
to the hyphenation.dtd in the sub directory /hyph | |||
</p> | |||
<p>2. name this new file following this schema: languageCode_countryCode.xml. If you don't need | |||
a country code, leave it out, e.g the file name for an American english hyphenation pattern | |||
would look like this: en_US.xml. For an Italian file: it.xml. Language and country codes must be | |||
the same as in xsl:fo, that is follow | |||
<link href="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">ISO 639</link> | |||
and <link href="http://www.ics.uci.edu/pub/ietf/http/related/iso3166.txt">ISO 3166</link> | |||
respectively. NOTE: The ISO 639/ISO 3166 convention is that language names are | |||
written in lower case, while country codes are written in upper case. | |||
</p> | |||
<p>3. If you have build your new hyphenation pattern file | |||
successfully you put the file into the /hyph directoy | |||
and rebuild Fop. The file will be picked up and added | |||
to the fop.jar. | |||
</p> | |||
</section> | |||
</body> | |||
</document> |
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> | |||
<document> | |||
<header> | |||
<title>FO Examples</title> | |||
</header> | |||
<body> | |||
<section> | |||
<title></title> | |||
<p> | |||
</p> | |||
</section> | |||
</body> | |||
</document> |
@@ -0,0 +1,95 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> | |||
<document> | |||
<header> | |||
<title>Extensions to FOP</title> | |||
</header> | |||
<body> | |||
<section> | |||
<title>Overview</title> | |||
<p> | |||
If the default funtionality of FOP needs to be extended for | |||
some reason then you can write an extensions. | |||
</p> | |||
<p> | |||
There are three types of extensions possible. An output document | |||
extensions such as the PDF bookmarks, an instream-foreign-object | |||
extensions such as SVG and an fo extension that creates an | |||
area in the area tree where normal xsl:fo is not possible. | |||
</p> | |||
</section> | |||
<section> | |||
<title>Default Extensions</title> | |||
<p> | |||
These extension are available by default. They are automatically loaded | |||
and you only need to provide the correct namespace for your embedded | |||
xml markup. | |||
</p> | |||
<section> | |||
<title>SVG</title> | |||
<p> | |||
Please see the <link href="svg.html">SVG page</link> for more details. | |||
</p> | |||
<p> | |||
The SVG extensions gets all the xml elements in the SVG namespace | |||
and builds an SVG DOM with batik. The SVG DOM is then rendered | |||
to the output format using a handler for the XML content of | |||
the instream-foreign-object. | |||
</p> | |||
</section> | |||
<section> | |||
<title>PDF Bookmarks</title> | |||
<p> | |||
To use this standard Fop extension, you need to add a namespace entry for | |||
http://xml.apache.org/fop/extensions on the root element. </p> | |||
<p>You can provide outlines inside the root object (but outside | |||
any page-sequences or | |||
other formatting objects). Here's an example of an outline entry:</p> | |||
<source> | |||
<![CDATA[<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" | |||
xmlns:fox="http://xml.apache.org/fop/extensions"> | |||
<fox:bookmarks> | |||
<fox:outline internal-destination="sec3"> | |||
<fox:label>Running FOP</fox:label> | |||
<fox:outline internal-destination="sec3-1"> | |||
<fox:label>Prerequisites</fox:label> | |||
</fox:outline> | |||
<fox:outline> | |||
</fox:bookmarks> | |||
</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 <link href="pdfoutline.pdf">pdfoutline.pdf</link> for a more complete example. | |||
</p> | |||
</section> | |||
</section> | |||
<section> | |||
<title>Adding Your Own</title> | |||
<p> | |||
To add your own extension you need to do the following things. | |||
</p> | |||
<p> | |||
Write code that implements your extension functionality. | |||
There are some examples in the contrib/ directory. | |||
</p> | |||
<p> | |||
Create a jar file with your classes, it must also include the | |||
following file "/META-INF/services/org.apache.fop.fo.ElementMapping". | |||
In this file you need to put the fully qualified classname of | |||
your element mappings class. This class must implement the | |||
"org.apache.fop.fo.ElementMapping" interface. | |||
</p> | |||
<p> | |||
Create your fo file with the extra xml data embedded in the file | |||
with the correct name space. The examples for svg and | |||
<link href="pdfoutline.pdf">pdfoutline.pdf</link> | |||
show how this can be done. | |||
</p> | |||
<p> | |||
Put your jar file in the classpath and then run fop over the fo file. | |||
</p> | |||
</section> | |||
</body> | |||
</document> | |||
@@ -0,0 +1,92 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> | |||
<document> | |||
<header> | |||
<title>FOP 1.0 development</title> | |||
</header> | |||
<body> | |||
<section> | |||
<title>Introduction</title> | |||
<p> | |||
These pages contain information that is relevant to the | |||
current development of FOP. | |||
</p> | |||
<p>FOP 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. <jump href="output.html">Output formats</jump> | |||
currently supported are PDF, PCL, PS, SVG, XML (area tree representation), | |||
Print, AWT, MIF and TXT. | |||
The primary output target is PDF. | |||
</p> | |||
<note> | |||
FOP - someone who is overly concerned with style, also conveniently | |||
can mean Formatting Object Processor. | |||
</note> | |||
<p> | |||
<figure width="480" height="260" src="document.jpg" alt="Render Diagram" /> | |||
</p> | |||
<p>The latest version of Fop is 0.20.4 and it supports the | |||
<jump href="http://www.w3.org/TR/2001/REC-xsl-20011015/">XSL-FO Version 1.0 | |||
W3C Recommendation</jump>. | |||
You can <jump href="download.html">download</jump> | |||
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 | |||
<jump href="resources.html">resources</jump> 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 <jump href="implemented.html">Features</jump> and in section | |||
<jump href="limitations.html">Limitations</jump> in what way this support is | |||
limited. | |||
</p> | |||
<p>FOP is part of Apache's XML project. The homepage of FOP is | |||
<jump href="http://xml.apache.org/fop">http://xml.apache.org/fop</jump>. | |||
Here you can find information about using and developing with FOP. | |||
</p> | |||
<p>Users can subscribe to fop-user@xml.apache.org by sending an email | |||
to <jump href="mailto:fop-user-subscribe@xml.apache.org">fop-user-subscribe@xml.apache.org</jump> | |||
this is where user specific topics are discussed. | |||
</p> | |||
</section> | |||
<section> | |||
<title>Formatting</title> | |||
<p> | |||
<figure width="480" height="260" src="layout.jpg" alt="Formatting Diagram" /> | |||
</p> | |||
<p> | |||
This image is a demonstration of a two page document. The xml data on the left | |||
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> | |||
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> | |||
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 | |||
along with the xml. | |||
</p> | |||
</section> | |||
<section> | |||
<title>FOP Objectives</title> | |||
<p> | |||
The goals of the Apache XML FOP Project are to deliver an XSL FO->PDF formatter that is compliant to at least the Basic | |||
conformance level described in the W3C Recommendation from 15 October 2001, and that complies with the 11 March 1999 Portable Document | |||
Format Specification (Version 1.3) from Adobe Systems. | |||
</p> | |||
<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>To reach this aim currently the layout system is being redesigned to | |||
better handle the formatting of all different types of formatting objects. | |||
</p> | |||
</section> | |||
</body> | |||
</document> |
@@ -0,0 +1,234 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> | |||
<document> | |||
<header> | |||
<title>SVG in FOP</title> | |||
</header> | |||
<body> | |||
<section> | |||
<title>Introduction</title> | |||
<p> | |||
FOP uses the SVG library from | |||
<link href="http://xml.apache.org/batik/">Batik</link> to handle SVG. | |||
This format can be handled as an <code>fo:instream-foreign-object</code> | |||
or in a separate file referenced with <code>fo:external-graphic</code>. | |||
Either way the SVG document will be read in and converted into a | |||
DOM in Batik. This DOM will then be used by the renderer to | |||
create the graphical image. | |||
</p> | |||
<p> | |||
The AWT and Print renderers simply use batik to draw the SVG into a graphic. | |||
</p> | |||
<p> | |||
In the case of the PDF renderer there is a PDFGraphics2D class that Batik uses | |||
to render the image into. This class converts the drawing instructions into | |||
PDF markup which is placed into the current PDF document. | |||
</p> | |||
</section> | |||
<section> | |||
<title>Converting SVG to a PDF Document</title> | |||
<p> | |||
It is possible to convert a standalone SVG document directly | |||
into a simple page PDF document. | |||
This is possible through the use of Batik's transcoder mechanism.<br/> | |||
<code>java org.apache.batik.apps.rasterizer.Main -m application/pdf document.svg</code> | |||
<br/> | |||
This will output the svg document as "document.pdf" containing | |||
a PDF rendering of the SVG file. | |||
</p> | |||
<p> | |||
It is also possible to specify the width and/or height | |||
of the PDF document on the command line with -w and -h or if | |||
you are using the transcoder api you can use the transcoding hints. | |||
</p> | |||
<p> | |||
Currently the SVG image is drawn at the SVG document size and | |||
simply scaled in PDF to the new size. So the result may not be | |||
the best possible. For example if you have any images or effects | |||
it will draw them at the original resolution of the svg document. | |||
When this is viewed in the pdf it will have an incorrect resolution | |||
for the size of the pdf. | |||
</p> | |||
<p> | |||
The size of the pdf file will also remain the same regardless of | |||
what size the page is. | |||
</p> | |||
<p> | |||
For more information see <link href="http://xml.apache.org/batik/">Batik</link> | |||
for how transcoders work. | |||
</p> | |||
</section> | |||
<section> | |||
<title>Examples</title> | |||
<p> | |||
These examples illustrate a number of issues relating to conversion | |||
to PDF: | |||
<table> | |||
<caption>SVG to PDF examples</caption> | |||
<tr> | |||
<th></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><link href="svg/images.png">images.png</link></td> | |||
<td><link href="svg/images.pdf">images.pdf</link></td> | |||
</tr> | |||
<tr> | |||
<td>svg linking</td> | |||
<td><link href="svg/link.svg">link.svg</link></td> | |||
<td><link href="svg/link.png">link.png</link></td> | |||
<td><link href="svg/link.pdf">link.pdf</link></td> | |||
</tr> | |||
<tr> | |||
<td>gradients and patterns</td> | |||
<td><link href="svg/paints.svg">paints.svg</link></td> | |||
<td><link href="svg/paints.png">paints.png</link></td> | |||
<td><link href="svg/paints.pdf">paints.pdf</link></td> | |||
</tr> | |||
<tr> | |||
<td>various text and effects on text</td> | |||
<td><link href="svg/text.svg">text.svg</link></td> | |||
<td><link href="svg/text.png">text.png</link></td> | |||
<td><link href="svg/text.pdf">text.pdf</link></td> | |||
</tr> | |||
<tr> | |||
<td>transparent objects</td> | |||
<td><link href="svg/transparency.svg">transparency.svg</link></td> | |||
<td><link href="svg/transparency.png">transparency.png</link></td> | |||
<td><link href="svg/transparency.pdf">transparency.pdf</link></td> | |||
</tr> | |||
</table> | |||
As can be seen most of the specific issues are handled. | |||
<table> | |||
<caption>XSL:FO to PDF examples</caption> | |||
<tr> | |||
<th></th> | |||
<th>fo file</th> | |||
<th>pdf result</th> | |||
</tr> | |||
<tr> | |||
<td>embedding svg</td> | |||
<td><link href="fo/embedding.fo">embedding.fo</link></td> | |||
<td><link href="fo/embedding.fo.pdf">embedding.fo.pdf</link></td> | |||
</tr> | |||
</table> | |||
</p> | |||
</section> | |||
<section> | |||
<title>Important Notes</title> | |||
<p> | |||
The svg is inserted into PDF by using PDF commands to draw and fill | |||
lines and curves. This means that the graphical objects created with | |||
this remain as vector graphics. | |||
</p> | |||
<p> | |||
There are a number of SVG things that cannot be converted directly into | |||
PDF. Parts of the graphic such as effects and images are inserted | |||
into the PDF as a raster graphic. The resolution of this graphic may not | |||
be ideal depending on the FOP dpi (72dpi) and the scaling for that graphic. | |||
</p> | |||
<p> | |||
Another important note is that text may be converted and drawn as a | |||
set of shapes by batik. | |||
If possible it will use normal PDF text when inserting text. It does | |||
this by checking if the text can be drawn normally and the font is | |||
supported. This example svg <link href="svg/text.svg">text.svg</link> / | |||
<link href="svg/text.pdf">text.pdf</link> | |||
shows how various types and effects with text are handled. | |||
</p> | |||
<p> | |||
If the text cannot be drawn normally then it uses shapes. | |||
This means that a typical character will have about 10 curves | |||
(each curve consists of at least 20 characters). | |||
This can make the pdf files large and when the pdf is viewed the | |||
viewer does not normally draw those fine curves very well (turning on | |||
Smooth Line Art in the Acrobat preferences will fix this). | |||
If the text is inserted into the PDF using the inbuilt text commands | |||
for PDF it will use a single character. | |||
</p> | |||
</section> | |||
<section> | |||
<title>Known Problems</title> | |||
<p> | |||
<ul> | |||
<li> | |||
soft mask transparency is combined with white so that it looks better | |||
on pdf 1.3 viewers but this causes the soft mask to be slightly lighter | |||
or darker on pdf 1.4 viewers | |||
</li> | |||
<li> | |||
there is some problem with a gradient inside a pattern causing a pdf | |||
error when viewed in acrobat 5 | |||
</li> | |||
<li> | |||
text is not always handled correctly, it may select the wrong font | |||
especially if characters have multiple fonts in the font list | |||
</li> | |||
<li> | |||
more pdf text handling could be implemented | |||
It could draw the string using the attributed character iterator | |||
to handle tspans and other simple changes of text. | |||
</li> | |||
<li> | |||
JPEG images are not inserted directly into the pdf document | |||
This area has not been implemented yet since the appropriate | |||
method in batik is static | |||
</li> | |||
<li> | |||
Uniform transparency for images and other svg elements that are converted | |||
into a raster graphic are not drawn properly in PDF. The image is opaque. | |||
</li> | |||
</ul> | |||
</p> | |||
</section> | |||
<section> | |||
<title>Developer Notes</title> | |||
<p> | |||
For most output formats in FOP the SVG is simply drawn into | |||
an image with Batik. | |||
For PDF there are a set of classes to handle drawing the | |||
<link href="http://xml.apache.org/batik/architecture.html">GVT (Graphic Vector Toolkit)</link> | |||
into PDF markup. | |||
</p> | |||
<section> | |||
<title>Classes</title> | |||
<p> | |||
These are the relevant classes, found in the package org.apache.fop.svg : | |||
</p> | |||
<p> | |||
<ul> | |||
<li><em>PDFGraphics2D</em> | |||
<br/> | |||
used for drawing onto a Graphics2D into an existing pdf document, used | |||
internally to draw the svg. | |||
</li> | |||
<li><em>PDFDocumentGraphics2D</em> | |||
<br/> | |||
used to create a pdf document and inherits from PDFGraphics2D to do the | |||
rest of the drawing. Used by the transcoder to create a standalone pdf | |||
document from an svg. Can be used independantly the same as any Graphics2D. | |||
</li> | |||
<li><em>PDFTranscoder</em> | |||
<br/> | |||
used by Batik to transcode an svg document into a standalone pdf, via | |||
PDFDocumentGraphics2D. | |||
</li> | |||
</ul> | |||
</p> | |||
</section> | |||
<section> | |||
<title>Ideas</title> | |||
<p> | |||
Batik can convert ttf to svg font. | |||
This svg font could be converted into a pdf stroked font | |||
(type 3 font). | |||
</p> | |||
</section> | |||
</section> | |||
</body> | |||
</document> |
@@ -0,0 +1,41 @@ | |||
<?xml version="1.0" encoding="iso-8859-1"?> | |||
<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<g> | |||
<text x="20" y="20" style="font-size:18">Images in SVG</text> | |||
<text x="20" y="35" style="font-size:12">Jpeg</text> | |||
<image x="30" y="55" width="100" height="80" xlink:href="logo.jpg"/> | |||
</g> | |||
<text x="20" y="160" style="font-size:12">Effect or Bitmap</text> | |||
<g> | |||
<defs> | |||
<filter id="Turb1" filterUnits="objectBoundingBox" | |||
x="0%" y="0%" width="100%" height="100%"> | |||
<feTurbulence type="fractalNoise" baseFrequency="0.1" numOctaves="1"/> | |||
</filter> | |||
<filter id="Turb2" filterUnits="objectBoundingBox" | |||
x="0%" y="0%" width="100%" height="100%"> | |||
<feTurbulence type="fractalNoise" baseFrequency="0.15" numOctaves="1"/> | |||
</filter> | |||
</defs> | |||
<rect x="25" y="165" width="100" height="75" style="filter:url(#Turb1)" /> | |||
<text x="20" y="255" style="font-size:12">Transparency</text> | |||
<rect x="20" y="260" width="40" height="35" style="fill:blue" /> | |||
<text x="60" y="305" style="font-size:20;font-weight:bold">SEE</text> | |||
<rect x="25" y="265" width="100" height="75" style="filter:url(#Turb2)" /> | |||
<text x="200" y="35" style="font-size:12">Scaled</text> | |||
<g transform="scale(4)"> | |||
<rect x="55" y="15" width="25" height="18.75" style="filter:url(#Turb1)" /> | |||
</g> | |||
</g> | |||
</svg> | |||
@@ -0,0 +1,30 @@ | |||
<?xml version="1.0" encoding="iso-8859-1"?> | |||
<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<g> | |||
<a xlink:href="#svgView(viewBox(110,110,80,80))"> | |||
<rect x="10" y="10" width="80" height="80" style="fill:darkred;stroke:black;stroke-width:3"/> | |||
<text x="15" y="60" style="font-size:18;fill:green">GREEN</text> | |||
</a> | |||
<a xlink:href="http://xml.apache.org/fop/"> | |||
<rect x="110" y="10" width="80" height="80" style="fill:lightblue;stroke:black;stroke-width:3"/> | |||
<text x="130" y="60" style="font-size:18;fill:blue">FOP</text> | |||
</a> | |||
<a xlink:href="images.svg#svgView(viewBox(0,0,200,200))"> | |||
<rect x="10" y="110" width="80" height="80" style="fill:yellow;stroke:black;stroke-width:3"/> | |||
<text x="20" y="150" style="font-size:14;fill:purple">Another</text> | |||
<text x="35" y="165" style="font-size:14;fill:purple">file</text> | |||
</a> | |||
<a xlink:href="#svgView(viewBox(10,10,80,80))"> | |||
<rect x="110" y="110" width="80" height="80" style="fill:darkgreen;stroke:black;stroke-width:3"/> | |||
<text x="130" y="160" style="font-size:18;fill:red">RED</text> | |||
</a> | |||
</g> | |||
</svg> | |||
@@ -0,0 +1,83 @@ | |||
<?xml version="1.0" encoding="iso-8859-1"?> | |||
<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<g> | |||
<text x="20" y="20" style="font-size:18">Paints - Patterns & Gradients</text> | |||
<text x="10" y="35" style="font-size:12">Gradient</text> | |||
<defs> | |||
<linearGradient id="grad1" x1="0" y1="0" x2="1" y2="0"> | |||
<stop offset="0" style="stop-color:crimson" /> | |||
<stop offset="1" style="stop-color:gold" /> | |||
</linearGradient> | |||
<linearGradient id="grad2" x1="0" y1="0" x2="0" y2="1"> | |||
<stop offset="0" style="stop-color:crimson" /> | |||
<stop offset="0.4" style="stop-color:purple" /> | |||
<stop offset="1" style="stop-color:gold" /> | |||
</linearGradient> | |||
<linearGradient id="grad3" x1="0" y1="0" x2="1" y2="1"> | |||
<stop offset="0" style="stop-color:crimson" /> | |||
<stop offset="0.7" style="stop-color:blue" /> | |||
<stop offset="1" style="stop-color:gold" /> | |||
</linearGradient> | |||
<radialGradient id="rad" | |||
fx="20%" fy="30%" rx="10%" ry="30%" r="40%"> | |||
<stop offset="0" stop-color="gold" /> | |||
<stop offset="1" stop-color="green" stop-opacity="0.4"/> | |||
</radialGradient> | |||
</defs> | |||
<rect x="15" y="40" width="100" height="75" style="fill:url(#grad1)" /> | |||
<rect x="15" y="117.5" width="100" height="75" style="fill:url(#grad2)" /> | |||
<rect x="15" y="195" width="100" height="75" style="fill:url(#grad3)" /> | |||
<rect x="15" y="275" width="100" height="75" style="fill:url(#rad)" /> | |||
<text x="120" y="35" style="font-size:12">Pattern</text> | |||
<defs> | |||
<pattern id="pat1" x="0" y="0" width=".75" height="50%"> | |||
<circle cx="10" cy="10" r="10" style="fill:red" /> | |||
<rect x="10" y="10" width="15" height="15" style="fill:green"/> | |||
</pattern> | |||
<pattern id="pat2" x="0" y="0" width=".2" height="50%"> | |||
<circle cx="10" cy="10" r="10" style="fill:red" /> | |||
<rect x="10" y="10" width="15" height="15" style="fill:green"/> | |||
</pattern> | |||
<pattern id="pat3" x="0" y="0" width=".3" height="50%" patternTransform="matrix(1, 0.3, -0.5, 1, 5, 10)"> | |||
<circle cx="10" cy="10" r="10" style="fill:red" /> | |||
<rect x="10" y="10" width="15" height="15" style="fill:green"/> | |||
<text x="5" y="10" style="font-size:10">Patt</text> | |||
</pattern> | |||
<pattern id="see" x="0" y="0" width="25" height="25" patternUnits="userSpaceOnUse"> | |||
<circle cx="10" cy="10" r="10" style="fill:red" /> | |||
<rect x="10" y="10" width="15" height="15" style="fill:green;fill-opacity:0.5"/> | |||
</pattern> | |||
</defs> | |||
<rect x="125" y="40" width="100" height="75" style="fill:url(#pat1)" /> | |||
<rect x="125" y="117.5" width="100" height="75" style="fill:url(#pat2)" /> | |||
<rect x="125" y="195" width="100" height="75" style="fill:url(#pat3)" /> | |||
<rect x="125" y="275" width="100" height="75" style="fill:url(#see)" /> | |||
<defs> | |||
<pattern id="patgrad1" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse"> | |||
<circle cx="10" cy="10" r="10" style="fill:url(#grad1)" /> | |||
</pattern> | |||
<pattern id="patpat2" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse"> | |||
<circle cx="10" cy="10" r="10" style="fill:url(#pat2)" /> | |||
</pattern> | |||
<pattern id="patimage3" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse"> | |||
<image x="0" y="0" width="10" height="10" xlink:href="logo.jpg"/> | |||
</pattern> | |||
</defs> | |||
<text x="230" y="35" style="font-size:12">Pattern in Pattern</text> | |||
<rect x="235" y="40" width="100" height="75" style="fill:url(#patgrad1)" /> | |||
<rect x="235" y="117.5" width="100" height="75" style="fill:url(#patpat2)" /> | |||
<rect x="235" y="195" width="100" height="75" style="fill:url(#patimage3)" /> | |||
</g> | |||
</svg> | |||
@@ -0,0 +1,131 @@ | |||
<?xml version="1.0" encoding="iso-8859-1"?> | |||
<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<g> | |||
<text x="15" y="20" style="font-size:18">Various Text Elements</text> | |||
<text x="15" y="40" style="font-size:12;font-family:Helvetica">Normal Text in Helvetica,</text> | |||
<text x="152" y="40" style="font-size:12;font-family:Symbol">Symbol,</text> | |||
<text x="199" y="40" style="font-size:12;font-family:blah">Unknown,</text> | |||
<text x="257" y="40" style="font-size:12;font-family:Courier">Courier,</text> | |||
<text x="318" y="40" style="font-size:12;font-family:Arial">Arial</text> | |||
<g transform="translate(15,55) scale(0.25)"> | |||
<text x="0" y="0" style="font-size:40">Large Text (scaled)</text> | |||
</g> | |||
<text x="120" y="55" style="font-size:10">Normal Text (unscaled)</text> | |||
<text x="15" y="70" style="font-size:12.5">fractional Text</text> | |||
<text x="15" y="85" style="font-size:12;fill:red">Coloured Text</text> | |||
<text x="15" y="100" style="font-size:12;fill:none;stroke:red;stroke-width:0.4">Stroked Text</text> | |||
<text x="15" y="115" style="font-size:12;fill:blue;stroke:red;stroke-width:0.4">Stroked/Filled Text</text> | |||
<text x="15" y="130" style="font-size:12" text-decoration="overline">Overline Text</text> | |||
<text x="15" y="145" style="font-size:12" text-decoration="underline">Underline Text</text> | |||
<text x="15" y="160" style="font-size:12" text-decoration="line-through">Strikethrough Text</text> | |||
<text x="15" y="185" style="font-size:12">Text <tspan fill="blue" dy="-10">with</tspan> <tspan fill="green" dy="20">tspan</tspan></text> | |||
<defs> | |||
<path id="Path2" style="fill:none; stroke:blue;" transform="scale(0.15,0.15)" | |||
d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/> | |||
<path id="Path1" style="fill:none; stroke:blue;" transform="scale(0.30,0.50)" | |||
d="M 100 100 C100 0 400 00 400 100"/> | |||
</defs> | |||
<text transform="translate(20, 220)" font-size="15"> | |||
<textPath xlink:href="#Path2"><tspan baseline-shift="super" fill="green">super</tspan> and <tspan baseline-shift="sub" fill="red">sub</tspan>scripts</textPath> | |||
</text> | |||
<g transform="translate(150, 200)" style="font-weight:bold" id="fopdiamond"> | |||
<text transform="matrix(-0.34202 -0.93969 0.93969 -0.34202 47 45)">FOP</text> | |||
<text transform="matrix(0.34202 0.93969 -0.93969 0.34202 44 7)">FOP</text> | |||
<text transform="matrix(-0.34202 0.93969 -0.93969 -0.34202 52 23)">FOP</text> | |||
<text transform="matrix(0.34202 -0.93969 0.93969 0.34202 38 28)">FOP</text> | |||
</g> | |||
<g> | |||
<filter id="blur" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="-20%" y="-20%" width="120%" height="120%" > | |||
<feGaussianBlur stdDeviation="2 2" x="-10%" y="-10%" width="120%" height="120%" /> | |||
</filter> | |||
<text x="15" y="290" style="font-size:16;filter:url(#blur)">Filtered Text</text> | |||
</g> | |||
<g> | |||
<font horiz-adv-x="150" id="Batik"> | |||
<font-face | |||
font-family="FOPFont" | |||
units-per-em="240" | |||
ascent="190" | |||
descent="50" | |||
alphabetic="0"/> | |||
<missing-glyph horiz-adv-x="150" d="M20 0 V240 H100 V0 z"/> | |||
<glyph unicode=" " glyph-name=" " horiz-adv-x="100"/> | |||
<glyph unicode="F" glyph-name="F" horiz-adv-x="190"> | |||
<g transform="scale(1.5, -1.5) translate(0, -130)"> | |||
<g style="stroke:black;stroke-width:8"> | |||
<line x1="5" y1="20" x2="125" y2="20"/> | |||
<line x1="5" y1="40" x2="40" y2="40"/> | |||
<line x1="5" y1="60" x2="100" y2="60"/> | |||
<line x1="5" y1="85" x2="40" y2="85"/> | |||
<line x1="5" y1="110" x2="40" y2="110"/> | |||
</g> | |||
</g> | |||
</glyph> | |||
<glyph unicode="O" glyph-name="o" horiz-adv-x="185"> | |||
<g transform="scale(1.5, -1.5) translate(0, -130)"> | |||
<g style="stroke:black;stroke-width:8"> | |||
<line x1="50" y1="30" x2="80" y2="30"/> | |||
<line x1="30" y1="45" x2="100" y2="45"/> | |||
<line x1="20" y1="60" x2="110" y2="60"/> | |||
<line x1="30" y1="80" x2="100" y2="80"/> | |||
<line x1="50" y1="100" x2="80" y2="100"/> | |||
</g> | |||
</g> | |||
</glyph> | |||
<glyph unicode="P" glyph-name="p" horiz-adv-x="210"> | |||
<g transform="scale(1.5, -1.5) translate(0, -130)"> | |||
<g style="stroke:black;stroke-width:8"> | |||
<line x1="5" y1="20" x2="110" y2="20"/> | |||
<line x1="5" y1="40" x2="40" y2="40"/> | |||
<line x1="90" y1="40" x2="120" y2="40"/> | |||
<line x1="5" y1="60" x2="105" y2="60"/> | |||
<line x1="5" y1="85" x2="40" y2="85"/> | |||
<line x1="5" y1="110" x2="40" y2="110"/> | |||
</g> | |||
</g> | |||
</glyph> | |||
<hkern g1="F" g2="O" k="5"/> | |||
<hkern g1="O" g2="P" k="4"/> | |||
</font> | |||
<text x="15" y="310" font-family="FOPFont" font-size="12">FOP in FOPfont</text> | |||
</g> | |||
<text x="130" y="80" writing-mode="tb" font-size="12">vertical</text> | |||
<text x="140" y="80" writing-mode="tb" glyph-orientation-vertical="0deg" font-size="12">vertical</text> | |||
<text x="150" y="80" glyph-orientation-horizontal="90deg" font-size="12">orientated text</text> | |||
<text x="150" y="95" font-stretch="narrower" font-size="12">stretched font</text> | |||
<text x="150" y="110" letter-spacing="5" font-size="12">spaced letters</text> | |||
<text x="150" y="125" word-spacing="3pt" font-size="12">spaced words</text> | |||
<!-- empty element --> | |||
<text/> | |||
</g> | |||
</svg> | |||
@@ -0,0 +1,48 @@ | |||
<?xml version="1.0" encoding="iso-8859-1"?> | |||
<svg width="400" height="400" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<g> | |||
<text x="20" y="20" style="font-size:18">Transparency in SVG (to PDF)</text> | |||
<text x="20" y="35" style="font-size:12">Shapes</text> | |||
<rect x="30" y="55" width="100" height="80" style="fill:green;stroke:blue;stroke-width:3;fill-opacity:0.5;stroke-opacity:0.6"/> | |||
<rect x="80" y="95" width="100" height="80" style="fill:red;stroke:yellow;stroke-width:3;fill-opacity:0.5"/> | |||
</g> | |||
<g> | |||
<defs> | |||
<filter id="Turb" filterUnits="objectBoundingBox" | |||
x="0%" y="0%" width="100%" height="100%"> | |||
<feTurbulence type="fractalNoise" baseFrequency="0.1" numOctaves="1"/> | |||
</filter> | |||
</defs> | |||
<text x="20" y="205" style="font-size:12">Image</text> | |||
<rect x="20" y="210" width="40" height="35" style="fill:blue" /> | |||
<text x="60" y="255" style="font-size:20;font-weight:bold">SEE</text> | |||
<rect x="25" y="215" width="100" height="75" style="filter:url(#Turb)" /> | |||
</g> | |||
<text x="220" y="35" style="font-size:12">Text</text> | |||
<rect x="240" y="55" width="130" height="50" style="fill:blue"/> | |||
<text x="280" y="75" style="font-size:20;font-weight:bold;fill-opacity:0.6;fill:green">SEE</text> | |||
<text x="250" y="95" style="font-size:20;font-weight:bold;fill-opacity:0.4;fill:orange;stroke:red">THROUGH</text> | |||
<text x="220" y="205" style="font-size:12">Uniform Image Transparency</text> | |||
<defs> | |||
<filter id="matrixGreen" filterUnits="objectBoundingBox" | |||
x="0%" y="0%" width="100%" height="100%"> | |||
<feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2" stitchTiles="noStitch" seed="0" result="turb"/> | |||
<feColorMatrix type="matrix" values="0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1" /> | |||
</filter> | |||
</defs> | |||
<rect x="240" y="225" width="100" height="75" style="opacity:0.4;filter:url(#matrixGreen)" /> | |||
</svg> | |||
@@ -0,0 +1,14 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> | |||
<document> | |||
<header> | |||
<title>FOP</title> | |||
</header> | |||
<body> | |||
<section> | |||
<title>Introduction</title> | |||
<p> | |||
</p> | |||
</section> | |||
</body> | |||
</document> |
@@ -0,0 +1,12 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE tabs PUBLIC "-//APACHE//DTD Cocoon Documentation Tab V1.0//EN" "tab-cocoon-v10.dtd"> | |||
<tabs software="MyProj" | |||
title="MyProj" | |||
copyright="Foo" | |||
xmlns:xlink="http://www.w3.org/1999/xlink"> | |||
<tab label="Home" dir=""/> | |||
<tab label="dev" dir="dev/"/> | |||
</tabs> |
@@ -0,0 +1,527 @@ | |||
<?xml version="1.0"?> | |||
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0"> | |||
<!-- =========================== Components ================================ --> | |||
<map:components> | |||
<map:generators default="file"> | |||
<map:generator name="file" src="org.apache.cocoon.generation.FileGenerator" label="content"/> | |||
<map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator" label="content"/> | |||
<map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator" label="content"/> | |||
<map:generator name="libre" src="org.outerj.yer.use.cocoon.HierarchyGenerator" label="content"/> | |||
<map:generator name="nekodtd" src="org.apache.forrest.components.generator.XNIConfigurableFileGenerator" label="content"/> | |||
<!-- FIXME: Change this once better view handling is implemented --> | |||
<map:generator name="file-nolabel" src="org.apache.cocoon.generation.FileGenerator"/> | |||
</map:generators> | |||
<map:transformers default="xslt"> | |||
<!-- | |||
<map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer"> | |||
<use-request-parameters>false</use-request-parameters> | |||
<use-browser-capabilities-db>false</use-browser-capabilities-db> | |||
</map:transformer> | |||
--> | |||
<map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer" | |||
logger="sitemap.transformer.xsltc" | |||
pool-max="32" pool-min="8" pool-grow="2"> | |||
<use-request-parameters>false</use-request-parameters> | |||
<use-browser-capabilities-db>false</use-browser-capabilities-db> | |||
<use-deli>false</use-deli> | |||
<!-- transformer-factory>com.icl.saxon.TransformerFactoryImpl</transformer-factory --> | |||
<!-- 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:serializers default="html"> | |||
<map:serializer name="html" mime-type="text/html" src="org.apache.cocoon.serialization.HTMLSerializer"> | |||
<doctype-public>-//W3C//DTD HTML 4.01 Transitional//EN</doctype-public> | |||
<encoding>ISO-8859-1</encoding> | |||
</map:serializer> | |||
<map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer"> | |||
<encoding>ISO-8859-1</encoding> | |||
</map:serializer> | |||
<map:serializer name="fo2pdf" | |||
src="org.apache.cocoon.serialization.FOPSerializer" | |||
mime-type="application/pdf"/> | |||
<map:serializer name="links" src="org.apache.cocoon.serialization.LinkSerializer"> | |||
<encoding>ISO-8859-1</encoding> | |||
</map:serializer> | |||
<map:serializer name="svg2jpeg" mime-type="image/jpeg" src="org.apache.cocoon.serialization.SVGSerializer"> | |||
<parameter name="quality" type="float" value="1.0"/> | |||
</map:serializer> | |||
<map:serializer name="svg2png" mime-type="image/png" src="org.apache.cocoon.serialization.SVGSerializer"/> | |||
</map:serializers> | |||
<map:matchers default="wildcard"> | |||
<map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/> | |||
</map:matchers> | |||
<!-- | |||
<map:selectors default="skin-parameter"> | |||
<map:selector name="request-parameter" logger="sitemap.selector.request-parameter" | |||
src="org.apache.cocoon.selection.RequestParameterSelector"> | |||
<parameter-name>skin</parameter-name> | |||
</map:selector> | |||
<map:selector name="style-parameter" logger="sitemap.selector.request-parameter" | |||
src="org.apache.cocoon.selection.RequestParameterSelector"> | |||
<parameter-name>style</parameter-name> | |||
</map:selector> | |||
</map:selectors> | |||
--> | |||
<!--map:actions> | |||
<map:action logger="sitemap.action.request" name="request" src="org.apache.cocoon.acting.RequestParamAction"/> | |||
</map:actions--> | |||
<!-- | |||
The different pipeline implementations | |||
--> | |||
<map:pipelines default="caching"> | |||
<map:pipeline name="caching" src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/> | |||
<map:pipeline name="noncaching" src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/> | |||
<!-- The following two can be used for profiling: | |||
<map:pipeline name="profile-caching" src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/> | |||
<map:pipeline name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/> | |||
--> | |||
</map:pipelines> | |||
</map:components> | |||
<!-- =========================== Views =================================== --> | |||
<map:views> | |||
<map:view name="content" from-label="content"> | |||
<map:serialize type="xml"/> | |||
</map:view> | |||
<map:view name="links" from-position="last"> | |||
<map:transform src="library/xslt/filterlinks.xsl"/> | |||
<map:serialize type="links"/> | |||
</map:view> | |||
</map:views> | |||
<map:resources> | |||
<map:resource name="skinit"> | |||
<map:transform src="skins/{defaults:skin}/xslt/html/{type}.xsl"> | |||
<map:parameter name="isfaq" value="{isfaq}"/> | |||
<map:parameter name="dir" value="{dir}"/> | |||
<map:parameter name="resource" value="{resource}"/> | |||
<!-- Can set an alternative project skinconfig here | |||
<map:parameter name="config-file" value="../../../../skinconf.xml"/> | |||
--> | |||
</map:transform> | |||
<map:serialize/> | |||
</map:resource> | |||
<map:resource name="book"> | |||
<map:generate src="content/xdocs/{../1}book.xml"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="book2menu"/> | |||
<map:parameter name="resource" value="{resource}.html"/> | |||
</map:call> | |||
</map:resource> | |||
<map:resource name="skin-read"> | |||
<map:read src="skins/{defaults:skin}/{path}" mime-type="{mime-type}"/> | |||
</map:resource> | |||
</map:resources> | |||
<!-- =========================== Pipelines ================================= --> | |||
<map:pipelines> | |||
<map:pipeline> | |||
<!-- ========================== FOP Additions ========================== --> | |||
<map:match pattern="*/svg/*.svg"> | |||
<map:read src="content/xdocs/{1}/svg/{2}.svg" mime-type="image/svg"/> | |||
</map:match> | |||
<map:match pattern="*/svg/*.png"> | |||
<map:generate src="content/xdocs/{1}/svg/{2}.svg"/> | |||
<map:serialize type="svg2png"/> | |||
</map:match> | |||
<!-- | |||
this matcher causes a problem?? | |||
<map:match pattern="*/svg/*.pdf"> | |||
<map:generate src="content/xdocs/{1}/svg/{2}.svg"/> | |||
<map:serialize type="svg2pdf"/> | |||
</map:match> | |||
--> | |||
<map:match pattern="*/fo/*.fo"> | |||
<map:read src="content/xdocs/{1}/fo/{2}.fo" mime-type="text/xml"/> | |||
</map:match> | |||
<map:match pattern="*/fo/*.fo.pdf"> | |||
<map:generate src="content/xdocs/{1}/fo/{2}.fo"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<!-- ======================= End FOP Additions ======================== --> | |||
<map:match pattern=""> | |||
<map:redirect-to uri="index.html"/> | |||
</map:match> | |||
<map:match pattern="apachestats"> | |||
<map:generate type="html" | |||
src="http://www.apache.org/~rubys/stats/xml.apache.org/"> | |||
<map:parameter name="xpath" | |||
value="/html/body//a[contains(@href,'.xml')]"/> | |||
</map:generate> | |||
<map:serialize type="xml"/> | |||
</map:match> | |||
<map:match pattern="**tab-**.xml"> | |||
<map:generate src="content/xdocs/tabs.xml"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="tab2menu"/> | |||
<map:parameter name="resource" value="{1}"/> | |||
<map:parameter name="dir" value="{1}/"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="**book-**/*.xml"> | |||
<map:call resource="book"> | |||
<map:parameter name="resource" value="{3}"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="**book-**.xml"> | |||
<map:call resource="book"> | |||
<map:parameter name="resource" value="{2}"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="body-todo.xml"> | |||
<map:generate type="file-nolabel" src="status.xml"/> | |||
<map:transform src="library/xslt/todo2document.xsl" label="content"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="todo"/> | |||
<map:parameter name="dir" value=""/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="body-changes.xml"> | |||
<map:generate type="file-nolabel" src="status.xml"/> | |||
<map:transform src="library/xslt/changes2document.xsl" label="content"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="changes"/> | |||
<map:parameter name="dir" value=""/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="body-faq.xml"> | |||
<map:generate type="file-nolabel" src="content/xdocs/faq.xml"/> | |||
<map:transform src="library/xslt/faq2document.xsl" label="content"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="faq"/> | |||
<map:parameter name="dir" value=""/> | |||
<map:parameter name="isfaq" value="true"/> | |||
</map:call> | |||
</map:match> | |||
<!-- Redirect requests for community/ (eg in the trail) to the home page --> | |||
<map:match pattern="community/index.html"> | |||
<map:redirect-to uri="../index.html"/> | |||
</map:match> | |||
<!-- index pages for contribution categories --> | |||
<map:match pattern="body-community/*/index.xml"> | |||
<map:generate src="content/xdocs/community/{1}/index.xml"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="{1}"/> | |||
<map:parameter name="dir" value="community/{1}/"/> | |||
</map:call> | |||
</map:match> | |||
<!-- no special transformation, yet, for revision pages --> | |||
<map:match pattern="body-community**revision-*.xml"> | |||
<map:generate src="content/xdocs/community{1}revision-{2}.xml"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="{1}"/> | |||
<map:parameter name="dir" value="community/{1}/"/> | |||
</map:call> | |||
</map:match> | |||
<!-- all contribution docs --> | |||
<map:match pattern="body-community/*/*/**.xml"> | |||
<map:aggregate element="all" > | |||
<map:part src="content/xdocs/community/{1}/{2}/{3}.xml"/> | |||
<map:part src="cocoon:/revisions-community/{1}/{2}/{3}" /> | |||
</map:aggregate> | |||
<map:transform src="library/xslt/{1}2document.xsl" label="content"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="{3}"/> | |||
<map:parameter name="dir" value="community/{1}/{2}/"/> | |||
</map:call> | |||
</map:match> | |||
<!-- revisions only implemented for community pages --> | |||
<map:match pattern="revisions-community/*/*/**"> | |||
<map:generate type="directory" src="content/xdocs/community/{1}/{2}"> | |||
<map:parameter name="dateFormat" value="yyyy-MM-dd hh:mm" /> | |||
</map:generate> | |||
<map:transform src="library/xslt/directory2revisions.xsl" label="content" > | |||
<map:parameter name="use-request-parameters" value="true"/> | |||
<map:parameter name="page" value="{3}"/> | |||
</map:transform> | |||
<map:serialize type="xml" /> | |||
</map:match> | |||
<!-- Any other howto directories get transformed, without revisions --> | |||
<map:match pattern="body-**howto/*.xml"> | |||
<map:generate src="content/xdocs/{1}howto/{2}.xml"/> | |||
<map:transform src="library/xslt/howto2document.xsl" label="content"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="{3}"/> | |||
<map:parameter name="dir" value="{1}howto/"/> | |||
</map:call> | |||
</map:match> | |||
<!-- Generate the "doclist" - list of all documentation | |||
The first match generates each book.xml and adds a new attribute "uri". | |||
The second match aggregates each book.xml into a doclist and | |||
then converts it to a document. | |||
--> | |||
<map:match pattern="doclist/content/xdocs/**book.xml"> | |||
<map:generate src="content/xdocs/{1}book.xml"/> | |||
<map:transform src="library/xslt/doclist.xsl"> | |||
<map:parameter name="uri" value="{1}"/> | |||
</map:transform> | |||
<map:serialize type="xml"/> | |||
</map:match> | |||
<map:match pattern="body-doclist.xml"> | |||
<map:aggregate element="doclist"> | |||
<map:part src="cocoon:/doclist/content/xdocs/book.xml"/> | |||
<map:part src="cocoon:/doclist/content/xdocs/community/howto/book.xml"/> | |||
</map:aggregate> | |||
<map:transform src="library/xslt/doclist2document.xsl"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="dir" value="community/{1}/{2}/"/> | |||
</map:call> | |||
</map:match> | |||
<!-- HTML DTD Documentation generation pipeline, makes use of NekoDTD tool --> | |||
<map:match pattern="body-**.dtdx.xml"> | |||
<map:generate type="nekodtd" src="resources/schema/dtd/{1}.dtd"> | |||
<map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" /> | |||
</map:generate> | |||
<map:transform src="library/xslt/dtdx2flat.xsl"/> | |||
<map:transform src="library/xslt/flat2document.xsl"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="isfaq" value="true"/> | |||
<map:parameter name="resource" value="{1}.dtdx"/> | |||
<map:parameter name="dir" value="{1}"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="body-**.xml"> | |||
<map:generate src="content/xdocs/{1}.xml"/> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="document2html"/> | |||
<map:parameter name="resource" value="{1}"/> | |||
<map:parameter name="dir" value="{1}"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="*.html"> | |||
<map:aggregate element="site"> | |||
<map:part src="cocoon:/book-{1}.xml"/> | |||
<map:part src="cocoon:/tab-{1}.xml"/> | |||
<map:part src="cocoon:/body-{1}.xml" label="content"/> | |||
</map:aggregate> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="site2xhtml"/> | |||
<map:parameter name="dir" value=""/> | |||
<map:parameter name="resource" value="{0}"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="**/*.html"> | |||
<map:aggregate element="site"> | |||
<map:part src="cocoon:/{1}/book-{1}/{2}.xml"/> | |||
<map:part src="cocoon:/{1}/tab-{1}/{2}.xml"/> | |||
<map:part src="cocoon:/body-{1}/{2}.xml" label="content"/> | |||
</map:aggregate> | |||
<map:call resource="skinit"> | |||
<map:parameter name="type" value="site2xhtml"/> | |||
<map:parameter name="dir" value="{1}/"/> | |||
<map:parameter name="resource" value="{0}"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="*.dtdx.pdf"> | |||
<map:generate type="nekodtd" src="resources/schema/dtd/{1}.dtd"> | |||
<map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" /> | |||
</map:generate> | |||
<map:transform src="library/xslt/dtdx2flat.xsl"/> | |||
<map:transform src="library/xslt/flat2document.xsl"/> | |||
<map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<map:match pattern="**/*.dtdx.pdf"> | |||
<map:generate type="nekodtd" src="resources/schema/dtd/{2}.dtd"> | |||
<map:parameter name="config-class" value="org.cyberneko.dtd.DTDConfiguration" /> | |||
</map:generate> | |||
<map:transform src="library/xslt/dtdx2flat.xsl"/> | |||
<map:transform src="library/xslt/flat2document.xsl"/> | |||
<map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<map:match pattern="changes.pdf"> | |||
<map:generate type="file-nolabel" src="status.xml"/> | |||
<map:transform src="library/xslt/changes2document.xsl" label="content"/> | |||
<map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<map:match pattern="todo.pdf"> | |||
<map:generate type="file-nolabel" src="status.xml"/> | |||
<map:transform src="library/xslt/todo2document.xsl" label="content"/> | |||
<map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<map:match pattern="faq.pdf"> | |||
<map:generate type="file-nolabel" src="content/xdocs/faq.xml"/> | |||
<map:transform src="library/xslt/faq2document.xsl" label="content"/> | |||
<map:transform src="skins/forrest-site/xslt/fo/document2fo.xsl"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<map:match pattern="*.pdf"> | |||
<map:generate src="content/xdocs/{1}.xml"/> | |||
<map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<map:match pattern="**/*.pdf"> | |||
<map:generate src="{1}/{2}.xml"/> | |||
<map:transform src="skins/{defaults:skin}/xslt/fo/document2fo.xsl"/> | |||
<map:serialize type="fo2pdf"/> | |||
</map:match> | |||
<!-- ================ Directory redirects =========================== --> | |||
<!-- Redirect any request for a directory to the directory's index.html file --> | |||
<map:match pattern="**/"> | |||
<map:redirect-to uri="{context:context}/{1}/index.html"/> | |||
</map:match> | |||
<!-- ================ Libre =========================== --> | |||
<map:match pattern="libre"> | |||
<map:generate type="libre" src="content/xdocs" > | |||
<map:parameter name="depth" value="-1" /> | |||
</map:generate> | |||
<map:serialize type="xml"/> | |||
</map:match> | |||
<!-- ================ Static =========================== --> | |||
<map:match pattern="skin/**.js"> | |||
<map:call resource="skin-read"> | |||
<map:parameter name="path" value="scripts/{1}.js"/> | |||
<map:parameter name="mime-type" value="application/javascript"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="**/skin/**.js"> | |||
<map:call resource="skin-read"> | |||
<map:parameter name="path" value="scripts/{2}.js"/> | |||
<map:parameter name="mime-type" value="application/javascript"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="**.js"> | |||
<map:read src="resources/scripts/{1}.js" mime-type="application/javascript"/> | |||
</map:match> | |||
<map:match pattern="skin/**.css"> | |||
<map:call resource="skin-read"> | |||
<map:parameter name="path" value="css/{1}.css"/> | |||
<map:parameter name="mime-type" value="text/css"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="**/skin/**.css"> | |||
<map:call resource="skin-read"> | |||
<map:parameter name="path" value="css/{2}.css"/> | |||
<map:parameter name="mime-type" value="text/css"/> | |||
</map:call> | |||
</map:match> | |||
<map:match pattern="**.css"> | |||
<map:read src="resources/css/{1}.css" mime-type="text/css"/> | |||
</map:match> | |||
<map:match pattern="skin/images/**.*"> | |||
<map:call resource="skin-read"> | |||
<map:parameter name="path" value="images/{1}.{2}"/> | |||
<map:parameter name="mime-type" value="image/{2}"/> | |||
</map:call> | |||
</map:match> | |||
<!-- WARNING: You are strongly advised not to make use of this target, as it | |||
leads to browsers having to cache multiple copies of the images, one per | |||
directory. See the forrest-site skin XSLTs for an example of how to make | |||
all image references use the 'skin/images/**.*' rule above --> | |||
<map:match pattern="**/skin/images/**.*"> | |||
<map:call resource="skin-read"> | |||
<map:parameter name="path" value="images/{2}.{3}"/> | |||
<map:parameter name="mime-type" value="image/{3}"/> | |||
</map:call> | |||
</map:match> | |||
<!-- DS: handles images local to a contributor directory --> | |||
<map:match pattern="**my-images/**.*"> | |||
<map:read src="content/xdocs/{1}my-images/{2}.{3}" mime-type="image/{3}"/> | |||
</map:match> | |||
<map:match pattern="images/**.*"> | |||
<map:read src="resources/images/{1}.{2}" mime-type="image/{2}"/> | |||
</map:match> | |||
<!-- WARNING: See above: this target should not be made use of --> | |||
<map:match pattern="**/images/**.*"> | |||
<map:read src="resources/images/{2}.{3}" mime-type="image/{3}"/> | |||
</map:match> | |||
<map:match pattern="**favicon.ico"> | |||
<map:call resource="skin-read"> | |||
<map:parameter name="path" value="images/favicon.ico"/> | |||
<map:parameter name="mime-type" value="image/x-ico"/> | |||
</map:call> | |||
</map:match> | |||
</map:pipeline> | |||
</map:pipelines> | |||
</map:sitemap> | |||
@@ -0,0 +1,93 @@ | |||
<?xml version="1.0"?> | |||
<!-- | |||
Skin configuration file. This file contains details of your project, which will | |||
be used to configure the chosen Forrest skin. | |||
jefft@apache.org | |||
--> | |||
<!DOCTYPE skinconfig [ | |||
<!ENTITY % links.att 'name CDATA #REQUIRED'> | |||
<!ENTITY % link.att 'name CDATA #REQUIRED href CDATA #REQUIRED'> | |||
<!ELEMENT skinconfig (disable-search?, searchsite-domain?, searchsite-name?, project-name, project-url, project-logo, group-name?, group-url?, group-logo?, host-logo?, year?, vendor?, trail?, credits?)*> | |||
<!ELEMENT credits (credit*)> | |||
<!ELEMENT credit (name, url, image, width?, height?)> | |||
<!ELEMENT disable-search (#PCDATA)> | |||
<!ELEMENT searchsite-domain (#PCDATA)> | |||
<!ELEMENT searchsite-name (#PCDATA)> | |||
<!ELEMENT project-name (#PCDATA)> | |||
<!ELEMENT project-url (#PCDATA)> | |||
<!ELEMENT project-logo (#PCDATA)> | |||
<!ELEMENT group-name (#PCDATA)> | |||
<!ELEMENT group-url (#PCDATA)> | |||
<!ELEMENT group-logo (#PCDATA)> | |||
<!ELEMENT host-logo (#PCDATA)> | |||
<!ELEMENT year (#PCDATA)> | |||
<!ELEMENT vendor (#PCDATA)> | |||
<!ELEMENT trail (link1, link2, link3)> | |||
<!ELEMENT link1 EMPTY> | |||
<!-- Seems we can't use param entity refs until this is DTDified --> | |||
<!ATTLIST link1 name CDATA #REQUIRED href CDATA #IMPLIED> | |||
<!ELEMENT link2 EMPTY> | |||
<!ATTLIST link2 name CDATA #REQUIRED href CDATA #IMPLIED> | |||
<!ELEMENT link3 EMPTY> | |||
<!ATTLIST link3 name CDATA #REQUIRED href CDATA #IMPLIED> | |||
<!ELEMENT name (#PCDATA)> | |||
<!ELEMENT url (#PCDATA)> | |||
<!ELEMENT image (#PCDATA)> | |||
<!ELEMENT width (#PCDATA)> | |||
<!ELEMENT height (#PCDATA)> | |||
]> | |||
<skinconfig> | |||
<!-- 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> | |||
<project-name>FOP</project-name> | |||
<project-url>http://xml.apache.org/fop/</project-url> | |||
<project-logo>images/logo.jpg</project-logo> | |||
<group-name>Apache XML</group-name> | |||
<group-url>http://xml.apache.org/</group-url> | |||
<group-logo>images/group-logo.gif</group-logo> | |||
<!-- Eg, a sourceforge logo. forrest-site renders it to the bottom-left corner --> | |||
<host-logo></host-logo> | |||
<!-- The following used to construct a copyright statement --> | |||
<year>1999-2002</year> | |||
<vendor>The Apache Software Foundation.</vendor> | |||
<!-- Some skins use this to form a 'breadcrumb trail' of links. If you don't | |||
want these, set the attributes to blank. The DTD purposefully requires them. | |||
--> | |||
<trail> | |||
<link1 name="apache" href="http://www.apache.org/"/> | |||
<link2 name="xml.apache" href="http://xml.apache.org/"/> | |||
<link3 name="" href=""/> | |||
</trail> | |||
<!-- Credits are typically rendered as a set of small clickable images in the | |||
page footer --> | |||
<credits> | |||
<credit> | |||
<name>Built with Cocoon</name> | |||
<url>http://xml.apache.org/cocoon/</url> | |||
<image>skin/images/built-with-cocoon.gif</image> | |||
<width>88</width> | |||
<height>31</height> | |||
</credit> | |||
<credit> | |||
<name>Krysalis Centipede</name> | |||
<url>http://www.krysalis.org/centipede/</url> | |||
<image>skin/images/centipede-logo-small.gif</image> | |||
<width>138</width> | |||
<height>31</height> | |||
</credit> | |||
</credits> | |||
</skinconfig> |