You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by JeVeoy <jo...@wisloff.org> on 2009/11/12 15:21:19 UTC

Cocoon 2.2 serialize/transform only parts of XSL content

I'm really not sure about the origin of this error (I'm kind-of newbie to
Cocoon), but I've searched and tried so hard to fix this issue that I don't
recognize the guy staring at me in the mirror...

I'm using Cocoon 2.2 and have built an application according to 
http://cocoon.apache.org/2.2/1159_1_1.html first Cocoon application using
Maven 2 . So far so good.

Then I wanted to add XSLT for transformation. This really didn't do the
trick for me. Right now I've downgraded my working example down to a very
simple .xml-file for content ("index.xml"), a very simple .xslt-file for
transformation ("page.xslt") and of course a sitemap.xmap.

What I want to achieve is to be able to define different .css- and .js-files
in index.xml, load this in page.xslt and make sure sitemap.xmap process it
accordingly.

As of now only the first .js-file is processed. It doesn't matter if I
change which .js-files are included or the order of them. I've also tried to
put 2 or more straight into the <head>-segment in page.xslt, but with the
same result. I can see that all .js-files are sent to page.xslt (writing out
values in a table). Here's the log4j console output:

2009-11-12 14:34:38,836 INFO '' Processed by Apache Cocoon in 33
milliseconds.
2009-11-12 14:34:38,876 INFO 'styles/css/style.css' Processed by Apache
Cocoon in 8 milliseconds.
2009-11-12 14:34:38,896 INFO 'styles/css/navigation.css' Processed by Apache
Cocoon in 20 milliseconds.
2009-11-12 14:34:38,908 INFO 'js/jquery.js' Processed by Apache Cocoon in 22
milliseconds.

When I check the source of the page only 1 out of 5 .js-files are included
in the <head>-segment.

Why?

Could someone please help me?

Sourcecode:
index.xml
<?xml version="1.0" encoding="UTF-8"?>

<main_document>
  <header>
    <styles>
      <css>style.css</css>
      <css>navigation.css</css>
    </styles>
    <scripts>
      <src>jquery.js</src>
      <src>browser.js</src>
      <src>resize.js</src>
      <src>misc.js</src>
      <src>mail.js</src>
    </scripts>
  </header>
</main_document>

page.xslt
<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="main_document">
    <html>
      <head>
        <xsl:for-each select="header/styles/css">
          <xsl:variable name="styleCss"><xsl:value-of
select="."/></xsl:variable>
          <link href="styles/css/{$styleCss}" rel="stylesheet"
type="text/css"/>
        </xsl:for-each>
        
        <xsl:for-each select="header/scripts/src">
          <xsl:variable name="jsSrc"><xsl:value-of
select="."/></xsl:variable>
          <script src="js/{$jsSrc}"></script>
        </xsl:for-each>
        
        <!-- Had to include this to load body-segment. If not included I got
"<body/>" (and no content) -->
        <script language="JavaScript1.2">
          function dummy() { return 0; }
        </script>
      </head>
      
      <body>
        <table>
          <!-- This code will output 5 .js-files -->
          <xsl:for-each select="header/scripts/src">
            <tr><td><xsl:value-of select="."/></td></tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

sitemap.xmap
<?xml version="1.0" encoding="UTF-8"?>

<map:sitemap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://apache.org/cocoon/sitemap/1.0
http://cocoon.apache.org/schema/sitemap/cocoon-sitemap-1.0.xsd"
             xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <!-- Components -->
  <map:components>
    <map:matchers default="wildcard"/>
    <map:selectors default="browser"/>
    <map:generators default="file"/>
    <map:transformers default="xslt"/>
    <map:readers default="resource"/>
    <map:serializers default="html">
      <map:serializer name="html" logger="sitemap.serializer.html"
mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32"
                      pool-min="4"
src="org.apache.cocoon.components.serializers.HTMLSerializer">
        <doctype-default>loose</doctype-default>
        <encoding>UTF-8</encoding>
      </map:serializer>
    </map:serializers> 
  </map:components>
  
  <!-- Definition of the control flow implementation -->
  <map:flow language="javascript">
    <map:script src="flow/event.js"/>
    <map:script src="flow/jobs.js"/>
    <map:script src="flow/session.js"/>
    <map:script src="flow/show.js"/>
  </map:flow>
  
  <map:pipelines>
    <!-- Pipeline for "root", e.g. "localhost:8888/webapp/" -->
    <map:pipeline>
      <map:match pattern="">
        <map:call function="intercept"/>
      </map:match>
      
      <!-- .kont URLs are generated by the Flow system for continuations -->
      <map:match pattern="*.kont">
        <map:call continuation="{1}"/>
      </map:match>
      
      <map:match pattern="action_*">
        <map:call function="intercept">
          <map:parameter name="action" value="{1}"/>
        </map:call>
      </map:match>
      
      <map:match pattern="*.xml" internal-only="true">
        <map:generate type="jx" src="templates/{1}.xml"/>
        <map:transform src="styles/transformations/page.xslt"/>
        <map:serialize type="xhtml"/>
      </map:match>
      
      <!-- Server -->
      
      <map:match pattern="**favicon.png">
        <map:read src="img/ico/favicon.png" mime-type="application/png"/>
      </map:match>
      
      <!-- Common -->
      <map:match pattern="**.css">
        <map:read src="{1}.css" mime-type="text/css"/>
      </map:match>
      
      <map:match pattern="**.js">
        <map:read src="{1}.js" mime-type="text/javascript"/>
      </map:match>
      
      <map:match pattern="**.gif">
        <map:read src="img/{1}.gif" mime-type="image/gif"/>
      </map:match>
      
      <map:match pattern="**.jpg">
        <map:read src="img/{1}.jpg" mime-type="image/jpg"/>
      </map:match>
      
      <map:match pattern="**.png">
        <map:read src="img/{1}.png" mime-type="image/png"/>
      </map:match>
      
      <!--<map:handle-errors>
        <map:generate src="templates/error.xml"/>
        <map:transform src="styles/transformations/page.xslt"/>
        <map:serialize type="xhtml"/>
      </map:handle-errors>-->

    </map:pipeline>
  </map:pipelines>
</map:sitemap>
-- 
View this message in context: http://old.nabble.com/Cocoon-2.2-serialize-transform-only-parts-of-XSL-content-tp26319511p26319511.html
Sent from the Cocoon - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


RE: Cocoon 2.2 serialize/transform only parts of XSL content

Posted by Robby Pelssers <ro...@ciber.com>.
Glad 2 see your problem is solved... I also had some issues in this
trend as well when I started out with Cocoon2.2.  So that's why I
expected it would be something like this.

Cheers,
Robby

-----Original Message-----
From: JeVeoy [mailto:jorgen@wisloff.org] 
Sent: Friday, November 13, 2009 7:48 PM
To: users@cocoon.apache.org
Subject: RE: Cocoon 2.2 serialize/transform only parts of XSL content


I got only one word for you, Robby, and that's: YES!!

First I checked out all 5 .js-files in a browser with the address you
mentioned. They were displayed correctly. So I jumped to your next
suggestion and changed serialize type to html. I got some errors when I
did
this (trimmed stacktrace for readability):

----------------------------------------------------------------
org.apache.cocoon.ProcessingException: Failed to process pipeline

Caused by: org.springframework.beans.factory.BeanCreationException:
Error
creating bean with name
'org.apache.cocoon.serialization.Serializer/htmlPooled': Initialization
of
bean failed; nested exception is java.lang.ExceptionInInitializerError

Caused by:
org.apache.cocoon.components.serializers.encoding.CharsetFactory$Charset
FactoryException:
Unable to load charsets because their classes are not present
----------------------------------------------------------------

Then I removed the serializing declaration from map:components,
returning to
plain default behaviour and *voila*...works like a charm!

Changes made to the previous script (if someone wonders about this later
on):

sitemap.xmap

  <!-- Components -->
  <map:components>
    <map:matchers default="wildcard"/>
    <map:selectors default="browser"/>
    <map:generators default="file"/>
    <map:transformers default="xslt"/>
    <map:readers default="resource"/>
    <map:serializers default="html"/>
  </map:components>

  <map:match pattern="*.xml" internal-only="true">
    <map:generate type="jx" src="templates/{1}.xml"/>
    <map:transform src="styles/transformations/page.xslt"/>
    <map:serialize type="html"/>
  </map:match>

page.xslt
Removed dummy function (no longer needed to display javascript)

Thank you so incredible much!!!!!

Best regards,
JeVeoy

Robby Pelssers-3 wrote:
> 
> A few things for you to test...
> - if you try out the pattern **.js ... can you open the corresponding
> .js file?  Should be something like
> http://localhost:8888/{myblock}/js/jquery.js
> 
> 
> - Check if using the html serializer solves your problem
>       <map:match pattern="*.xml" internal-only="true">
>         <map:generate type="jx" src="templates/{1}.xml"/>
>         <map:transform src="styles/transformations/page.xslt"/>
>         <map:serialize type="html"/>
>       </map:match>
> - Try adding a hard space in your xslt for including scripts
>         <xsl:for-each select="header/scripts/src">
>           <xsl:variable name="jsSrc"><xsl:value-of
> select="."/></xsl:variable>
>           <script src="js/{$jsSrc}">&#160;</script>
>         </xsl:for-each>
> 
> 
> If that still doesn't work let me know.
> 
> Cheers,
> Robby Pelssers
> 
> -----Original Message-----
> From: JeVeoy [mailto:jorgen@wisloff.org] 
> Sent: Thursday, November 12, 2009 3:21 PM
> To: users@cocoon.apache.org
> Subject: Cocoon 2.2 serialize/transform only parts of XSL content
> 
> 
> I'm really not sure about the origin of this error (I'm kind-of newbie
> to
> Cocoon), but I've searched and tried so hard to fix this issue that I
> don't
> recognize the guy staring at me in the mirror...
> 
> I'm using Cocoon 2.2 and have built an application according to 
> http://cocoon.apache.org/2.2/1159_1_1.html first Cocoon application
> using
> Maven 2 . So far so good.
> 
> Then I wanted to add XSLT for transformation. This really didn't do
the
> trick for me. Right now I've downgraded my working example down to a
> very
> simple .xml-file for content ("index.xml"), a very simple .xslt-file
for
> transformation ("page.xslt") and of course a sitemap.xmap.
> 
> What I want to achieve is to be able to define different .css- and
> .js-files
> in index.xml, load this in page.xslt and make sure sitemap.xmap
process
> it
> accordingly.
> 
> As of now only the first .js-file is processed. It doesn't matter if I
> change which .js-files are included or the order of them. I've also
> tried to
> put 2 or more straight into the <head>-segment in page.xslt, but with
> the
> same result. I can see that all .js-files are sent to page.xslt
(writing
> out
> values in a table). Here's the log4j console output:
> 
> 2009-11-12 14:34:38,836 INFO '' Processed by Apache Cocoon in 33
> milliseconds.
> 2009-11-12 14:34:38,876 INFO 'styles/css/style.css' Processed by
Apache
> Cocoon in 8 milliseconds.
> 2009-11-12 14:34:38,896 INFO 'styles/css/navigation.css' Processed by
> Apache
> Cocoon in 20 milliseconds.
> 2009-11-12 14:34:38,908 INFO 'js/jquery.js' Processed by Apache Cocoon
> in 22
> milliseconds.
> 
> When I check the source of the page only 1 out of 5 .js-files are
> included
> in the <head>-segment.
> 
> Why?
> 
> Could someone please help me?
> 
> Sourcecode:
> index.xml
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <main_document>
>   <header>
>     <styles>
>       <css>style.css</css>
>       <css>navigation.css</css>
>     </styles>
>     <scripts>
>       <src>jquery.js</src>
>       <src>browser.js</src>
>       <src>resize.js</src>
>       <src>misc.js</src>
>       <src>mail.js</src>
>     </scripts>
>   </header>
> </main_document>
> 
> page.xslt
> <?xml version="1.0" encoding="ISO-8859-1"?>
> 
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>   <xsl:template match="main_document">
>     <html>
>       <head>
>         <xsl:for-each select="header/styles/css">
>           <xsl:variable name="styleCss"><xsl:value-of
> select="."/></xsl:variable>
>           <link href="styles/css/{$styleCss}" rel="stylesheet"
> type="text/css"/>
>         </xsl:for-each>
>         
>         <xsl:for-each select="header/scripts/src">
>           <xsl:variable name="jsSrc"><xsl:value-of
> select="."/></xsl:variable>
>           <script src="js/{$jsSrc}"></script>
>         </xsl:for-each>
>         
>         <!-- Had to include this to load body-segment. If not included
I
> got
> "<body/>" (and no content) -->
>         <script language="JavaScript1.2">
>           function dummy() { return 0; }
>         </script>
>       </head>
>       
>       <body>
>         <table>
>           <!-- This code will output 5 .js-files -->
>           <xsl:for-each select="header/scripts/src">
>             <tr><td><xsl:value-of select="."/></td></tr>
>           </xsl:for-each>
>         </table>
>       </body>
>     </html>
>   </xsl:template>
> </xsl:stylesheet>
> 
> sitemap.xmap
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <map:sitemap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>              xsi:schemaLocation="http://apache.org/cocoon/sitemap/1.0
> http://cocoon.apache.org/schema/sitemap/cocoon-sitemap-1.0.xsd"
>              xmlns:map="http://apache.org/cocoon/sitemap/1.0">
>   <!-- Components -->
>   <map:components>
>     <map:matchers default="wildcard"/>
>     <map:selectors default="browser"/>
>     <map:generators default="file"/>
>     <map:transformers default="xslt"/>
>     <map:readers default="resource"/>
>     <map:serializers default="html">
>       <map:serializer name="html" logger="sitemap.serializer.html"
> mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32"
>                       pool-min="4"
> src="org.apache.cocoon.components.serializers.HTMLSerializer">
>         <doctype-default>loose</doctype-default>
>         <encoding>UTF-8</encoding>
>       </map:serializer>
>     </map:serializers> 
>   </map:components>
>   
>   <!-- Definition of the control flow implementation -->
>   <map:flow language="javascript">
>     <map:script src="flow/event.js"/>
>     <map:script src="flow/jobs.js"/>
>     <map:script src="flow/session.js"/>
>     <map:script src="flow/show.js"/>
>   </map:flow>
>   
>   <map:pipelines>
>     <!-- Pipeline for "root", e.g. "localhost:8888/webapp/" -->
>     <map:pipeline>
>       <map:match pattern="">
>         <map:call function="intercept"/>
>       </map:match>
>       
>       <!-- .kont URLs are generated by the Flow system for
continuations
> -->
>       <map:match pattern="*.kont">
>         <map:call continuation="{1}"/>
>       </map:match>
>       
>       <map:match pattern="action_*">
>         <map:call function="intercept">
>           <map:parameter name="action" value="{1}"/>
>         </map:call>
>       </map:match>
>       
>       <map:match pattern="*.xml" internal-only="true">
>         <map:generate type="jx" src="templates/{1}.xml"/>
>         <map:transform src="styles/transformations/page.xslt"/>
>         <map:serialize type="xhtml"/>
>       </map:match>
>       
>       <!-- Server -->
>       
>       <map:match pattern="**favicon.png">
>         <map:read src="img/ico/favicon.png"
> mime-type="application/png"/>
>       </map:match>
>       
>       <!-- Common -->
>       <map:match pattern="**.css">
>         <map:read src="{1}.css" mime-type="text/css"/>
>       </map:match>
>       
>       <map:match pattern="**.js">
>         <map:read src="{1}.js" mime-type="text/javascript"/>
>       </map:match>
>       
>       <map:match pattern="**.gif">
>         <map:read src="img/{1}.gif" mime-type="image/gif"/>
>       </map:match>
>       
>       <map:match pattern="**.jpg">
>         <map:read src="img/{1}.jpg" mime-type="image/jpg"/>
>       </map:match>
>       
>       <map:match pattern="**.png">
>         <map:read src="img/{1}.png" mime-type="image/png"/>
>       </map:match>
>       
>       <!--<map:handle-errors>
>         <map:generate src="templates/error.xml"/>
>         <map:transform src="styles/transformations/page.xslt"/>
>         <map:serialize type="xhtml"/>
>       </map:handle-errors>-->
> 
>     </map:pipeline>
>   </map:pipelines>
> </map:sitemap>
> -- 
> View this message in context:
>
http://old.nabble.com/Cocoon-2.2-serialize-transform-only-parts-of-XSL-c
> ontent-tp26319511p26319511.html
> Sent from the Cocoon - Users mailing list archive at Nabble.com.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 
> 
> 

-- 
View this message in context:
http://old.nabble.com/Cocoon-2.2-serialize-transform-only-parts-of-XSL-c
ontent-tp26319511p26341475.html
Sent from the Cocoon - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


RE: Cocoon 2.2 serialize/transform only parts of XSL content

Posted by JeVeoy <jo...@wisloff.org>.
I got only one word for you, Robby, and that's: YES!!

First I checked out all 5 .js-files in a browser with the address you
mentioned. They were displayed correctly. So I jumped to your next
suggestion and changed serialize type to html. I got some errors when I did
this (trimmed stacktrace for readability):

----------------------------------------------------------------
org.apache.cocoon.ProcessingException: Failed to process pipeline

Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name
'org.apache.cocoon.serialization.Serializer/htmlPooled': Initialization of
bean failed; nested exception is java.lang.ExceptionInInitializerError

Caused by:
org.apache.cocoon.components.serializers.encoding.CharsetFactory$CharsetFactoryException:
Unable to load charsets because their classes are not present
----------------------------------------------------------------

Then I removed the serializing declaration from map:components, returning to
plain default behaviour and *voila*...works like a charm!

Changes made to the previous script (if someone wonders about this later
on):

sitemap.xmap

  <!-- Components -->
  <map:components>
    <map:matchers default="wildcard"/>
    <map:selectors default="browser"/>
    <map:generators default="file"/>
    <map:transformers default="xslt"/>
    <map:readers default="resource"/>
    <map:serializers default="html"/>
  </map:components>

  <map:match pattern="*.xml" internal-only="true">
    <map:generate type="jx" src="templates/{1}.xml"/>
    <map:transform src="styles/transformations/page.xslt"/>
    <map:serialize type="html"/>
  </map:match>

page.xslt
Removed dummy function (no longer needed to display javascript)

Thank you so incredible much!!!!!

Best regards,
JeVeoy

Robby Pelssers-3 wrote:
> 
> A few things for you to test...
> - if you try out the pattern **.js ... can you open the corresponding
> .js file?  Should be something like
> http://localhost:8888/{myblock}/js/jquery.js
> 
> 
> - Check if using the html serializer solves your problem
>       <map:match pattern="*.xml" internal-only="true">
>         <map:generate type="jx" src="templates/{1}.xml"/>
>         <map:transform src="styles/transformations/page.xslt"/>
>         <map:serialize type="html"/>
>       </map:match>
> - Try adding a hard space in your xslt for including scripts
>         <xsl:for-each select="header/scripts/src">
>           <xsl:variable name="jsSrc"><xsl:value-of
> select="."/></xsl:variable>
>           <script src="js/{$jsSrc}">&#160;</script>
>         </xsl:for-each>
> 
> 
> If that still doesn't work let me know.
> 
> Cheers,
> Robby Pelssers
> 
> -----Original Message-----
> From: JeVeoy [mailto:jorgen@wisloff.org] 
> Sent: Thursday, November 12, 2009 3:21 PM
> To: users@cocoon.apache.org
> Subject: Cocoon 2.2 serialize/transform only parts of XSL content
> 
> 
> I'm really not sure about the origin of this error (I'm kind-of newbie
> to
> Cocoon), but I've searched and tried so hard to fix this issue that I
> don't
> recognize the guy staring at me in the mirror...
> 
> I'm using Cocoon 2.2 and have built an application according to 
> http://cocoon.apache.org/2.2/1159_1_1.html first Cocoon application
> using
> Maven 2 . So far so good.
> 
> Then I wanted to add XSLT for transformation. This really didn't do the
> trick for me. Right now I've downgraded my working example down to a
> very
> simple .xml-file for content ("index.xml"), a very simple .xslt-file for
> transformation ("page.xslt") and of course a sitemap.xmap.
> 
> What I want to achieve is to be able to define different .css- and
> .js-files
> in index.xml, load this in page.xslt and make sure sitemap.xmap process
> it
> accordingly.
> 
> As of now only the first .js-file is processed. It doesn't matter if I
> change which .js-files are included or the order of them. I've also
> tried to
> put 2 or more straight into the <head>-segment in page.xslt, but with
> the
> same result. I can see that all .js-files are sent to page.xslt (writing
> out
> values in a table). Here's the log4j console output:
> 
> 2009-11-12 14:34:38,836 INFO '' Processed by Apache Cocoon in 33
> milliseconds.
> 2009-11-12 14:34:38,876 INFO 'styles/css/style.css' Processed by Apache
> Cocoon in 8 milliseconds.
> 2009-11-12 14:34:38,896 INFO 'styles/css/navigation.css' Processed by
> Apache
> Cocoon in 20 milliseconds.
> 2009-11-12 14:34:38,908 INFO 'js/jquery.js' Processed by Apache Cocoon
> in 22
> milliseconds.
> 
> When I check the source of the page only 1 out of 5 .js-files are
> included
> in the <head>-segment.
> 
> Why?
> 
> Could someone please help me?
> 
> Sourcecode:
> index.xml
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <main_document>
>   <header>
>     <styles>
>       <css>style.css</css>
>       <css>navigation.css</css>
>     </styles>
>     <scripts>
>       <src>jquery.js</src>
>       <src>browser.js</src>
>       <src>resize.js</src>
>       <src>misc.js</src>
>       <src>mail.js</src>
>     </scripts>
>   </header>
> </main_document>
> 
> page.xslt
> <?xml version="1.0" encoding="ISO-8859-1"?>
> 
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>   <xsl:template match="main_document">
>     <html>
>       <head>
>         <xsl:for-each select="header/styles/css">
>           <xsl:variable name="styleCss"><xsl:value-of
> select="."/></xsl:variable>
>           <link href="styles/css/{$styleCss}" rel="stylesheet"
> type="text/css"/>
>         </xsl:for-each>
>         
>         <xsl:for-each select="header/scripts/src">
>           <xsl:variable name="jsSrc"><xsl:value-of
> select="."/></xsl:variable>
>           <script src="js/{$jsSrc}"></script>
>         </xsl:for-each>
>         
>         <!-- Had to include this to load body-segment. If not included I
> got
> "<body/>" (and no content) -->
>         <script language="JavaScript1.2">
>           function dummy() { return 0; }
>         </script>
>       </head>
>       
>       <body>
>         <table>
>           <!-- This code will output 5 .js-files -->
>           <xsl:for-each select="header/scripts/src">
>             <tr><td><xsl:value-of select="."/></td></tr>
>           </xsl:for-each>
>         </table>
>       </body>
>     </html>
>   </xsl:template>
> </xsl:stylesheet>
> 
> sitemap.xmap
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <map:sitemap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>              xsi:schemaLocation="http://apache.org/cocoon/sitemap/1.0
> http://cocoon.apache.org/schema/sitemap/cocoon-sitemap-1.0.xsd"
>              xmlns:map="http://apache.org/cocoon/sitemap/1.0">
>   <!-- Components -->
>   <map:components>
>     <map:matchers default="wildcard"/>
>     <map:selectors default="browser"/>
>     <map:generators default="file"/>
>     <map:transformers default="xslt"/>
>     <map:readers default="resource"/>
>     <map:serializers default="html">
>       <map:serializer name="html" logger="sitemap.serializer.html"
> mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32"
>                       pool-min="4"
> src="org.apache.cocoon.components.serializers.HTMLSerializer">
>         <doctype-default>loose</doctype-default>
>         <encoding>UTF-8</encoding>
>       </map:serializer>
>     </map:serializers> 
>   </map:components>
>   
>   <!-- Definition of the control flow implementation -->
>   <map:flow language="javascript">
>     <map:script src="flow/event.js"/>
>     <map:script src="flow/jobs.js"/>
>     <map:script src="flow/session.js"/>
>     <map:script src="flow/show.js"/>
>   </map:flow>
>   
>   <map:pipelines>
>     <!-- Pipeline for "root", e.g. "localhost:8888/webapp/" -->
>     <map:pipeline>
>       <map:match pattern="">
>         <map:call function="intercept"/>
>       </map:match>
>       
>       <!-- .kont URLs are generated by the Flow system for continuations
> -->
>       <map:match pattern="*.kont">
>         <map:call continuation="{1}"/>
>       </map:match>
>       
>       <map:match pattern="action_*">
>         <map:call function="intercept">
>           <map:parameter name="action" value="{1}"/>
>         </map:call>
>       </map:match>
>       
>       <map:match pattern="*.xml" internal-only="true">
>         <map:generate type="jx" src="templates/{1}.xml"/>
>         <map:transform src="styles/transformations/page.xslt"/>
>         <map:serialize type="xhtml"/>
>       </map:match>
>       
>       <!-- Server -->
>       
>       <map:match pattern="**favicon.png">
>         <map:read src="img/ico/favicon.png"
> mime-type="application/png"/>
>       </map:match>
>       
>       <!-- Common -->
>       <map:match pattern="**.css">
>         <map:read src="{1}.css" mime-type="text/css"/>
>       </map:match>
>       
>       <map:match pattern="**.js">
>         <map:read src="{1}.js" mime-type="text/javascript"/>
>       </map:match>
>       
>       <map:match pattern="**.gif">
>         <map:read src="img/{1}.gif" mime-type="image/gif"/>
>       </map:match>
>       
>       <map:match pattern="**.jpg">
>         <map:read src="img/{1}.jpg" mime-type="image/jpg"/>
>       </map:match>
>       
>       <map:match pattern="**.png">
>         <map:read src="img/{1}.png" mime-type="image/png"/>
>       </map:match>
>       
>       <!--<map:handle-errors>
>         <map:generate src="templates/error.xml"/>
>         <map:transform src="styles/transformations/page.xslt"/>
>         <map:serialize type="xhtml"/>
>       </map:handle-errors>-->
> 
>     </map:pipeline>
>   </map:pipelines>
> </map:sitemap>
> -- 
> View this message in context:
> http://old.nabble.com/Cocoon-2.2-serialize-transform-only-parts-of-XSL-c
> ontent-tp26319511p26319511.html
> Sent from the Cocoon - Users mailing list archive at Nabble.com.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
> For additional commands, e-mail: users-help@cocoon.apache.org
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/Cocoon-2.2-serialize-transform-only-parts-of-XSL-content-tp26319511p26341475.html
Sent from the Cocoon - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


RE: Cocoon 2.2 serialize/transform only parts of XSL content

Posted by Robby Pelssers <ro...@ciber.com>.
A few things for you to test...
- if you try out the pattern **.js ... can you open the corresponding
.js file?  Should be something like
http://localhost:8888/{myblock}/js/jquery.js


- Check if using the html serializer solves your problem
      <map:match pattern="*.xml" internal-only="true">
        <map:generate type="jx" src="templates/{1}.xml"/>
        <map:transform src="styles/transformations/page.xslt"/>
        <map:serialize type="html"/>
      </map:match>
- Try adding a hard space in your xslt for including scripts
        <xsl:for-each select="header/scripts/src">
          <xsl:variable name="jsSrc"><xsl:value-of
select="."/></xsl:variable>
          <script src="js/{$jsSrc}">&#160;</script>
        </xsl:for-each>


If that still doesn't work let me know.

Cheers,
Robby Pelssers

-----Original Message-----
From: JeVeoy [mailto:jorgen@wisloff.org] 
Sent: Thursday, November 12, 2009 3:21 PM
To: users@cocoon.apache.org
Subject: Cocoon 2.2 serialize/transform only parts of XSL content


I'm really not sure about the origin of this error (I'm kind-of newbie
to
Cocoon), but I've searched and tried so hard to fix this issue that I
don't
recognize the guy staring at me in the mirror...

I'm using Cocoon 2.2 and have built an application according to 
http://cocoon.apache.org/2.2/1159_1_1.html first Cocoon application
using
Maven 2 . So far so good.

Then I wanted to add XSLT for transformation. This really didn't do the
trick for me. Right now I've downgraded my working example down to a
very
simple .xml-file for content ("index.xml"), a very simple .xslt-file for
transformation ("page.xslt") and of course a sitemap.xmap.

What I want to achieve is to be able to define different .css- and
.js-files
in index.xml, load this in page.xslt and make sure sitemap.xmap process
it
accordingly.

As of now only the first .js-file is processed. It doesn't matter if I
change which .js-files are included or the order of them. I've also
tried to
put 2 or more straight into the <head>-segment in page.xslt, but with
the
same result. I can see that all .js-files are sent to page.xslt (writing
out
values in a table). Here's the log4j console output:

2009-11-12 14:34:38,836 INFO '' Processed by Apache Cocoon in 33
milliseconds.
2009-11-12 14:34:38,876 INFO 'styles/css/style.css' Processed by Apache
Cocoon in 8 milliseconds.
2009-11-12 14:34:38,896 INFO 'styles/css/navigation.css' Processed by
Apache
Cocoon in 20 milliseconds.
2009-11-12 14:34:38,908 INFO 'js/jquery.js' Processed by Apache Cocoon
in 22
milliseconds.

When I check the source of the page only 1 out of 5 .js-files are
included
in the <head>-segment.

Why?

Could someone please help me?

Sourcecode:
index.xml
<?xml version="1.0" encoding="UTF-8"?>

<main_document>
  <header>
    <styles>
      <css>style.css</css>
      <css>navigation.css</css>
    </styles>
    <scripts>
      <src>jquery.js</src>
      <src>browser.js</src>
      <src>resize.js</src>
      <src>misc.js</src>
      <src>mail.js</src>
    </scripts>
  </header>
</main_document>

page.xslt
<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="main_document">
    <html>
      <head>
        <xsl:for-each select="header/styles/css">
          <xsl:variable name="styleCss"><xsl:value-of
select="."/></xsl:variable>
          <link href="styles/css/{$styleCss}" rel="stylesheet"
type="text/css"/>
        </xsl:for-each>
        
        <xsl:for-each select="header/scripts/src">
          <xsl:variable name="jsSrc"><xsl:value-of
select="."/></xsl:variable>
          <script src="js/{$jsSrc}"></script>
        </xsl:for-each>
        
        <!-- Had to include this to load body-segment. If not included I
got
"<body/>" (and no content) -->
        <script language="JavaScript1.2">
          function dummy() { return 0; }
        </script>
      </head>
      
      <body>
        <table>
          <!-- This code will output 5 .js-files -->
          <xsl:for-each select="header/scripts/src">
            <tr><td><xsl:value-of select="."/></td></tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

sitemap.xmap
<?xml version="1.0" encoding="UTF-8"?>

<map:sitemap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://apache.org/cocoon/sitemap/1.0
http://cocoon.apache.org/schema/sitemap/cocoon-sitemap-1.0.xsd"
             xmlns:map="http://apache.org/cocoon/sitemap/1.0">
  <!-- Components -->
  <map:components>
    <map:matchers default="wildcard"/>
    <map:selectors default="browser"/>
    <map:generators default="file"/>
    <map:transformers default="xslt"/>
    <map:readers default="resource"/>
    <map:serializers default="html">
      <map:serializer name="html" logger="sitemap.serializer.html"
mime-type="text/html; charset=utf-8" pool-grow="4" pool-max="32"
                      pool-min="4"
src="org.apache.cocoon.components.serializers.HTMLSerializer">
        <doctype-default>loose</doctype-default>
        <encoding>UTF-8</encoding>
      </map:serializer>
    </map:serializers> 
  </map:components>
  
  <!-- Definition of the control flow implementation -->
  <map:flow language="javascript">
    <map:script src="flow/event.js"/>
    <map:script src="flow/jobs.js"/>
    <map:script src="flow/session.js"/>
    <map:script src="flow/show.js"/>
  </map:flow>
  
  <map:pipelines>
    <!-- Pipeline for "root", e.g. "localhost:8888/webapp/" -->
    <map:pipeline>
      <map:match pattern="">
        <map:call function="intercept"/>
      </map:match>
      
      <!-- .kont URLs are generated by the Flow system for continuations
-->
      <map:match pattern="*.kont">
        <map:call continuation="{1}"/>
      </map:match>
      
      <map:match pattern="action_*">
        <map:call function="intercept">
          <map:parameter name="action" value="{1}"/>
        </map:call>
      </map:match>
      
      <map:match pattern="*.xml" internal-only="true">
        <map:generate type="jx" src="templates/{1}.xml"/>
        <map:transform src="styles/transformations/page.xslt"/>
        <map:serialize type="xhtml"/>
      </map:match>
      
      <!-- Server -->
      
      <map:match pattern="**favicon.png">
        <map:read src="img/ico/favicon.png"
mime-type="application/png"/>
      </map:match>
      
      <!-- Common -->
      <map:match pattern="**.css">
        <map:read src="{1}.css" mime-type="text/css"/>
      </map:match>
      
      <map:match pattern="**.js">
        <map:read src="{1}.js" mime-type="text/javascript"/>
      </map:match>
      
      <map:match pattern="**.gif">
        <map:read src="img/{1}.gif" mime-type="image/gif"/>
      </map:match>
      
      <map:match pattern="**.jpg">
        <map:read src="img/{1}.jpg" mime-type="image/jpg"/>
      </map:match>
      
      <map:match pattern="**.png">
        <map:read src="img/{1}.png" mime-type="image/png"/>
      </map:match>
      
      <!--<map:handle-errors>
        <map:generate src="templates/error.xml"/>
        <map:transform src="styles/transformations/page.xslt"/>
        <map:serialize type="xhtml"/>
      </map:handle-errors>-->

    </map:pipeline>
  </map:pipelines>
</map:sitemap>
-- 
View this message in context:
http://old.nabble.com/Cocoon-2.2-serialize-transform-only-parts-of-XSL-c
ontent-tp26319511p26319511.html
Sent from the Cocoon - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org