It's still a bit shady to me. Just tried it again and again it didn't work. So 
sometimes it works, sometimes it doesn't. Maybe, apparently.

Anyway, I added a version attribute in the XSL namespace to the STX stylesheet 
root element and now it works again.

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xsl:version="1.0"

(It seems to me that it shouldn't make a difference, but hey, I started doing 
crazy things when nothing seemed to work! :-) )

Just wanted to let fellow "stylesheets requires version attribute" victims know.

Hartelijke groet,

Huib Verweij.

--
Drs. Huib Verweij
Senior software developer - The Language Archive
Max Planck Institute for Psycholinguistics
P.O. Box 310
6500 AH Nijmegen
The Netherlands
t +31-24-3521911
e huib.ver...@mpi.nl<mailto:huib.ver...@mpi.nl>
w http://www.mpi.nl/

Op 30 jan 2011, om 13:42 heeft Huib Verweij het volgende geschreven:

Looking further into it I found that defining a separate "XSLT processor" 
allows me to use the STX transformer:

in META-INF/cocoon/avalan/cocoon-core-xslt-stx.xconf I now have:
<components>
 <component role="org.apache.excalibur.xml.xslt.XSLTProcessor/stx"
  class="org.apache.cocoon.components.xslt.TraxProcessor">
  <parameter name="transformer-factory" 
value="net.sf.joost.trax.TransformerFactoryImpl"/>
 </component>
</components>


and in META-INF/cocoon/avalan/sitemap-transformers-stx-tansformer.xconf I have:

<map:components xmlns:map="http://apache.org/cocoon/sitemap/1.0";>

    <map:transformers>
        <map:transformer name="stx" 
src="org.apache.cocoon.transformation.TraxTransformer">
            <xslt-processor-role>stx</xslt-processor-role>
        </map:transformer>
    </map:transformers>
</map:components>

and it works! Excellent!

So I answered my own question. I always have the same thing with directions as 
well: the moment I ask for directions, I'm almost there ;-).

Huib Verweij.


Op 30 jan 2011, om 12:59 heeft Huib Verweij het volgende geschreven:

Hi,

I'd like to use the STX block in Cocoon 2.2, but it doesn't work, I get the 
same error as mentioned here: 
http://www.mail-archive.com/dev@cocoon.apache.org/msg52324.html ("stylesheet 
requires attribute version").

I think the problem is in the TraxTransformer that no longer supports the 
"transformer-factory" config option (the Cocoon 2.1.11 version does).In the stx 
block the stx transformer is declared like this:

<map:transformer name="stx"
                     logger="sitemap.transformer.stx"
                     src="org.apache.cocoon.transformation.TraxTransformer">
        
<transformer-factory>net.sf.joost.trax.TransformerFactoryImpl</transformer-factory>
    </map:transformer>

so it is using the "transformer-factory" config option. So what happens is, I 
think, the default transformer factory for XSLT stylesheets is used, it 
generates a transformer, which is a XSLT transformer, which checks for the 
version attribute on the <xsl:stylesheet/> element, which does not exist in the 
STX stylesheet, and it generates the above error. Or something like that.

So, do you have any tips on how to get this working again?

Huib Verweij.



Reply via email to