[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] Combining segments by matching attributes
Subject: Re: [xsl] Combining segments by matching attributes From: Dot Porter <dot.porter@xxxxxxxxx> Date: Tue, 14 Jul 2009 13:30:30 +0100 |
This works perfectly. Thank you! Dot On Tue, Jul 14, 2009 at 12:01 PM, Martin Honnen<Martin.Honnen@xxxxxx> wrote: > Dot Porter wrote: > >> <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> > > Here is an XSLT 2.0 solution: > > <xsl:stylesheet > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="2.0"> > > <xsl:output method="xml" indent="yes"/> > > <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> > > </xsl:stylesheet> > > > > > -- > > Martin Honnen > http://msmvps.com/blogs/martin_honnen/ > > -- *~*~*~*~*~*~*~*~*~*~* Dot Porter (MA, MSLS) Metadata Manager Digital Humanities Observatory (RIA), Regus House, 28-32 Upper Pembroke Street, Dublin 2, Ireland -- A Project of the Royal Irish Academy -- Phone: +353 1 234 2444 Fax: +353 1 234 2400 http://dho.ie Email: dot.porter@xxxxxxxxx *~*~*~*~*~*~*~*~*~*~*
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Combining segments by mat, Martin Honnen | Thread | Re: [xsl] Combining segments by mat, C. M. Sperberg-McQue |
Re: [xsl] Combining segments by mat, Martin Honnen | Date | Re: [xsl] Combining segments by mat, C. M. Sperberg-McQue |
Month |
Keywords