[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Ordered union of sequences
Given this input:
-------------------------------------- <?xml version="1.0" encoding="utf-8"?> <foo> <seq><k/><o/><p/><c/><f/></seq> <seq><d/><e/><f/><g/></seq> <seq><k/><f/><z/></seq> <seq><a/><b/><c/><d/></seq> </foo> -------------------------------------- applying this XSLT: -------------------------------------- <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="URN:my" version="2.0" > <xsl:output method="xml" indent="yes" />
<xsl:template match="foo"> <xsl:copy> <xsl:for-each-group select="seq/*" group-by="name(.)" > <xsl:sort select="my:sortkey(.)"/> <xsl:element name="{current-grouping-key()}" /> </xsl:for-each-group> </xsl:copy> </xsl:template> <xsl:function name="my:sortkey" as="xs:integer?"> <xsl:param name="input" as="element(*)" /> <xsl:variable name="preceding-siblings" select="$input/../../seq/*[name() = name($input)]/preceding-sibling::*[1]" as="element(*)*" /> <xsl:sequence select="if ($preceding-siblings) then max(for $ps in $preceding-siblings return my:sortkey($ps)) + 1 else 1"/> </xsl:function> </xsl:stylesheet> -------------------------------------- I receive: -------------------------------------- <foo> <k/> <a/> <o/> <b/> <p/> <c/> <d/> <e/> <f/> <g/> <z/> </foo> -------------------------------------- Does that make sense? If I include <o/> at the other position, i.e., <seq><k/><f/><z/><o/></seq>, I receive "Too many nested function calls. May be due to infinite recursion." as expected. Gerrit On 08.04.2010 16:38, Michael Kay wrote: There is an arbitrary number of sequences, sometimescontaining itemswith the same name:
Registergericht / Commercial Register: Amtsgericht Leipzig Registernummer / Registration Number: HRB 24930 Geschdftsf|hrer: Gerrit Imsieke, Svea Jelonek, Thomas Schmidt, Dr. Reinhard Vvckler
|
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
|