Subject: Re: 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.
________________________________________________________________________
|