Anish,
Let's examine this more closely. You specify a serializer of type 'xml'. However... your xslt does not contain a root tag when it matches "/". So basically you should get an invalid xml result. So either the sample code you sent is wrong or your xslt is no good. Robby From: Anish [mailto:anish.s...@techblue.co.uk] Sent: Tuesday, December 08, 2009 3:27 PM To: users@cocoon.apache.org Subject: Re: Problem with <i:include> Can you elaborate your use case by attaching small xml snippets? From what I understand you have some Xml snippet containing an include tag. Robby my pipeline and XSLT are like: (Please correct if I 'm wrong) My sitemap/pipeline: <map:match pattern="root/sub/mypattern.html"> <map:generate src="somefile.xml"/> <map:transform src="myxslt.xsl"> <map:transform type="include"> <map:parameter name="recursive" value="false"/> </map:transform> <map:serialize type="xml"/> </map:match> My XSLT (myxslt.xsl): <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <http://www.w3.org/1999/XSL/Transform> xmlns="http://www.w3.org/1999/xhtml" <http://www.w3.org/1999/xhtml> xmlns:xhtml="http://www.w3.org/1999/xhtml" <http://www.w3.org/1999/xhtml> xmlns:i="http://apache.org/cocoon/include/1.0" <http://apache.org/cocoon/include/1.0> > <xsl:template match="/"> Some test data <i:include src="cocoon://root/sub/mypattern.html"/> </xsl:template> </xsl:stylesheet> The output I want is: ############### Some test data Some test data ############### String "Some test data" for two times. One is from XSLT (first call) and another one is from first include. I agree that I can use different pipeline but I need to use it with: <map:parameter name="recursive" value="false"/> Please suggest. TIA Robby Pelssers wrote: By the way.. I think the design of your pipelines is bad after giving it some more thought. If you don't want recursive inclusion... you might consider configuring a new pipeline which does not contain the <i:include> tag at all... you could filter them out of the result by adding a filter.xslt instead of rewriting them to another namespace. And if you did want recursive inclusion... then you should add the include transformer as last step in the 2nd pipeline. <map:match pattern="root/sub/mypattern.html"> <map:generate src="somefile.xml"/> <map:transform type="include"/> --> by adding the include on sub-level you prevent recursive inclusion <map:serialize type="xml"/> </map:match> Cheers, Robby -----Original Message----- From: Robby Pelssers [mailto:robby.pelss...@ciber.com] Sent: Tuesday, December 08, 2009 2:15 PM To: users@cocoon.apache.org Subject: RE: Problem with <i:include> Can you elaborate your use case by attaching small xml snippets? From what I understand you have some Xml snippet containing an include tag. <?xml version="1.0" encoding="UTF-8"?> <main> <i:include src="cocoon://root/sub/mypattern.html" xmlns:i="http://apache.org/cocoon/include/1.0" <http://apache.org/cocoon/include/1.0> /> </main> And the result of calling pattern "root/sub/mypattern.html" results in another snippet containing an include tag. <?xml version="1.0" encoding="UTF-8"?> <mypattern> <i:include src="cocoon://someOtherPipeline" xmlns:i="http://apache.org/cocoon/include/1.0" <http://apache.org/cocoon/include/1.0> /> </mypattern> So what you want is only first level inclusion so the result becomes: <?xml version="1.0" encoding="UTF-8"?> <main> <mypattern> <i:include src="cocoon://someOtherPipeline" xmlns:i="http://apache.org/cocoon/include/1.0" <http://apache.org/cocoon/include/1.0> /> --> this is the problem since it's recursive </mypattern> </main> Now... if you were to add a extra transformation step to the pipeline "root/sub/mypattern.html" which transforms the <i:include> into a different namespace...you will be sure that the includeTransformer will not run into recursion. So the result would become for instance <?xml version="1.0" encoding="UTF-8"?> <main> <mypattern> <ignoreInclude:include src="cocoon://someOtherPipeline" xmlns:ignoreInclude="http://apache.org/cocoon/ignoreInclude/1.0" <http://apache.org/cocoon/ignoreInclude/1.0> /> </mypattern> </main> Does that approach a solution to your problem? Robby -----Original Message----- From: Anish [mailto:anish.s...@techblue.co.uk] Sent: Tuesday, December 08, 2009 1:53 PM To: users@cocoon.apache.org Subject: Re: Problem with <i:include> Robby Pelssers wrote: I actually do the same but not 1 one go... I split my transformations in multiple sequential includes and that gives me no problem: <map:match pattern="datasheet_mockup"> <map:generate src="data/datasheet_mockup.xml" label="step-1"/> <map:transform type="cinclude" label="step-2"/> <!-- Include <PackageID> --> <map:transform src="xslt/includePackageAndProductXml.xslt" label="step-3"/> <map:transform type="cinclude" label="step-4"/> <!-- Include actual Package and Product xml --> <map:transform src="xslt/addGroupId.xslt" type="saxon" label="step-5"/> <map:transform src="xslt/createMapAndTopics.xslt" type="saxon" label="step-6"/> <map:transform type="cinclude" label="step-7"/> <!-- include BoxDimensions --> <map:transform src="xslt/replaceBoxDimensions.xslt" type="saxon" label="step-8"/> <map:transform src="xslt/cleanup.xslt" type="saxon"/> <map:serialize type="xml"/> </map:match> Maybe this won't work for your usecase but it's worthwile considering. Robby -----Original Message----- From: Anish [mailto:anish.s...@techblue.co.uk] Sent: Tuesday, December 08, 2009 1:10 PM To: users@cocoon.apache.org Subject: Problem with <i:include> Hi All I'm trying to include content from a pipeline into an XSLT using: <i:include src="cocoon://root/sub/mypattern.html" xmlns:i="http://apache.org/cocoon/include/1.0" <http://apache.org/cocoon/include/1.0> > while executing it gives: java.lang.StackOverflowError java.util.HashMap.get(HashMap.java:343) org.apache.cocoon.environment.AbstractEnvironment.getAttribute(AbstractE nvironment.java:444) org.apache.cocoon.environment.wrapper.EnvironmentWrapper.getAttribute(En vironmentWrapper.java:415) org.apache.cocoon.environment.wrapper.MutableEnvironmentFacade.getAttrib ute(MutableEnvironmentFacade.java:227) There is a recursive call in the XSLT which again calls same pipeline to include, to avoid that I have set (in the pipeline): <map:parameter name="recursive" value="false"/> Still it's causing the stack to overflow. I'm using Cocoon 2.1.10 on Tomcat 5.5.17. Please suggest. Thanks Robby, Actually I was using "include" (org.apache.cocoon.transformation.IncludeTransformer) transformer. I'm not very much clear about the difference between "include" and "cinclude" (org.apache.cocoon.transformation.CIncludeTransformer). Also I don't need recursive call. At the time of include I just want to include it once (the first level only). Please suggest. -- Anish Sneh Software Engineer Techblue Softwares Pvt. Ltd. www.technologyblueprint.co.uk