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 > >