2010-06-06 5 views
0

J'ai un peu de JSP qui fait cela:JSTL XML Transforme ne fonctionne pas avec XSL imbriqué comprend

<c:import url="/xsl/Transformer.xsl" var="xslt" /> 
<x:transform doc="${actionBean.dom}" xslt="${xslt}" xsltSystemId="/xsl/"> 

Cela transforme le XML exactement comme prévu tant que Transformer.xsl ne contient pas <xsl:include> balises ou tant que tous les documents qu'il contient n'incluent rien.

Cependant, si j'utilise xsl qui comprend un document qui comprend à son tour un autre document, je reçois l'erreur suivante:

 
ERROR: 'Invalid URI 'NestedInclude.xsl 
Could not resolve entity reference: "NestedInclude.xsl"'.' 

Notez que la JSP est contenue dans le répertoire ci-dessous les documents xsl. Si tous mes XSL et JSP se trouvent dans le même répertoire (et que j'enlève l'attribut xsltSystemId) alors tout ira bien, mais je ne veux pas vraiment le faire.

Quelqu'un peut-il voir quelque chose que je fais mal, car c'est un peu un tueur en ce moment et la documentation JSTL est à côté de l'inutile.

Répondre

0

Si vous fournissez une valeur pour l'attribut xsltSystemId qui commence par "/", je crois que JSTL utilisera un EntityResolver qui tente de localiser: PageContext.getServletContext().getResourceAsStream(xsltSystemId). Donc, vous pouvez essayer soit xsltSystemId="/xsl/Transformer.xsl", ou simplement laisser de côté l'attribut.

Questions connexes