This is the second copy of that mail (the first was not delivered).

> Hello group,
> 
> I created a minimal webapp and found the following remark from Geoff Howard in 
> [1 href="http://wiki.cocoondev.org/Wiki.jsp?page=CreateMinimalWebapp";] 
> CreateMinimalWebapp:
> 2. edit lib/jars.xml to comment out/remove all the optional jars except the ones 
> noted above
>     1. could be done with an xsl transform
> [/1]
> 
> I wrote 2 XSLT- files that are working fine to do the job, but I would like to have 
> more "intelligence" (please see below):
> The first xslt (jars2exclude.xsl [2]) checks the <lib> element  form the jars.xml 
> whether it starts with  'optional/' (the dir to exclude files from).  If so they 
> will be labeled "2exclude" (there are exceptions - you will see later).
> <xsl:when test="starts-with(text(), 'optional/')"> [compare 2]
> The jars.xml looks like this:
> ...
> <file>
>     <title/>
>     <description/>
>     <used-by/>
>     <lib>core/jvm1.2/excalibur-datasource-vm12-20021121.jar</lib>
>     <homepage/>
> </file>
> ...
> The example file would not meet the criteria. The following would:
> <file>
> ...
> <lib>optional/servlet_2_2.jar</lib>
> ...
> <file>
> But this certain file has to be left untouched [1] - this is one of n exceptions (2 
> are mentioned in [1], but I need more<-n exception). This is be done with 
> <xsl:choose><xsl:when>[2]. Here is an example of an exception:
> <xsl:when test="substring-after(text(), 'optional/')='servlet_2_2.jar'">
> <xsl:value-of select="."/>
> </xsl:when>
> 
> The result of the transformation [2] will look like this:
>     <file>
>         <title>XML Catalog Entity Resolver</title>
> ...
>         <lib>2exclude</lib>
> ...
>     </file>
>     <file>
>         <title>Servlet API</title>
> ...
>         <lib>optional/servlet_2_2.jar</lib>
> ...
>     </file>
> 
> Transforming this result with exclude2jars.xsl [3] will result in the new jar.xml 
> (without the exclusions, but with the exceptions).
> 
> Ok, that is nice but I would prefer not to hard code the exceptions, e.g.:
> substring-after(text(), 'optional/')='servlet_2_2.jar'
>                                |------------|   |--------------------|
> |---| hard coded exception (e.g. |optional/|
> 
> I prefer to use something like jars2exclude.xml [4] where I declare the |---| hard 
> coded exceptions. 
> ...
>               <dir2exclude>optional/</dir2exclude>
>               <except>servlet_2_2.jar</except>
> ...
> 
> ..but how can I do that?
> 
> Have a look at sitemap.snippet [5] to install it on your local cocoon version.
> 
> Any help and any ideas welcome.
> 
> King regards
> Thorsten
> 
> [1] http://wiki.cocoondev.org/Wiki.jsp?page=CreateMinimalWebapp
> [2]  jars2exclude.xsl:
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>     <xsl:template match="/">
>         <xsl:apply-templates/>
>     </xsl:template>
>     <xsl:template match="jars">
>         <jars>
>             <xsl:apply-templates select="file"/>
>         </jars>
>     </xsl:template>
>     <xsl:template match="file">
>         <file>
>             <xsl:apply-templates/>
>         </file>
>     </xsl:template>
>     <!--================Parsing of value===============================-->
>     <xsl:template match="title">
>         <title>
>             <xsl:value-of select="."/>
>         </title>
>     </xsl:template>
>     <xsl:template match="description">
>         <description>
>             <xsl:value-of select="."/>
>         </description>
>     </xsl:template>
>     <xsl:template match="used-by">
>         <used-by>
>             <xsl:value-of select="."/>
>         </used-by>
>     </xsl:template>
>     <!--==Excluding dir without the exceptions==-->
>     <xsl:template match="lib">
>         <lib>
>     <xsl:choose>
>         <xsl:when test="starts-with(text(), 'optional/')">
>             <xsl:choose>
>                 <xsl:when test="substring-after(text(), 
> 'optional/')='fop-0.20.4.jar'">
>                     <xsl:value-of select="."/>> 
>                 </xsl:when>
>                 <xsl:when test="substring-after(text(), 
> 'optional/')='servlet_2_2.jar'">
>                     <xsl:value-of select="."/>
>                 </xsl:when>
>                 <xsl:when test="substring-after(text(), 
> 'optional/')='commons-jxpath-1.0.jar'">
>                     <xsl:value-of select="."/>
>                 </xsl:when>
>                 <xsl:otherwise>2exclude</xsl:otherwise>
>             </xsl:choose>
>         </xsl:when>
>         <xsl:otherwise>
>             <xsl:value-of select="."/>
>         </xsl:otherwise>
>     </xsl:choose>
>         </lib>
>     </xsl:template>
>     <xsl:template match="homepage">
>         <homepage>
>             <xsl:value-of select="."/>
>         </homepage>
>     </xsl:template>
> </xsl:stylesheet>
> [/2] 
> [3]exclude2jars.xsl:
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
>       <xsl:template match="/">
>       <xsl:apply-templates/>
>       </xsl:template>
>       <xsl:template match="jars">
>       <xsl:comment>
>   Add an entry for each jar file used by Cocoon, following the other entries
> 
>   Author: Ovidiu Predescu "[EMAIL PROTECTED]"
>   Date: May 23, 2002
>   
> jars2exclude have been used.
> Author: Thorsten Scherler "[EMAIL PROTECTED]"
> Date: March 06, 2003
> This is the modified jars.xml.
>               </xsl:comment>
>               <jars>
>               <xsl:copy-of select="file[lib!='2exclude']"/>
>               </jars>
>       </xsl:template>
> </xsl:stylesheet>
> [/3]
> [4] jars2exclude.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <!--
>   Add an entry for each jar file which should be excluded  by Cocoon!
> 
>   Author: Thorsten Scherler "[EMAIL PROTECTED]"
>   Date: March 05, 2003
>   
>               -->
> <jars2exclude>
>       <exclude>
>               <dir2exclude>optional/</dir2exclude>
>               <except>fop-0.20.4.jar</except>
>               <except>commons-jxpath-1.0.jar</except>
>               <except>servlet_2_2.jar</except>
>       </exclude>
> </jars2exclude>
> [/4]
> [5]sitemap.snippet:
>               <map:pipeline>
>                       <!-- Step 1: Label lib which should be excluded with 
> "2exclude", leave exceptions untouched. -->
>                       <map:match pattern="2Xclude.xml">
>                               <map:generate src="xml/jars.xml"/>
>                               <map:transform src="xsl/jars2exclude.xsl"/>
>                               <map:serialize type="xml"/>
>                       </map:match>
>                       <!-- Step 2: Copy all elements except those which are labeled 
> "2exclude"-->
>                       <map:match pattern="exclude">
>                               <map:generate src="cocoon:/2Xclude.xml"/>
>                               <map:transform src="xsl/exclude2jars.xsl"/>
>                               <map:serialize type="xml"/>
>                       </map:match>
>               </map:pipeline>
> 
> 
> Mit freundlichem Gruss,
> 
> Thorsten Scherler
> Marketing / Telefonmarketing
> 
> Weidmüller GmbH & Co.
> P.O. Box 2807
> 33058 Paderborn
> Tel.:+ 49 - 5252-960-350
> Fax:+ 49 - 5252-960-116
> eMail: [EMAIL PROTECTED]
> http://www.weidmueller.de
> 
> 

Reply via email to