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>

Attachment: 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>

Reply via email to