Subject: Re: [xsl] How to sort sibling elements based on attribute of child element From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Tue, 07 Jul 2009 18:30:35 -0400 |
Thanks for the solution. The key concept that I learned was how to select and output the preceding and following siblings of <Annotation>.
I omitted a key bit of information in my example: <Root> should have been named <Parent>, since the parent element of Annotation is not the document root element:
<Root> <Junk>junk</Junk> <Parent> <Stuff>stuff</Stuff> <Annotation> <Comment Priority="1">my first comment</Comment> </Annotation> <Annotation> <Comment Priority="3">my third comment</Comment> </Annotation> <Annotation> <Comment Priority="2">my second comment</Comment> </Annotation> <Bother>bother</Bother> </Parent> </Root>
As a consequence, I didn't to use this template to produce output when there is no Annotation:
<xsl:template match="/*[not(Annotation)]" priority="2"> <xsl:apply-templates/> </xsl:template>
Instead, I put a test for <Annotation> into the template - which might not be the most elegant solution, but it works:
<xsl:template select="Parent"> <xsl:choose> <xsl:when test="Annotation"> <xsl:apply-templates select="Annotation[1]/preceding-sibling::*"/> <xsl:apply-templates select="Annotation"> <xsl:sort select="*/@Priority"/> </xsl:apply-templates> <xsl:apply-templates select="Annotation[last()]/following-sibling::*"/> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="*"/> </xsl:otherwise> </xsl:choose> </xsl:template>
Cheers, Wendell
====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] How to sort sibling elements , Philip Steiner | Thread | [no subject], Unknown |
[xsl] How to sort sibling elements , Philip Steiner | Date | [no subject], Unknown |
Month |