Subject: RE: [xsl] XML transformation based on parameters From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 15 Apr 2009 10:21:32 +0100 |
Since the parameters are global they can have only one value for the duration of the transformation. You would have to rewrite the stylesheet to use local parameters, i.e. xsl:param appearing within an xsl:template. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Emiliano Pecis [mailto:emiliano.pecis@xxxxxxxxx] > Sent: 15 April 2009 10:16 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] XML transformation based on parameters > > Thanks to you, I've been able to to get my xslt working. > I'd like to add a new enhancement, if it is possible. > > Currently, I invoke the same xslt three or more times passing > different parameters. I'd like to pass an XML file as > parameter only one with all needed parameters... > > I don't know how to parse the xml file inside xslt and invoke > the transformation for each parameter... > > Have you any hints/link to point me? > > Following the code I have to start from... I will have 3 or > more "p" values and 3 or more relative "v" values. > > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:param name="p" select="'id'"/> > <xsl:param name="v" select="'newvalue'"/> > > <xsl:template match="@* | node()"> > <xsl:copy> > <xsl:apply-templates select="@* | node()"/> > </xsl:copy> > </xsl:template> > > <xsl:template match="*[local-name()='param']"> > > <xsl:choose> > <xsl:when test="@name = $p"> > <xsl:value-of select="$v"/> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="."/> > </xsl:otherwise> > </xsl:choose> > > </xsl:template> > </xsl:stylesheet> > > best regards, > e. > > > 2009/4/14 Emiliano Pecis <emiliano.pecis@xxxxxxxxx>: > > Thanks Sam! I needed your XSLT1.0 version... > > > > e. > > > > 2009/4/14 Sam Byland <shbyland@xxxxxxxxxxx>: > >> Emiliano, > >> > >> if you're limited to XSLT1, then try matching on "param" and place > >> the code associated with "@name = $p" in the template > body. Something like: > >> > >> <xsl:stylesheet version="1.0" > >> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > >> > >> <xsl:param name="p" select="id"/> > >> <xsl:param name="v" select="newvalue"/> > >> > >> <xsl:template match="@* | node()"> > >> <xsl:copy> > >> <xsl:apply-templates select="@* | node()"/> > >> </xsl:copy> > >> </xsl:template> > >> > >> <xsl:template match="param"> > >> > >> <xsl:choose> > >> <xsl:when test="@name = $p"> > >> <xsl:value-of select="$v"/> > >> </xsl:when> > >> <xsl:otherwise> > >> <xsl:value-of select="."/> > >> </xsl:otherwise> > >> </xsl:choose> > >> > >> </xsl:template> > >> > >> </xsl:stylesheet> > >> > >> ...sam
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XML transformation based , Emiliano Pecis | Thread | Re: [xsl] XML transformation based , David Carlisle |
Re: [xsl] XML transformation based , Emiliano Pecis | Date | Re: [xsl] XML transformation based , David Carlisle |
Month |