Subject: [xsl] Re: HOWTO : Lookup tables From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Fri, 22 Jun 2001 03:40:25 -0700 (PDT) |
Benoit Aumars wrote: > > I'm looking for a sample code to transform one xml file into another one > using a 'lookup tables' xml file. > Suppose I have this before.xml : > > <?xml version="1.0"?> > <in> > <A code1="01" code2="Hello" /> > <A code1="02" code2="world" /> > </in> > > and I want to transform it into after.xml : > <?xml version="1.0"?> > <in> > <Label1>01</Label1> > <Label2>Hello</Label2> > <Label1>02</Label1> > <Label2>world</Label2> > </in> > using this 'lookup tables' xml file ( something like this / similar to this > ) : > <?xml version="1.0"?> > <lookup> > <abbr>code1</abbr><name>Label1</name> > <abbr>code2</abbr><name>Label2</name> > </lookup> > > Can someone help me out please ? The following stylesheet produces your desired output when applied on your xml source: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes" omit-xml-declaration="yes"/> <xsl:key name="kLookup" match="name" use="preceding-sibling::abbr[1]"/> <xsl:template match="/"> <in> <xsl:apply-templates select="in/A/@*"/> </in> </xsl:template> <xsl:template match="A/@*"> <xsl:variable name="input" select="."/> <xsl:for-each select="document('lookup.xml')"> <xsl:for-each select="key('kLookup', name($input))"> <xsl:element name="{.}"> <xsl:value-of select="$input"/> </xsl:element> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> Cheers, Dimitre Novatchev. __________________________________________________ Do You Yahoo!? Get personalized email addresses from Yahoo! Mail http://personal.mail.yahoo.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Re: creating mutiple columns, Dimitre Novatchev | Thread | [xsl] BreakIterator in XSLT, Dudley, Mark |
Re: [xsl] XML to XML, Rob Lugt | Date | RE: [xsl] XML to XML, m . vanrootseler |
Month |