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
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]