Subject: Re: [xsl] Ordering by child node attribute From: Markus Abt <abt@xxxxxxxx> Date: Tue, 27 Dec 2011 21:30:26 +0100 |
Hi, start with all Class elements without a SuperClass attribute, then use recursion using the SubClass attribut: <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="root"> <root> <xsl:apply-templates select="Class[not(SuperClass)]" /> </root> </xsl:template> <xsl:template match="Class"> <xsl:copy-of select="."/> <xsl:apply-templates select="../Class[@code=current()/SubClass/@code]" /> </xsl:template> </xsl:stylesheet> Kind regards, Markus ---------- Von: Gian Paolo Bernardini - TeleTu Gesendet: Dienstag, 27. Dezember 2011 14:40 An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Betreff: [xsl] Ordering by child node attribute Hi all, I'd like to order an xml from this form: <?xml version="1.0" encoding="UTF-8"?> <root> <Class code="B" kind="component"> <SubClass code="b1"/> <SubClass code="b2"/> </Class> <Class code="b1" kind="chapter"> <SuperClass code="B"/> <SubClass code="b110-b139"/> </Class> <Class code="b2" kind="chapter"> <SuperClass code="B"/> <SubClass code="b210-b229"/> </Class> <Class code="b110-b139" kind="block"> <SuperClass code="b1"/> <SubClass code="b110"/> </Class> <Class code="b210-b229" kind="block"> <SuperClass code="b2"/> <SubClass code="b210"/> </Class> <Class code="b110" kind="fourdigit"> <SuperClass code="b110-b139"/> </Class> <Class code="b210" kind="fourdigit"> <SuperClass code="b210-b229"/> </Class> </root> to this form: <?xml version="1.0" encoding="UTF-8"?> <root> <Class code="B" kind="component"> <SubClass code="b1"/> <SubClass code="b2"/> </Class> <Class code="b1" kind="chapter"> <SuperClass code="B"/> <SubClass code="b110-b139"/> </Class> <Class code="b110-b139" kind="block"> <SuperClass code="b1"/> <SubClass code="b110"/> </Class> <Class code="b110" kind="fourdigit"> <SuperClass code="b110-b139"/> </Class> <Class code="b2" kind="chapter"> <SuperClass code="B"/> <SubClass code="b210-b229"/> </Class> <Class code="b210-b229" kind="block"> <SuperClass code="b2"/> <SubClass code="b210"/> </Class> <Class code="b210" kind="fourdigit"> <SuperClass code="b210-b229"/> </Class> </root> I can't use 'sort' or 'grouping-by' because it returns for example b110 before b110-b139, which is not what I'm searching for. If anyone has an idea it would be glad :) Thanks in advance and happy new year PS. currently I'm using SaxonHE9-4-0-1J, sometimes Xalan. I've no constraints on the XSL versions.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Ordering by child node at, Marc | Thread | [xsl] Using "except" where some nod, Costello, Roger L. |
Re: [xsl] From filepaths to XML hie, Dimitre Novatchev | Date | [xsl] Using "except" where some nod, Costello, Roger L. |
Month |