Hi list, Last week I asked whether anybody had done something like notes at the border of the text, but got not replies. Maybe I didn't express myself clearly enough? Anyway, here it is. I have attached an example PDF and the corresponding XML and XSLT. I use a format of <xsl:param name="page.width">240mm</xsl:param> <xsl:param name="page.height">190mm</xsl:param> <xsl:param name="page.margin.outer">4cm</xsl:param> <xsl:param name="page.margin.inner">2cm</xsl:param> for my texts, so that I have a lot of space to use and currently the values for the bordernotes are hardcoded.
This might not work with all texts. I encountered "nulls" from FOP when I had very long paragraphs and a lot of footnotes. It seems that at a certain point FOP is no more able to calculate the wrapping of the text. Stephan
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!--!DOCTYPE book SYSTEM "file:///C:/x/saxon/dtd/docbookx.dtd">
<?xml-stylesheet type="text/xsl" href="C:/x/docbookxsl/old/html/docbook.xsl" ?-->
<!DOCTYPE book SYSTEM "file:///C:/x/docbookxsl/docbook-xsl-1.54.1/docbookx.dtd">
<?xml-stylesheet type="text/xsl" href="file:///C:/x/docbookxsl/docbook-xsl-1.57.0/html/docbook.xsl" ?>
<book lang="en">
<title>Micropayment</title>
<chapter id="chap_Print">
<title>Print On Demand</title>
<section id="sec_PrintDefin">
<title>Definition</title>
<para>
<note role="border"><para>Definition SAX </para></note>
<emphasis>SAX</emphasis> (= <quote>Simple API for XML</quote>) war die erste allgemein verf�gbare XML-API f�r Java.
Bis heute stellt SAX quasi das Fundament f�r alle weiteren Entwicklungen in Bezug auf Java-XML-APIs dar.
Besonderes Merkmal von SAX ist dabei sein <quote>stream</quote> - basierter Ansatz: Genau wie eine normale Textdatei
in Java mittels eines Input - Streams eingelesen wird, so wird auch eine XML - Datei dem SAX - Parser, der die SAX - API
konkret implementiert, zugef�hrt. Demzufolge wird das XML - Dokument <quote>St�ck f�r St�ck</quote> eingelesen. Werden bestimmte
XML - Elemente erkannt, werden Ereignisse ausgel�st. Vom Entwickler zu implementierende Ereignis - Handler reagieren dann entsprechend
auf diese Ereignisse. Auf diese Weise kann die gesamte Struktur und die Daten eines XML - Dokumentes ausgewertet werden.
</para>
<para>
<note role="border"><para>Sequentieller Zugriff</para></note>
Nachteilig bei diesem Ansatz ist dabei die Tatsache, dass eine
Navigation innerhalb des Dokumentes nicht m�glich ist. Die Datei
wird ja einfach von Anfang bis Ende eingelesen. Ist eine Stelle
im Dokument <quote>�berlesen</quote> worden, so kann auf sie nicht
mehr im selben Durchgang ohne weiteres zugegriffen werden, wenn sie
noch einmal gebraucht werden sollte. Es sei denn, die vom
Entwickler implementierten Ereignis - Handler w�rden gleichzeitig
Struktur und Daten des Dokumentes im Speicher abbilden, und so
w�hrend des Abarbeitens des Dokumentes quasi eine Arbeitsspeicher -
Kopie anlegen, auf die dann auch noch nachtr�glich zugegriffen
werden kann. Dies ist jedoch relativ aufwendig.
</para>
<para>
<note role="border"><para>Vorteile SAX </para></note>
Trotz dieses recht schwerwiegenden Nachteils ist SAX bis heute noch in
Gebrauch. Daf�r gibt es vor allem einen Grund:
Geschwindigkeit. SAX - Parser sind im allgemeinen sehr schnell.
Deswegen ist SAX f�r die Problemstellungen zu pr�ferieren,
wo Navigation innerhalb des XML - Dokumentes weniger wichtig ist,
als vielmehr eine hohe Geschwindigkeit.
</para>
<para>
<note role="border"><para>Vorteile DOM </para></note>
<emphasis>DOM</emphasis> (= <quote>Document Object Model</quote>) verfolgt
einen g�nzlich anderen Ansatz. Nach erfolgtem Einlesen
eines XML - Dokumentes steht dieses als DOM - Baum im Speicher zur
Verf�gung. Innerhalb des DOM - Baumes kann dann beliebig
navigiert und sowohl auf Daten als auch die Struktur Einfluss genommen
werden.
</para>
<para>
<note role="border"><para>Geschwindigkeit DOM vs. SAX </para></note>
Nachteilig hierbei ist die geringere Geschwindigkeit: Da erst ein
kompletter Lesedurchgang erfolgen und dabei ein DOM - Baum
im Speicher erzeugt werden muss, kann DOM in Bezug auf die Geschwindigkeit
nicht mit SAX konkurrieren. Auch ist DOM durch
durch die Abbildung des Dokumentes im Speicher nat�rlich auch speicherintensiver.
</para>
</section>
</chapter>
</book>
StyleTest.pdf
Description: Adobe PDF document
<?xml version="1.0" encoding="iso-8859-1"?> <!-- The layout of the header of the pages. For standard pages, this is a table with a single row and 3 columns. --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="#default" > <xsl:template match="note[@role='border']" mode="border"> <fo:block border="0pt dotted gray" background-color="#fbfafa" font-style="italic" font-size="9pt" > <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="note[@role='border']"> <!-- Don't do anything here. Otherwise the footnote would be displayed twice !--> </xsl:template> <xsl:template match="section/para"> <fo:table table-layout="fixed" width="20cm" border="0pt solid gray" text-align="left" > <fo:table-column column-number="1" column-width="proportional-column-width(7)"/> <fo:table-column column-number="2" column-width="proportional-column-width(3)"/> <fo:table-body> <fo:table-row> <fo:table-cell border="0pt solid red"> <!-- Need to explicitly set the formating, content in tables is left oriented by default.--> <fo:block xsl:use-attribute-sets="normal.para.spacing" text-align="justify"> <xsl:call-template name="anchor"/> <xsl:apply-templates/> </fo:block> </fo:table-cell> <fo:table-cell padding="8mm"> <xsl:apply-templates select="note[@role='border']" mode="border"/> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </xsl:template> </xsl:stylesheet>
