Subject: [xsl] How to sort sibling elements based on attribute of child element From: Philip Steiner <redveedub@xxxxxxxxx> Date: Tue, 7 Jul 2009 12:49:58 -0700 |
Wendell, 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> Thanks again for your help! -- Philip
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Continuous Document Flow, G. Ken Holman | Thread | Re: [xsl] How to sort sibling eleme, Wendell Piez |
Re: [xsl] Maximum recursion depth e, bryan rasmussen | Date | Re: [xsl] How to sort sibling eleme, Wendell Piez |
Month |