[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] ordering of output in menu rendering system
Hello, I'm new to XSL and need some help with ordering of output. I'm trying to describe a navigational menu and then render it according to which item is selected. The attached XML and XSL source files are quite close to what I want except for the ordering. The output I'm aiming for is: ??? TOP ??? MENU ??? tit1 ??? tit2 ??? Pp tit23 ??? Pp Pp tit231 ??? Pp Pp SELECTEDtit232 ??? tit3??????????? <-----*** ??? tit4 but the output I'm getting is: ??? TOP ??? MENU ??? tit1 ??? tit3??????????? <-----*** ??? tit2 ??? Pp tit23 ??? Pp Pp tit231 ??? Pp Pp SELECTEDtit232 ??? tit4 (note the out-of-order 'tit3' title). Can someone please explain why this is happening, and what I need to do to fix it!..... Also, on the same theme, Ideally I would like to say in one xml document: 'this page relates to the menu item x', and separately in an XSL stylesheet I would like to describe the menu and process it according to the menu that was selected in the xml source. I haven't tried this yet, but I'm presuming I can do something like compare the node string-value in the xml with the menu items and determine which matches and continue from there. If anyone would like to offer an example of how to do this I would be grateful! :) - Tushar. ------------------------------------------------------------------- <?xml version="1.0"?> <?xml-stylesheet href="t9.xsl" type="text/xsl"?> <?cocoon-process type="xslt"?> <page> <menu> ?<item> <title>tit1</title> </item> ?<item> <title>tit2</title> ? <item><title>tit21</title></item> ? <item><title>tit22</title></item> ? <item><title>tit23</title> ?? <item><title>tit231</title></item> ?? <selected-item><title>SELECTEDtit232</title> </selected-item> ? </item> ? <item><title>tit24</title> ?? <item><title>tit241</title></item> ?? <item><title>tit242</title></item> ? </item> ? <item><title>tit25</title></item> ? <item><title>tit26</title></item> ?</item> ?<item> <title>tit3</title> ? <item><title>tit31</title></item> ? <item><title>tit32</title></item> ?</item> ?<item> <title>tit4</title> ? <item><title>tit41</title></item> ? <item><title>tit42</title></item> ?</item> </menu> </page> ------------------------------------------------------------------- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="page"> <html><head></head><body>TOP<xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="menu"> ?<p>MENU</p> ?<xsl:apply-templates select="descendant::selected-item | item[not(descendant::selected-item)]"/> </xsl:template> <xsl:template match="selected-item"> ?<xsl:apply-templates select="ancestor::item"/> ?<xsl:apply-templates select="preceding-sibling::item"/> ?<p><font color="red"> ? <xsl:call-template name="indent"> ?? <xsl:with-param name="level" select="count(ancestor::item)"/> ? </xsl:call-template> ?<xsl:value-of select="title"/></font></p> ?<xsl:apply-templates select="child::item"/> ?<xsl:apply-templates select="following-sibling::item"/> </xsl:template> <xsl:template match="item"> <p> ?<xsl:call-template name="indent"> ?? <xsl:with-param name="level" select="count(ancestor::item)"/> ?</xsl:call-template> ?<xsl:apply-templates select="title"/></p> </xsl:template> <xsl:template match="title"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="*"> X: <xsl:apply-templates/> </xsl:template> <xsl:template name="indent"> <xsl:param name="level"/> ? <xsl:if test="$level > 0"> ?? Pp ?? <xsl:call-template name="indent"> ??? <xsl:with-param name="level" select="$level - 1"/> ?? </xsl:call-template> ? </xsl:if> </xsl:template> </xsl:stylesheet> Best Regards, Tushar. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|