|
Subject: Re: [xsl] Combining segments by matching attributes From: Martin Honnen <Martin.Honnen@xxxxxx> Date: Tue, 14 Jul 2009 13:01:53 +0200 |
<group> <text xml:id="A15"> <seg n="220.2">...</seg> <seg n="220.3">...</seg> (etc.) </text> <text xml:id="B15"> <seg n="220.2">...</seg> <seg n="220.3">...</seg> (etc.) </text> </group>
The texts may or may not have all the same segments (so text A may have seg[@n='223.1'] and text B may not, or vice versa). In addition the numbers are not unique to each segment (there may be several segs in a row with the same number).
Given this, I would like to generate a file that pulls together the like segments from each text, resulting in something that looks like this:
<app> <rdg wit="#A15"><seg n="220.2">...</seg></rdg> <rdg wit="#B15><seg n="220.2">...</seg></rdg> (etc.) </app> <app> <rdg wit="#A15"><seg n="220.3">...</seg></rdg> <rdg wit="#B15><seg n="220.3">...</seg></rdg> (etc.) </app> <app> <!-- for example, A15 lacks seg[@n='223.1'] --> <rdg wit="#B15"><seg n="223.1">...</seg></rdg> (etc.) </app>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<xsl:for-each-group select="group/text/seg" group-by="@n">
<app>
<xsl:apply-templates select="current-group()"/>
</app>
</xsl:for-each-group>
</xsl:template> <xsl:template match="seg">
<reg wit="#{../@xml:id}">
<xsl:copy-of select="."/>
</reg>
</xsl:template>Martin Honnen http://msmvps.com/blogs/martin_honnen/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Combining segments by matchin, Dot Porter | Thread | Re: [xsl] Combining segments by mat, Dot Porter |
| [xsl] Combining segments by matchin, Dot Porter | Date | Re: [xsl] Combining segments by mat, Dot Porter |
| Month |