numbering across elements

M

Mike Dickens

hi,
i have a query regarding numbering one set of elements as filtered by another set.
eg if i have

<?xml version="1.0" encoding="ISO-8859-1"?>
<a>
<b i="1" j="aaaa"/>
<b i="2" j="bbbb"/>
<b i="3" j="aaaa"/>
<c i="1" j="xxxx"/>
<c i="2" j="yyyy"/>
<c i="3" j="zzzz"/>
</a>

and i want a numbered c/@j with the same @i as a, where a/@j = "aaaa", ie i get

<x>
<y i="1" j="xxxx"/>
<y i="2" j="zzzz"/>
</x>

(note the @i sequence is 1,2 not 1,3)

what would the xslt look like to do this?

thanks,
mike.
 
M

Marrow

Hi,

Try something like...

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput method="xml" indent="yes"/>

<xsl:key name="kLookupB" match="b[@j='aaaa']" use="@i"/>

<xsl:template match="a">
<x>
<xsl:for-each select="c[key('kLookupB',@i)]">
<y i="{position()}" j="{@j}"/>
</xsl:for-each>
</x>
</xsl:template>
</xsl:stylesheet>


HTH
Marrow
http://www.marrowsoft.com - home of Xselerator (XSLT IDE and debugger)
http://www.topxml.com/Xselerator
 
M

Mike Dickens

ah yes, this makes sense now.

thanks for the help,
mike.

Marrow said:
Hi,

Try something like...

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput method="xml" indent="yes"/>

<xsl:key name="kLookupB" match="b[@j='aaaa']" use="@i"/>

<xsl:template match="a">
<x>
<xsl:for-each select="c[key('kLookupB',@i)]">
<y i="{position()}" j="{@j}"/>
</xsl:for-each>
</x>
</xsl:template>
</xsl:stylesheet>


HTH
Marrow
http://www.marrowsoft.com - home of Xselerator (XSLT IDE and debugger)
http://www.topxml.com/Xselerator


Mike Dickens said:
hi,
i have a query regarding numbering one set of elements as filtered by another set.
eg if i have

<?xml version="1.0" encoding="ISO-8859-1"?>
<a>
<b i="1" j="aaaa"/>
<b i="2" j="bbbb"/>
<b i="3" j="aaaa"/>
<c i="1" j="xxxx"/>
<c i="2" j="yyyy"/>
<c i="3" j="zzzz"/>
</a>

and i want a numbered c/@j with the same @i as a, where a/@j = "aaaa", ie i get

<x>
<y i="1" j="xxxx"/>
<y i="2" j="zzzz"/>
</x>

(note the @i sequence is 1,2 not 1,3)

what would the xslt look like to do this?

thanks,
mike.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top