forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Autumn Cuellar <a.cuel...@auckland.ac.nz>
Subject Re: DocBook documentation format - Generator error
Date Thu, 22 Jan 2004 22:34:01 GMT
*sheepish grin* Nevermind, the one thing I got from the Cocoon user 
documentation was the importance of the generate -> transform -> 
serialize sequence. I'd forgotten to check that.

Autumn

Autumn Cuellar wrote:
> Hello,
> 
> Perhaps this should go to the Cocoon group, but you probably have lots 
> of experience in this area as well.
> 
> Background: I've chosen DocBook as my documentation format for my 
> Forrest-generated website. I want to be able to transform the DocBook, 
> which I store in files with a 'dbxml' extension, to PDF and body-*.html 
> (using the IdGenerator transformer and Link ReWriter included in 
> Forrest) without converting the DocBook to doc-v12 xml.
> 
> Right now my main problem is this one chunk of the sitemap.xmap code, 
> which I've just copied from the part that checks for ehtml files:
> 
> 1  <map:match pattern="**body-*.html">
> 2    <map:select type="exists">
> 3      <map:when test="content/xdocs/{1}{2}.dbxml">
> 4        <map:generate src="content/xdocs/{1}{2}.dbxml" />
> 5        <map:transform type="dbidgen" />
> 6        <map:transform type="xinclude" />
> 7        <map:transform type="dblinkrewriter" 
> src="cocoon:/{1}linkmap-{2}.html"/>
> 8        <map:transform src="docbook/html/docbook-forrest.xsl" />
> 9      </map:when>
> 10   </map:select>
> 11 </map:match>
> 
> If I leave line 4 in, I get this BROKEN error:"Generator already set. 
> You can only select one Generator (file)".
> If I comment it out, I get this BROKEN error:"You must set a generator 
> first before you can use a transformer."
> 
> The second error I understand, the first I do not. I did already read 
> the Cocoon user documentation to try to solve my problem, not that it 
> made much sense. Anyway, the whole file's attached if it offers more 
> insight.
> 
> Cheers,
> Autumn
> 
> 
> ------------------------------------------------------------------------
> 
> <?xml version="1.0"?>
> <!-- ===============================================
> Default Forrest sitemap, defining the whole site.
> Delegates to the other *.xmap files.  See
> http://xml.apache.org/forrest/sitemap-ref.html
> 
> $Revision: 1.117 $
> ==================================================== -->
> 
> 
> <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
>   <map:components>
>     <map:generators default="file">
>       <map:generator name="file"      src="org.apache.cocoon.generation.FileGenerator"
/>
>       <!--
>       <map:generator name="html"      src="org.apache.cocoon.generation.HTMLGenerator">
>         <jtidy-config>jtidy.properties</jtidy-config>
>       </map:generator>
>       <map:generator name="directory" src="org.apache.cocoon.generation.DirectoryGenerator"
/>
>       -->
>     </map:generators>
> 
>     <map:transformers default="xslt">
>       <!-- Generates @id attributes from <title> strings -->
>       <map:transformer name="idgen" src="org.apache.cocoon.transformation.IdGeneratorTransformer">
>         <element>//*[local-name() = 'section']</element>
>         <id>title/text()</id>
>       </map:transformer>
> 
>       <!--Added by Autumn to have IDs generated for docBook files-->
>       <map:transformer name="dbidgen" src="org.apache.cocoon.transformation.IdGeneratorTransformer">
>         <element>//*[local-name() = 'sect*']</element>
>         <id>title/text()</id>
>       </map:transformer>
> 
>       <!-- Rewrites links, e.g. transforming href="site:index" to href="../index.html"
-->
>       <!-- See http://xml.apache.org/forrest/sitemap-ref.html#linkrewriting_impl -->
>       <map:transformer name="linkrewriter" logger="sitemap.transformer.linkrewriter"
src="org.apache.cocoon.transformation.LinkRewriterTransformer">
>         <link-attrs>href src</link-attrs>
>         <schemes>site ext</schemes>
> 
>         <input-module name="site">
>           <input-module name="linkmap">
>             <file src="{src}" reloadable="true" />
>           </input-module>
>           <prefix>/site//</prefix>
>           <suffix>/@href</suffix>
>         </input-module>
>         <input-module name="ext">
>           <input-module name="linkmap">
>             <file src="{src}" reloadable="true" />
>           </input-module>
>           <prefix>/site/external-refs//</prefix>
>           <suffix>/@href</suffix>
>         </input-module>
>       </map:transformer>
> 
>       <!--Added by Autumn to have links rewritten for docBook files-->
>       <map:transformer name="dblinkrewriter" logger="sitemap.transformer.linkrewriter"
src="org.apache.cocoon.transformation.LinkRewriterTransformer">
>         <link-attrs>url linkend</link-attrs>
>         <schemes>site ext</schemes>
> 
>         <input-module name="site">
>           <input-module name="linkmap">
>             <file src="{src}" reloadable="true" />
>           </input-module>
>           <prefix>/site//</prefix>
>           <suffix>/@href</suffix>
>         </input-module>
>         <input-module name="ext">
>           <input-module name="linkmap">
>             <file src="{src}" reloadable="true" />
>           </input-module>
>           <prefix>/site/external-refs//</prefix>
>           <suffix>/@href</suffix>
>         </input-module>
>       </map:transformer>
> 
>       <map:transformer name="xpath" logger="sitemap.transformer.xpath" src="org.apache.cocoon.transformation.XPathTransformer"
/>
>       <map:transformer name="xslt" src="org.apache.cocoon.transformation.TraxTransformer"
logger="sitemap.transformer.xslt" 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>org.apache.xalan.processor.TransformerFactoryImpl</transformer-factory>
>         <!--<transformer-factory>com.icl.saxon.TransformerFactoryImpl</transformer-factory>-->
>         <!--<transformer-factory>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</transformer-factory>-->
>       </map:transformer>
> 
>       <map:transformer name="xinclude" src="org.apache.cocoon.transformation.XIncludeTransformer"
logger="sitemap.transformer.xinclude" pool-grow="2" pool-max="16" pool-min="2" />
>     </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>
>         <doctype-system>http://www.w3.org/TR/html4/loose.dtd</doctype-system>
>       </map:serializer>
> 
>       <map:serializer name="xml" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer"/>
>       
>       <map:serializer name="xml-document" mime-type="text/xml" src="org.apache.cocoon.serialization.XMLSerializer">
>         <cdata-section-elements>source</cdata-section-elements>
>         <doctype-public>-//APACHE//DTD Documentation V1.2//EN</doctype-public>
>         <doctype-system>document-v12.dtd</doctype-system>
>       </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 mime-type="application/x-shockwave-flash" name="swf" src="org.apache.cocoon.serialization.SWFSerializer"/>
>       <map:serializer mime-type="application/msword" name="fo2rtf" src="org.apache.cocoon.serialization.RTFSerializer"/>
>       -->
>     </map:serializers>
> 
>     <map:matchers default="wildcard">
>       <map:matcher name="wildcard" src="org.apache.cocoon.matching.WildcardURIMatcher"/>
>       <map:matcher name="regexp" src="org.apache.cocoon.matching.RegexpURIMatcher"/>
>     </map:matchers>
> 
>     <map:selectors>
>       <map:selector logger="sitemap.selector.exists" name="exists" src="org.apache.cocoon.selection.ResourceExistsSelector"
/>
>     </map:selectors>
> 
>     <map:pipes default="caching">
>       <map:pipe name="caching" src="org.apache.cocoon.components.pipeline.impl.CachingProcessingPipeline"/>
>       <!--
>       <map:pipe name="noncaching" src="org.apache.cocoon.components.pipeline.impl.NonCachingProcessingPipeline"/>
>       <map:pipe name="profile-caching" src="org.apache.cocoon.components.profiler.ProfilingCachingProcessingPipeline"/>
>       <map:pipe name="profile-noncaching" src="org.apache.cocoon.components.profiler.ProfilingNonCachingProcessingPipeline"/>
>       -->
>     </map:pipes>
>   </map:components>
> 
>   <!-- NOTE: the 'links view' is no longer used to discover a page's links.
>        Instead of filterlinks.xsl, use cli.xconf include/exclude nodes to define which
pages to render.
>   <map:views>
>     <map:view name="links" from-position="last">
>       <map:transform src="resources/stylesheets/filterlinks.xsl">
>         <map:parameter name="ctxbasedir" value="{realpath:.}/"/>
>       </map:transform>
>       <map:serialize type="links"/>
>     </map:view>
>   </map:views>
>   -->
> 
>   <map:resources>
>     <map:resource name="skinit">
>       <map:transform src="skins/{forrest:skin}/xslt/html/{type}.xsl">
>         <map:parameter name="notoc" value="{notoc}"/>
>         <!-- For backwards-compat with 0.2 - 0.4 skins -->
>         <map:parameter name="isfaq" value="{notoc}"/>
>         <map:parameter name="nopdf" value="{nopdf}"/>
>         <map:parameter name="path" value="{path}"/>
>         <map:parameter name="obfuscate-mail-links" value="false"/>
>         <!-- Can set an alternative project skinconfig here 
>         <map:parameter name="config-file" value="../../../../skinconf.xml"/>
>         -->
>       </map:transform>
> 
>       <map:serialize/>
>     </map:resource>
> 
>   </map:resources>
> 
>   <!-- =========================== Pipelines ================================= -->
>   <map:pipelines>
> 
>     <map:pipeline internal-only="false">
> 
>       <!-- ============================================================ -->
>       <!-- SOURCE FORMATS                                               -->
>       <!--                 Raw XML sources, typically doc-v12 format    -->
>       <!-- ============================================================ -->
>       <!-- http://xml.apache.org/forrest/sitemap-ref.html#source_pipelines -->
> 
>       <!-- Body content -->
>       <map:match pattern="**.xml">
>         <map:match pattern="changes.xml">
>           <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:match pattern="todo.xml">
>           <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:match pattern="**dtdx.xml">
>           <map:mount uri-prefix="" src="dtd.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:match pattern="forrest-issues.xml">
>           <map:mount uri-prefix="" src="issues.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:match pattern="**faq.xml">
>           <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:match pattern="community/**index.xml">
>           <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:match pattern="community/*/**.xml">
>           <map:mount uri-prefix="" src="revisions.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:match pattern="site.xml">
>           <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
>         </map:match>
> 
>         <!-- Default source types -->
>         <map:mount uri-prefix="" src="forrest.xmap" check-reload="yes" />
> 
>       </map:match>
> 
>       <!-- Menu content -->
>       <map:match pattern="abs-menulinks">
>         <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
>       </map:match>
> 
>       <map:match pattern="**menulinks-*">
>         <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
>       </map:match>
> 
>       <!-- Link maps -->
>       <map:match pattern="abs-linkmap">
>         <map:mount uri-prefix="" src="linkmap.xmap"/>
>       </map:match>
> 
>       <map:match pattern="**linkmap-*">
>         <map:match pattern="linkmap-site.*">
>           <map:mount uri-prefix="" src="aggregate.xmap" check-reload="yes" />
>         </map:match>
> 
>         <map:mount uri-prefix="" src="linkmap.xmap" check-reload="yes" />
>       </map:match>
> 
>     </map:pipeline>
> 
> 
>     <!-- ============================================================ -->
>     <!-- INTERMEDIATE FORMATS                                         -->
>     <!--                          Tabs, menus and body HTML.          -->
>     <!--                       Called from output format pipelines    -->
>     <!-- ============================================================ -->
>     <!-- http://xml.apache.org/forrest/sitemap-ref.html#intermediate_pipelines -->
> 
>     <map:pipeline internal-only="false">
> 
>       <!-- External matches -->
>       <!-- (HTML rendered directly from special formats) -->
>       <map:match pattern="**body-faq.html">
>         <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
>       </map:match>
> 
>       <map:match pattern="**body-*.html">
>         <map:select type="exists">
>           <map:when test="content/xdocs/{1}{2}.ehtml">
>             <map:generate src="content/xdocs/{1}{2}.ehtml" />
>             <map:transform src="resources/stylesheets/html2htmlbody.xsl" />
>             <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
>             <map:serialize type="xml" />
>           </map:when>
>         </map:select>
>       </map:match>
> 
>       <!--Added by Autumn to get DocBook xml transformed automatically to the body
of the html-->
>       <map:match pattern="**body-*.html">
>         <map:select type="exists">
>           <map:when test="content/xdocs/{1}{2}.dbxml">
> <!--            <map:generate src="content/xdocs/{1}{2}.dbxml" />-->
>             <map:transform type="dbidgen"/>
>             <map:transform type="xinclude"/>
>             <map:transform type="dblinkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
>             <map:transform src="/usr/people/autumn/apache-forrest-0.5-src/docbook/docbook-xsl-1.64.1/html/docbook-forrest.xsl"/>
>           </map:when>
>         </map:select>
>       </map:match>
> 
>       <!-- Default matches -->
>       <!-- (HTML rendered from doc-v11 intermediate format -->
>       <map:match pattern="**body-*.html">
>         <map:generate src="cocoon:/{1}{2}.xml"/>
>         <map:transform type="idgen"/>
>         <map:transform type="xinclude"/>
>         <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
>         <map:call resource="skinit">
>           <map:parameter name="type" value="document2html"/>
>           <map:parameter name="path" value="{1}{2}.html"/>
>           <map:parameter name="notoc" value="false"/>
>         </map:call>
>       </map:match>
> 
>       <map:match pattern="**menu-*.html">
>         <map:generate src="cocoon:/{1}book-{2}.html"/>
>         <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
>         <map:call resource="skinit">
>           <map:parameter name="type" value="book2menu"/>
>           <map:parameter name="path" value="{1}{2}.html"/>
>         </map:call>
>       </map:match>
> 
>       <map:match pattern="**tab-*.html">
>         <map:generate src="content/xdocs/tabs.xml" />
>         <map:transform type="linkrewriter" src="cocoon:/{1}linkmap-{2}.html"/>
>         <map:call resource="skinit">
>           <map:parameter name="type" value="tab2menu"/>
>           <map:parameter name="path" value="{1}{2}.html"/>
>         </map:call>
>       </map:match>
> 
>       <map:match pattern="**book-*.html">
>         <map:mount uri-prefix="" src="menu.xmap" check-reload="yes" />
>       </map:match>
> 
>     </map:pipeline>
> 
> 
>     <map:pipeline internal-only="false">
> 
>       <!-- ============================================================ -->
>       <!-- OUTPUT FORMATS                                               -->
>       <!--                  Serves content directly to the user         -->
>       <!-- +==========================================================+ -->
>       <!-- http://xml.apache.org/forrest/sitemap-ref.html#output_pipelines -->
> 
>       <map:match type="regexp" pattern="^.+$">
>         <map:select type="exists">
>           <map:when test="content/{0}">
>             <map:mount uri-prefix="" src="raw.xmap" check-reload="yes" />
>           </map:when>
>         </map:select>
>       </map:match>
> 
>       <map:match pattern="*.html">
>         <map:aggregate element="site">
>           <map:part src="cocoon:/tab-{0}"/>
>           <map:part src="cocoon:/menu-{0}"/>
>           <map:part src="cocoon:/body-{0}"/>
>         </map:aggregate>
>         <map:call resource="skinit">
>           <map:parameter name="type" value="site2xhtml"/>
>           <map:parameter name="path" value="{0}"/>
>         </map:call>
>       </map:match>         
> 
>       <map:match pattern="**/*.html">
>         <map:aggregate element="site">
>           <map:part src="cocoon:/{1}/tab-{2}.html"/>
>           <map:part src="cocoon:/{1}/menu-{2}.html"/>
>           <map:part src="cocoon:/{1}/body-{2}.html"/>
>         </map:aggregate>
>         <map:call resource="skinit">
>           <map:parameter name="type" value="site2xhtml"/>
>           <map:parameter name="path" value="{0}"/>
>         </map:call>
>       </map:match>
> 
>       <map:match pattern="**faq.pdf">
>         <map:mount uri-prefix="" src="faq.xmap" check-reload="yes" />
>       </map:match>
> 
>       <map:match type="regexp" pattern="^(.*?)([^/]*).pdf$">
>         <map:generate src="cocoon:/{1}{2}.xml"/>
>         <!-- <map:transform type="idgen"/> -->
>         <map:transform type="xinclude"/>
>         <map:transform type="linkrewriter" src="cocoon://{1}linkmap-{2}.pdf"/>
>         <map:transform src="skins/{forrest:skin}/xslt/fo/document2fo.xsl">
>           <map:parameter name="ctxbasedir" value="{realpath:.}/"/>
>           <map:parameter name="xmlbasedir" value="content/xdocs/{1}"/>
>         </map:transform>
>         <map:serialize type="fo2pdf"/>
>       </map:match>
> 
>       <!--Added by Autumn to get DocBook xml transformed automatically to pdf-->
>       <map:match type="regexp" pattern="^(.*?)([^/]*).pdf$">
>         <map:generate src="content/xdocs/{1}{2}.dbxml"/>
>         <!-- <map:transform type="idgen"/> -->
>         <map:transform type="xinclude"/>
>         <map:transform type="dblinkrewriter" src="cocoon://{1}linkmap-{2}.pdf"/>
>         <map:transform src="/usr/people/autumn/apache-forrest-0.5-src/docbook/docbook-xsl-1.64.1/fo/docbook.xsl"/>
>         <map:serialize type="fo2pdf"/>
>       </map:match>
> 
>       <map:match pattern="**changes.rss">
>         <map:mount uri-prefix="" src="status.xmap" check-reload="yes" />
>       </map:match>
> 
>       <map:match pattern="profiler">
>         <map:mount uri-prefix="" src="profiler.xmap" check-reload="yes" />
>       </map:match>
>       <map:match pattern="**.js">
>         <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
>       </map:match>
>       <map:match pattern="**.css">
>         <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
>       </map:match>
>       <map:match pattern="**images**">
>         <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
>       </map:match>
>      <map:match pattern="**favicon.ico">
>         <map:mount uri-prefix="" src="resources.xmap" check-reload="yes" />
>       </map:match>
>     </map:pipeline>
> 
> 
> 
>     <!-- ============================================================ -->
>     <!-- REDIRECTS                                                    -->
>     <!-- ============================================================ -->
>     <map:pipeline internal-only="false">
> 
>       <map:match pattern="">
>         <map:redirect-to uri="index.html" />
>       </map:match>
>       <map:match type="regexp" pattern="^.+/$">
>           <map:redirect-to uri="index.html"/>
>       </map:match>
>     </map:pipeline>
> 
> 
>   </map:pipelines>
> </map:sitemap>

-- 
Autumn A. Cuellar
Bioengineering Institute
The University of Auckland
New Zealand


Mime
View raw message