Re: [xsl] XML transformation based on parameters

Subject: Re: [xsl] XML transformation based on parameters
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 15 Apr 2009 10:25:18 +0100
> I don't know how to parse the xml file inside xslt and invoke the
> transformation for each parameter...

do you want a separate output for each parameter, or one output that
has all the replacements combined?


why have this

 <xsl:template match="*[local-name()='param']">

which is likely to be slower to execute and harder to read than

 <xsl:template match="param">


Assuming you want to do all the replacements together then have a file
rep.xml that looks like

<replace>
  <r p="id" v="newvalue"/>
  <r p="id2" v="newvalue2"/>
  <r p="id3" v="newvalue3"/>
</replace>

Then 

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

 <xsl:param name="rep" select="document('rep.xml')"/>


 <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 = $rep/replace/@p">
      <xsl:value-of select="$rep/replace[@p=current()/@name]/@v"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="."/>
    </xsl:otherwise>
  </xsl:choose>

 </xsl:template>
</xsl:stylesheet>

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread