This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: How to form correct structure


David,
Have a look ar the dirtoxml stylesheet in the utilities section of my
site or the how to do this in the tutorial section.

Ciao Chris

XML/XSL Portal
http://www.bayes.co.uk/xml


> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com 
> [mailto:owner-xsl-list@lists.mulberrytech.com] On Behalf Of 
> David O Baldwin
> Sent: 10 September 2001 16:36
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] How to form correct structure
> 
> 
> I have a question about how to form the correct structure of 
> nodes in my result set.
> 
> I have an xml file which represents a set of Menu items.
> I am attempting to transform each Menu node into an HTML DIV.
> 
> My problem is that for each branch of the menu I need to 
> contain the rest of the entire menu in a further DIV.
> 
> A simplified version of the XML is as follows:
> (The Description of each Menu reflects its level in the node set)
> 
> <?xml version="1.0"?>
> <Menu>
> 	<Menu Description="menuOne">
> 		<Menu Description="menuOneOne">
> 		</Menu>
> 		<Menu Description="menuOneTwo">
> 			<Menu Description="menuOneTwoOne">
> 			</Menu>
> 		</Menu>
> 		<Menu Description="menuOneThree">
> 		</Menu>
> 	</Menu>
> 	<Menu Description="menuTwo">
> 		<Menu Description="menuTwoOne">
> 		</Menu>
> 	</Menu>
> </Menu>
> 
> 
> 
> A simplified version of the XSL is as follows:
> 
> <xsl:template match="/">
> 	<xsl:apply-templates select="Menu"/>
> </xsl:template>
> 
> <xsl:template match="Menu">
> 	<xsl:variable name="MenuID">menu<xsl:number 
> level="multiple" count="Menu" format="1_1"/></xsl:variable>
> 	<DIV>
> 		<xsl:attribute name="ID">
> 			<xsl:value-of select="$MenuID"/>
> 		</xsl:attribute>
> 		<xsl:value-of select="@Description"/>
> 	</DIV>
> 	<xsl:if test="Menu">
> 		<xsl:apply-templates select="Menu"/>
> 		<DIV>
> 			<xsl:attribute 
> name="ID">Block_<xsl:value-of select="$MenuID"/></xsl:attribute>
> 		</DIV>
> 	</xsl:if>
> </xsl:template>
> 
> The resulting output is as follows
> 
> <DIV ID="menu"></DIV>
> <DIV ID="menu_1">menuOne</DIV>
> <DIV ID="menu_1_1">menuOneOne</DIV>
> <DIV ID="menu_1_2">menuOneTwo</DIV>
> <DIV ID="menu_1_2_1">menuOneTwoOne</DIV>
> <DIV ID="Block_menu_1_2">
> </DIV>
> <DIV ID="menu_1_3">menuOneThree</DIV>
> <DIV ID="Block_menu_1">
> </DIV>
> <DIV ID="menu_2">menuTwo</DIV>
> <DIV ID="menu_2_1">menuTwoOne</DIV>
> <DIV ID="Block_menu_2">
> </DIV>
> <DIV ID="Block_menu">
> </DIV>
> 
> However, the desired output is to have the 'Block' DIVs 
> surrounding the rest of the menu as follows, with the order 
> of the menu DIVs remaining the same:
> 
> <DIV ID="menu"></DIV>
> <DIV ID="menu_1">menuOne</DIV>
> <DIV ID="menu_1_1">menuOneOne</DIV>
> <DIV ID="menu_1_2">menuOneTwo</DIV>
> <DIV ID="menu_1_2_1">menuOneTwoOne</DIV>
> <DIV ID="Block_menu_1_2">
> 	<DIV ID="menu_1_3">menuOneThree</DIV>
> 	<DIV ID="Block_menu_1">
> 		<DIV ID="menu_2">menuTwo</DIV>
> 		<DIV ID="menu_2_1">menuTwoOne</DIV>
> 		<DIV ID="Block_menu_2">
> 			<DIV ID="Block_menu">
> 			</DIV>
> 		</DIV>
> 	</DIV>
> </DIV>
> 
> I think that what I need to do is to change the XSL to be 
> something like
> 
> 	<xsl:if test="Menu">
> 		<xsl:apply-templates select={expression to 
> select only direct descendents of current node} />
> 		<DIV>
> 			<xsl:attribute 
> name="ID">Block_<xsl:value-of select="$MenuID"/></xsl:attribute>
> 			<xsl:apply-templates select={expression 
> to select only following siblings of current node} />
> 		</DIV>
> 	</xsl:if>
> 
> 
> but I have not managed to get anywhere near what I am after, 
> so maybe I am barking up the wrong tree. It seems as though 
> what I am trying to do is create a nested structure based on 
> the structure of the original XML, but using different nodes.
> 
> Does anyone have any ideas as to how to approach this problem?
> 
> I can probably write something in ASP to convert the XML for 
> me, but I would rather find out how it could be done in XSL.
> 
> Thanks for any pointers/ideas.
> 
> David Baldwin
> 
> 
> 
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]