Subject: Re: [xsl] Parsing nodes with different depths in XML simultaneously From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Wed, 13 Feb 2008 10:04:42 +0000 |
On 13/02/2008, Ravi Roy <ravi.aroy@xxxxxxxxx> wrote: > Hi, > > I want parse nodes with different depths in XML, but I am not sure how > to achieve this, for example I have following test.xml : > > <?xml version="1.0" encoding="UTF-8"?> > <root> > <sub1> > <sub2> > <sub3> > <sub4 name="xyz" /> > <sub5 name="abc" /> > <sub6 name="jkl" /> > <sub7 name="stu" /> > </sub3> > </sub2> > </sub1> > <suite name="xyz.123" value="20" /> > <suite name="567.abc" value="10" /> > <suite name="345.jkl" value="50" /> > <suite name="stu.578" value="40" /> > </root> > > I am able to make the table like the following, but value in the table > would be based on the match in suite name, like if string sub4 name > matches the string in suite name then in the following table I want to > make the entry of 20 against sub4 : > > ------------------------------------- > | sub4 | sub5 |sub6 |sub7| > |---------|---------|--------|-------| > | | | | | > | | | | | > > > Does someone know how to achieve this in XSL ? One way is to use a key: <xsl:key name="suite-by-name" match="suite" use="translate(@name, '1234567890.',''')"/> with <xsl:template match="sub4|sub5..."> <xsl:value-of select="key('suite-by-name', @name)/@value"/> The translate() part of the key ensures only the a-z characters are used - you might need to adjust this if your real world XML doesn't reflect the example. cheers -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Parsing nodes with different , Ravi Roy | Thread | [xsl] Check this out Toubl Contract, paul.kholer paul.kho |
[xsl] Preserving space, Mathieu Malaterre | Date | RE: [xsl] Preserving space, Michael Kay |
Month |