Re: [xsl] Recursive selection, elegantly

Subject: Re: [xsl] Recursive selection, elegantly
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Sun, 6 Jun 2004 01:02:21 -0700 (PDT)
Hi Stephen,
  Given the XML -

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <menu ref="main_menu">
     <item resource="/"/>
     <item resource="/who_we_are"/>
     <item resource="/contact_us"/>
     <item resource="/disclaimer"/>
   </menu>
   <page about="/">
     <name>Home</name>
   </page>
   <page about="/who_we_are">
     <name>About us</name>
   </page>
   <page about="/contact_us">
     <name>Contact us</name>
   </page>
   <page about="/disclaimer">
     <name>Disclaimer</name>
   </page>
</root>

The following XSL -

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="html" version="1.0"
encoding="UTF-8" indent="yes"/>

<xsl:template match="/root">
  <html>
    <head>
      <title/>
    </head>
    <body>
      <table>
	<tr>
	  <xsl:apply-templates select="page"/>
	</tr>
      </table>
    </body>
  </html>
</xsl:template>

<xsl:template match="page">
  <td>
    <a href="{@about}">
      <xsl:value-of select="name"/>
    </a>
  </td>
</xsl:template>

</xsl:stylesheet>

produces output -

<html>
<head>
  <title></title>
</head>
<body>
  <table>
    <tr>
      <td><a href="/">Home</a></td>
      <td><a href="/who_we_are">About us</a></td>
      <td><a href="/contact_us">Contact us</a></td>
      <td><a href="/disclaimer">Disclaimer</a></td>
    </tr>
  </table>
</body>
</html>

Regards,
Mukul

--- Stephen Tredrea <stephen.tredrea@xxxxxxxxxxxxx>
wrote:
> Any suggestion on getting this to work? I can do it
> in four steps but not in
> three as attempted here!
> 
> Thanks, Stephen
> 
> XML (snippet):
> 
>   <menu ref="main_menu">
>     <item resource="/" />
>     <item resource="/who_we_are" />
>     <item resource="/contact_us" />
>     <item resource="/disclaimer" />
>   </menu>
> 
>   <page about="/">
>     <name>Home</name>
>   </page>
> 
>   <page about="/who_we_are">
>     <name>About us</name>
>   </page>
> 
>   ...etc...
> 
> XSL (snippet):
> 
>   <xsl:template match="/">
>     <xsl:apply-templates
> select="//menu[@ref='main_menu'" mode="main_menu"
> />
>   </xsl:template>
> 
>   <xsl:template match="menu" mode="main_menu">
>     <table>
>     <tr>
>       <xsl:apply-templates select="//*[@about =
> item/resource]"
> mode="menu_item" />
>     </tr>
>     </table>
>   </xsl:template>
> 
>   <xsl:template match="*" mode="menu_item">
>     <td>
>       <xsl:element name="a">
>         <xsl:attribute name="href"><xsl:value-of
> select="@about"
> /></xsl:attribute>
>         <xsl:value-of select="name" />
>       </xsl:element>
>     </td>
>   </xsl:template>
> 
> Required HTML:
> 
>   <table>
>   <tr>
>     <td><a href="/">Home</a></td>
>     <td><a href="/who_we_are">About us</a></td>
>     ...etc...
>   </tr>
>   </table>
> 
> 
>
--+------------------------------------------------------------------
> XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> To unsubscribe, go to:
> http://lists.mulberrytech.com/xsl-list/
> or e-mail:
> <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx>
> --+--
> 



	
		
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 

Current Thread