[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Grouping over multiple files
Try replacing <xsl:copy-of select="."/> with <revenue source="{document-uri(/)}"> <xsl:value-of select="."/> </revenue> though document-uri will give you an absolute URI and you may want to cut it down. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Kevin Bird [mailto:kevin.bird@xxxxxxxxxxxxxxxxxxxxxxx] > Sent: 14 January 2006 14:24 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Grouping over multiple files > > Hello > > I am grouping <person> elements from four files (North, > South, East & West). > The grouping is working fine, but I would like to add a > source attribute to > the revenue elements to show which file they came from > (please see 'desired > output' section below. > > I have attached cut down versions of the input, along with the current > stylesheet and output. > > Thanks. > > -- > Kevin > > ------------ > North.xml > ------------ > > <sales> > <period id="October"> > <person> > <name>Peter</name> > <revenue>1000</revenue> > </person> > <person> > <name>Fred</name> > <revenue>2000</revenue> > </person> > <person> > <name>Alex</name> > <revenue>100</revenue> > </person> > <person> > <name>Barney</name> > <revenue>20</revenue> > </person> > </period> > </sales> > > ------------ > South.xml > ------------ > <sales> > <period id="October"> > <person> > <name>Peter</name> > <revenue>500</revenue> > </person> > <person> > <name>Barney</name> > <revenue>750</revenue> > </person> > </period> > </sales> > > ------------ > East.xml > ------------ > <sales> > <period id="October"> > <person> > <name>Peter</name> > <revenue>40</revenue> > </person> > <person> > <name>Fred</name> > <revenue>5000</revenue> > </person> > <person> > <name>Alex</name> > <revenue>100</revenue> > </person> > </period> > </sales> > > ------------ > West.xml > ------------ > <sales> > <period id="October"> > <person> > <name>Fred</name> > <revenue>400</revenue> > </person> > <person> > <name>Alex</name> > <revenue>2000</revenue> > </person> > </period> > </sales> > > ------------ > Sales.xsl > ------------ > <xsl:stylesheet version="2.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output indent="yes" method="xml"/> > > <xsl:variable name="northsales" > select="document('north.xml')/sales/period/person"/> > <xsl:variable name="southsales" > select="document('south.xml')/sales/period/person"/> > <xsl:variable name="eastsales" > select="document('east.xml')/sales/period/person"/> > <xsl:variable name="westsales" > select="document('west.xml')/sales/period/person"/> > > <xsl:template match="/"> > <combinedsales> > <xsl:for-each-group select="$northsales, > $southsales, $eastsales, $westsales" group-by="name"> > <person> > <xsl:copy-of > select="(current-group()/name)[1]"/> > <xsl:for-each > select="current-group()/revenue"> > <xsl:copy-of > select="."/> > </xsl:for-each> > </person> > </xsl:for-each-group> > </combinedsales> > </xsl:template> > </xsl:stylesheet> > > ------------ > Current Output > ------------ > <combinedsales> > <person> > <name>Peter</name> > <revenue>1000</revenue> > <revenue>500</revenue> > <revenue>40</revenue> > </person> > <person> > <name>Fred</name> > <revenue>2000</revenue> > <revenue>5000</revenue> > <revenue>400</revenue> > </person> > <person> > <name>Alex</name> > <revenue>100</revenue> > <revenue>100</revenue> > <revenue>2000</revenue> > </person> > <person> > <name>Barney</name> > <revenue>20</revenue> > <revenue>750</revenue> > </person> > </combinedsales> > > ------------ > Desired Output > ------------ > <combinedsales> > <person> > <name>Peter</name> > <revenue source="north.xml">1000</revenue> <!-- add > @source to > indicate file origin --> > <revenue source="south.xml">500</revenue> > <revenue source="east.xml">40</revenue> > </person> > <person> > <name>Fred</name> > <revenue source="north.xml">2000</revenue> > <revenue source="east.xml">5000</revenue> > <revenue source="west.xml">400</revenue> > </person> > <person> > <name>Alex</name> > <revenue source="north.xml">100</revenue> > <revenue source="east.xml">100</revenue> > <revenue source="west.xml">2000</revenue> > </person> > <person> > <name>Barney</name> > <revenue source="north.xml">20</revenue> > <revenue source="south.xml">750</revenue> > </person> > </combinedsales>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|