|
Subject: RE: [xsl] Replace values based on external files From: <Jarno.Elovirta@xxxxxxxxx> Date: Fri, 14 Jan 2005 12:18:26 +0200 |
Hi,
> I need to implement a XSL that will replace text values in file1.xml
> based on replacement information in file2.xml.
>
> file2.xml provides an XPath that points to an attribute /
> element value
> and a replacement value. The XML has the form of:
>
> <mapping>
> <!-- should replace @attribute1 value that are 'foo' of
> all element1
> elements in file1.xml with 'bar'-->
> <replace>
> <xpath>//element1/@attribute1[.='foo']</xpath>
> <with>bar</with>
> </replace>
> <replace>
> ... <!-- other replacement operations -->
> </replace>
> ...
> </mapping>
>
> Is there an easy way to dynamically generate replacement
> instructions in
> my XSL. I thought of extracting replacement information from file2.xml
> with the document function.
Either run file2.xml through
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axsl="http://www.w3.org/1999/XSL/Transform/alias">
<xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
<xsl:template match="mapping">
<axsl:stylesheet version="1.0">
<xsl:for-each select="replace">
<axsl:template match="{xpath}">
<axsl:attribute name="{{name()}}">
<xsl:value-of select="with"/>
</axsl:attribute>
</axsl:template>
</xsl:for-each>
<axsl:template match="@* | node()">
<axsl:copy>
<axsl:apply-templates select="@* | node()"/>
</axsl:copy>
</axsl:template>
</axsl:stylesheet>
</xsl:template>
</xsl:stylesheet>
and then process file1.xml with the generated stylesheet. Or use Mike's
solution that used the extension function.
Cheers,
Jarno
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Replace values based on e, Robert Soesemann | Thread | RE: [xsl] Replace values based on e, Michael Kay |
| RE: [xsl] Replace values based on e, Robert Soesemann | Date | RE: [xsl] sort to categories, Markus Hanel |
| Month |