[Home] [By Thread] [By Date] [Recent Entries]
Hope the stylesheet below will help:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:key name="by-id" match="service" use="id" /> <xsl:template match="/">
<interactions>
<xsl:for-each select="//service[generate-id() =
generate-id(key('by-id', id)[1])]">
<service name="{name}" id="{id}">
<xsl:copy-of select="key('by-id', id)/../metric" />
</service>
</xsl:for-each>
</interactions>
</xsl:template></xsl:stylesheet> This when applied to XML: <x>
<session>
<service>
<name>somename</name>
<id>1</id>
</service>
<metric name="somemetric">value1</metric>
<metric name="anothermetric">value2</metric>
<metric name="andanothermetric">value3</metric>
</session>
<session>
<service>
<name>somename</name>
<id>1</id>
</service>
<metric name="somemetric">value4</metric>
<metric name="anothermetric">value5</metric>
<metric name="andanothermetric">value6</metric>
</session>
<session>
<service>
<name>anothername</name>
<id>2</id>
</service>
<metric name="somemetric">value7</metric>
<metric name="anothermetric">value8</metric>
<metric name="andanothermetric">value9</metric>
</session>
<session>
<service>
<name>anothername</name>
<id>2</id>
</service>
<metric name="somemetric">value10</metric>
<metric name="anothermetric">value11</metric>
<metric name="andanothermetric">value12</metric>
</session>
</x>Produces output: <?xml version="1.0" encoding="UTF-8"?>
<interactions>
<service name="somename" id="1">
<metric name="somemetric">value1</metric>
<metric name="anothermetric">value2</metric>
<metric name="andanothermetric">value3</metric>
<metric name="somemetric">value4</metric>
<metric name="anothermetric">value5</metric>
<metric name="andanothermetric">value6</metric>
</service>
<service name="anothername" id="2">
<metric name="somemetric">value7</metric>
<metric name="anothermetric">value8</metric>
<metric name="andanothermetric">value9</metric>
<metric name="somemetric">value10</metric>
<metric name="anothermetric">value11</metric>
<metric name="andanothermetric">value12</metric>
</service>
</interactions>On 8/30/06, Ian Wootten <I.M.Wootten@xxxxxxxxxxxxxxxx> wrote: I'm attempting to structure a complex xml structure to be represented in a more meaningful manner. I'm doing this within a xml transformer in Java. -- Regards, Mukul Gandhi http://gandhimukul.tripod.com
|

Cart



