Ard Schrijvers schreef:
By the way,
what are you using the catalog for anyway? Does sound like some sort of i18n. 
Trying to simulate i18n stuff in xsl can/will result easily in absurd 
inefficient xsls, taking up to seconds to run,

Regards Ard

uhm... the catalog file is used for mapping PUBLIC id's to alternative SYSTEM id's ...
No i18n involved in this case.

Jan Willem

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.

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




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to