cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ard Schrijvers" <a.schrijv...@hippo.nl>
Subject RE: catalog and xslt document() function
Date Mon, 25 Jun 2007 09:46:39 GMT

> Alexander Daniel schreef:
> > I don't know direct answers to your questions but I can recommend a 
> > different approach:
> >
> > Instead of using the XSLT document() function you could use the 
> > Include transformer 
> > (org.apache.cocoon.transformation.IncludeTransformer) which also 
> > supports caching. We use it successfully in our project.
> >
> > Alex
> >
> We do use the cinclude transformer in the same project. But 
> in this case 
> i need to check the contents of the document before it can be 
> included. 
> This would require a few extra steps if we would use the cinclude 
> transformer so that option is not preferable over the xpath document 
> function.

I am not aware exactly of your problem, but you should be aware of possible caching problems
using the xslt document() function (changing the imported document contents won't make it
to your result if the result is cached)

regards Ard

> 
> For example:
> <xsl:variable name="doc" select="document(@path)"/>
> <xsl:if test="$doc/some-element">
>   <xsl:copy-of select="$doc"/>
> ....
> 
> I think the XSLT processor should be aware of the catalog 
> file in this 
> case.
> 
> Jan Willem
> 
> > On Jun 21, 2007, at 1:21 PM, Jan-Willem Boer wrote:
> >
> >> Jan Willem Boer schreef:
> >>> Hi,
> >>>
> >>> I ran into a problem with the catalog file and the xslt 
> document() 
> >>> function.
> >>>
> >>> To include a document into the XML that flows through a Cocoon 
> >>> pipeline, I am using the document() function in an XSLT 
> stylesheet:
> >>>    <xsl:copy-of select="document(@path)"/>
> >>>
> >>> The document-to-include contains a DOCTYPE declaration 
> referring to 
> >>> an external entity:
> >>>    <!DOCTYPE something PUBLIC "-//Company//DTD SOMETHING-XML//NL" 
> >>> "something.dtd">
> >>>
> >>> I added the DTD-file to the directory WEB-INF/entities 
> and added a 
> >>> line to the catalog file containing the PUBLIC and SYSTEM 
> identifiers.
> >>>
> >>> The problem occurs when i use the document function to 
> include the 
> >>> document directly with an absolute path, the catalog file is 
> >>> ignored, and the DTD is not found.
> >>> To circumvent this, I was forced to redirect the 
> document() function 
> >>> to a cocoon pipeline like this:
> >>>    <xsl:copy-of select="document('cocoon://get-file/' + @path)"/>
> >> this should of course be
> >> <xsl:copy-of select="document(concat('cocoon://get-file/', 
> @path))"/>
> >>>
> >>> instead of
> >>>    <xsl:copy-of select="document(@path)"/>
> >>>
> >>> Cocoon reads the catalog and does not complain, so at 
> least I have 
> >>> it working now.
> >>>
> >>> I was wondering (1) if this is expected behaviour (2) if there is 
> >>> another, more elegant way to solve this: can the XSLT 
> processor be 
> >>> instructed to read the catalog somehow?
> >>>
> >>> Jan Willem Boer
> >>> http://www.linkedin.com/in/janwillemboer
> >>
> >
> >
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> > For additional commands, e-mail: users-help@cocoon.apache.org
> >
> >
> >
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message