You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by bd...@apache.org on 2010/09/03 04:29:36 UTC

svn commit: r992179 - /forrest/trunk/site-author/content/xdocs/docs_0_90/sitemap-ref.xml

Author: bdube
Date: Fri Sep  3 02:29:36 2010
New Revision: 992179

URL: http://svn.apache.org/viewvc?rev=992179&view=rev
Log:
Issue: FOR-922
Update PDF sitemap fragments

Modified:
    forrest/trunk/site-author/content/xdocs/docs_0_90/sitemap-ref.xml

Modified: forrest/trunk/site-author/content/xdocs/docs_0_90/sitemap-ref.xml
URL: http://svn.apache.org/viewvc/forrest/trunk/site-author/content/xdocs/docs_0_90/sitemap-ref.xml?rev=992179&r1=992178&r2=992179&view=diff
==============================================================================
--- forrest/trunk/site-author/content/xdocs/docs_0_90/sitemap-ref.xml (original)
+++ forrest/trunk/site-author/content/xdocs/docs_0_90/sitemap-ref.xml Fri Sep  3 02:29:36 2010
@@ -342,36 +342,100 @@ FORMATS    doc-v11  doc-v13  doc-v20 ...
         <p>
           Easiest case first; PDFs don't require menus or headers, so we can
           simply transform our intermediate format into XSL:FO, and from there
-          to PDF. This is done by the following matcher in
+          to PDF. This is done by the following matches in
           <code>output.xmap</code> from the pdf plugin ...
         </p>
         <source>
-          <![CDATA[
-          1   <map:match type="regexp" pattern="^(.*?)([^/]*).pdf$">
-          2     <map:generate src="cocoon:/{1}{2}.xml"/>
-          3     <map:transform type="xinclude"/>
-          4     <map:transform type="]]>&linkrewriter;<![CDATA[" src="cocoon://{1}linkmap-{2}.pdf"/>
-          5     <map:transform src="skins/{forrest:forrest.skin}/xslt/fo/document-to-fo.xsl">
-          6       <map:parameter name="ctxbasedir" value="{realpath:.}/"/>
-          7       <map:parameter name="xmlbasedir" value="content/xdocs/{1}"/>
-          8     </map:transform>
-          9     <map:serialize type="fo2pdf"/>
-          10  </map:match>
-          ]]>
+<![CDATA[
+        <!-- Match requests for XSL:FO documents -->
+        <map:match type="regexp" pattern="^(.*?)([^/]*).fo$">
+            <map:select type="exists">
+                <map:when test="{lm:project.{1}{2}.fo}">
+                    <map:generate src="{lm:project.{1}{2}.fo}"/>
+                </map:when>
+                <map:otherwise>
+                    <map:aggregate element="site">
+                        <map:part src="cocoon://module.properties.properties"/>
+                        <map:part src="cocoon://skinconf.xml"/>
+                        <map:part src="cocoon://{1}{2}.xml"/>
+                    </map:aggregate>
+                    <map:transform type="xinclude"/>
+                    <map:transform type="]]>&linkrewriter;<![CDATA[" src="cocoon://{1}linkmap-{2}.fo"/>
+                    <map:transform src="{lm:pdf.transform.document.fo}">
+                        <map:parameter name="imagesdir"  value="{properties:resources.images}/"/>
+                        <map:parameter name="xmlbasedir" value="{properties:content.xdocs}{1}"/>
+                        <map:parameter name="path"       value="{1}"/>
+                    </map:transform>
+                </map:otherwise>
+            </map:select>
+            <map:serialize type="xml"/>
+        </map:match>
+]]>
         </source>
+        <p>
+          This section of the pipeline matches requests for XSL:FO
+          documents by using a regular expression match to break the
+          request into directory (.*?) and filename ([^/]*) parts. If
+          the XSL:FO document exists in the project (the
+          <code>exists</code> selector), it is used; otherwise, the
+          XSL:FO is generated:
+        </p>
         <ol>
-          <li>The first line uses a matching regexp to break the URL into
-            directory <code>(.*?)</code> and filename
-            <code>([^/]*)</code> parts.</li>
-          <li>We then generate XML from a <link href="#source_pipelines">Source
-              pipeline</link>, with the URL <code>cocoon:/{1}{2}.xml</code></li>
-          <li>We then expand any XInclude statements..</li>
-          <li>and <link href="#linkrewriting_impl">rewrite links</link>..</li>
-          <li>and finally apply the document-to-fo.xsl stylesheet, to generate
-            XSL:FO XML.</li>
+          <li>
+            The properties input module, skinconf and the <link
+            href="#source_pipelines">source document</link> are
+            combined into an aggregate
+          </li>
+          <li>
+            XInclude elements are processed
+          </li>
+          <li>
+            Links are rewritten
+          </li>
+          <li>
+            The source as generated from the preceding steps is
+            transformed by the stylesheet with the locationmap hint
+            <code>pdf.transform.document.fo</code> and serialized as
+            the final XSL:FO document
+          </li>
         </ol>
+        <source>
+<![CDATA[
+        <!-- Match requests for PDF documents -->
+        <map:match type="regexp" pattern="^(.*?)([^/]*).pdf$">
+            <map:select type="exists">
+                <map:when test="{lm:project.{1}{2}.pdf}">
+                    <map:read src="{lm:project.{1}{2}.pdf}"/>
+                </map:when>
+                <map:when test="{lm:project.{1}{2}.fo}">
+                    <map:generate src="{lm:project.{1}{2}.fo}"/>
+                    <map:transform type="i18n">
+                      <map:parameter name="locale" value="{../locale}"/>
+                    </map:transform>
+                    <map:serialize type="fo2pdf"/>
+                </map:when>
+                <map:otherwise>
+                    <map:generate src="cocoon://{1}{2}.fo"/>
+                    <map:transform type="i18n">
+                      <map:parameter name="locale" value="{../locale}"/>
+                    </map:transform>
+                    <map:serialize type="fo2pdf"/>
+                </map:otherwise>
+            </map:select>
+        </map:match>
+]]>
+        </source>
         <p>
-          Lastly, we generate a PDF using the fo2pdf serializer.
+          This next section of the pipeline matches requests for PDF
+          documents in a manner similar to the previous match for
+          XSL:FO documents. If the PDF document exists in the project,
+          it is passed directly to the client. If the XSL:FO document
+          exists for the requested PDF, the XSL:FO is serialized by
+          the fo2pdf serializer and passed to the client as PDF (after
+          i18n is handled by the i18n transformer). When neither PDF
+          nor XSL:FO exists, XSL:FO is generated by the match
+          described above, i18n elements are processed for the current
+          locale, and the result is serialized as PDF.
         </p>
       </section>
       <section id="html">