On Apr 25, 2006, at 12:40 AM, Thorsten Scherler wrote:
On Apr 24, 2006, at 9:12 PM, Web Maestro Clay wrote:
ODT uses a similar structure to OOo. I want to grab the document
title element (stored in 'odt_file.odt/meta.xml' as /
office:document-meta/office:meta/dc:title). But the ODT transformer
currently only looks at /content.xml.
Then we need to do an aggregate to as well pass this file into the
transformation.
<map:aggregate element="odt" >
<map:part src="zip://[EMAIL PROTECTED]:project.{uri}.odt}" />
<map:part src="zip://[EMAIL PROTECTED]:project.{uri}.odt}" />
</map:aggregate>
I was able to view the DIFF you sent. It didn't make any light-bulbs
go off for me...
I found something in the Cocoon Generator for SXW OpenOffice.org
Writer documents (Ross's 'Resume' plugin[1]):
<!-- ==== -->
Here's one snippet that looked interesting:
<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
<map:components>
<map:generators>
<map:generator name="sxw"
src="org.apache.cocoon.generation.SXWGenerator"/>
</map:generators>
</map:components>
<map:pipelines>
<map:pipeline>
<map:match pattern="**.html">
<map:select type="exists">
<!-- OpenOfficeWriter -->
<map:when test="{context-attr:xfolio.efolder}{1}.sxw">
<map:generate type="sxw" src="{context-
attr:xfolio.efolder}{1}.sxw"/>
<map:transform src="transform/oo/oo2html.xsl"/>
<map:serialize/>
</map:when>
</map:select>
</map:match>
</map:pipeline>
</map:pipelines>
</map:sitemap>
<!-- ==== -->
BTW, Ross had so many problems doing 'aggregate' he ended up going
the <cinclude> route:
<!-- ==== -->
== Forrest ==
For now, the best solution is in Forrest, using the new zip protocol
from cocoon, able to resolve things like src="zip://content.xml@
{folder}/test.sxw". This is a part of the trick. The problem of their
solution is to use a cinclude transformer, which is not cacheable.
You need to regenerate your aggregation each time it is requested.
This is not a big problem in Forrest context (essentially generate a
site), but on a real life server...
Their solution looks like that
{{{
<map:generate src="transform/cocoon/dummy.xml"/>
<map:transform src="transform/cocoon/sxw2oo.xsl">
<map:parameter name="src" value="{context-attr:xfolio.efolder}
{1}.sxw"/>
</map:transform>
<map:transform type="cinclude"/>
<map:serialize type="xml"/>
}}}
The dummy.xml is only there because you need something to begin with
pure cocoon.
The job is done by the XSL, to write something like that.
{{{
<office:document xmlns:**>
<c:include select="...">
<xsl:attribute name="src">zip://meta.xml@<xsl:value-of
select="$src"/></xsl:attribute>
</c:include>
<c:include select="...">
<xsl:attribute name="src">zip://content.xml@<xsl:value-of
select="$src"/></xsl:attribute>
</c:include>
</office:document>
}}}
Problems are
* an Xpath include is expensive (all document need to be loaded as
DOM)
* Cinclude (like Xinclude) haven't seem to be cacheable for me
You may say, try a {{{<map:agreggate/>}}}... I tried, and produce so
much problems of validation that I stopped.
<!-- ==== -->
Just the same, I'll poke around with this <map:aggregate/> stuff to
see how frust^H^H^H^H^H far I get.
[1]
http://svn.apache.org/viewcvs.cgi/forrest/trunk/whiteboard/plugins/
org.apache.forrest.plugin.input.Resume/src/java/org/apache/forrest/
generation/SXWGenerator.java?rev=230687&view=markup
Clay Leeds
[EMAIL PROTECTED]
My religion is simple. My religion is kindness.
-- HH Dalai Lama of Tibet