[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] How to sort sibling elements based on attribute of chi
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
|
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
|