2011-10-15 3 views
1

Je reçois une réponse des serveurs principaux pour afficher les données en tant que liens rapides sur le côté droit de la page de résultats de recherche.Génération de XSLT dans le Scenerio suivant

<NavigatorItems> 
    <Navigator Name="Shoes"> 
    <Name>Nike</Name> 
    <WebSite>www.nike.com</WebSite> 
    <Name>Reebok</Name> 
    <WebSite>www.reebok.com</WebSite> 
    <Name>Adidas</Name> 
    <WebSite>www.adidas.com</WebSite> 
    <ShowAll>www.mysite.com/showallshoes</ShowAll> 
    </Navigator> 
    <Navigator Name="Clothes"> 
    <Name>Lee Jeans</Name> 
    <WebSite>www.lee.com</WebSite> 
    <Name>Levis</Name> 
    <WebSite>www.levi.com</WebSite> 
    <Name>Lawman</Name> 
    <WebSite>www.lawman.com</WebSite> 
    <ShowAll>www.mysite.com/showallclothes</ShowAll> 
    </Navigator> 
</NavigatorItems> 

J'ai besoin d'afficher ces éléments en utilisant quelque chose XSLT comme ceci:

enter image description here

Le XSLT exemple suggéré par quelqu'un est quelque chose comme ceci:

<xsl:for-each select="NavigatorItems/Navigator"> 
    <xsl:variable name="link" select="WebSite"/> 
    <tr> 
    <td><a href ="{$link}"><xsl:value-of select="Name"/></td> 
    </tr> 
    <xsl:test select="ShowAll"> 
    <xsl:variable name="linkShowAll" select="ShowAll"/> 
     <tr> <td> <a href="{$linkShowAll}"> View More Results <td> </tr> 
    </xsl:test> 
</xsl:for-each> 

Mais il affiche seulement

Nike (with its appropriate link) 

Lee (with its appropriate link) 

Où je vais mal avec ça? J'ai beaucoup essayé de modifier le XSLT et vérifié mais pas de chance.

Veuillez nous suggérer.

Répondre

1

Cette transformation:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="Navigator"> 
    <p><xsl:value-of select="@Name"/></p> 
    <ul> 
    <xsl:apply-templates select="Name"/> 
    </ul> 
    <xsl:apply-templates select="ShowAll"/> 
</xsl:template> 

<xsl:template match="Name"> 
    <li> 
    <a href="http://{following-sibling::WebSite[1]}"> 
    <xsl:value-of select="."/> 
    </a> 
    </li> 
</xsl:template> 

<xsl:template match="ShowAll"> 
    <p> 
    <a href="http://{.}"> 
    <xsl:text>View More Results</xsl:text> 
    </a> 
    </p> 
</xsl:template> 
</xsl:stylesheet> 

lorsqu'il est appliqué au document XML fourni:

<NavigatorItems> 
    <Navigator Name="Shoes"> 
    <Name>Nike</Name> 
    <WebSite>www.nike.com</WebSite> 
    <Name>Reebok</Name> 
    <WebSite>www.reebok.com</WebSite> 
    <Name>Adidas</Name> 
    <WebSite>www.adidas.com</WebSite> 
    <ShowAll>www.mysite.com/showallshoes</ShowAll> 
    </Navigator> 
    <Navigator Name="Clothes"> 
    <Name>Lee Jeans</Name> 
    <WebSite>www.lee.com</WebSite> 
    <Name>Levis</Name> 
    <WebSite>www.levi.com</WebSite> 
    <Name>Lawman</Name> 
    <WebSite>www.lawman.com</WebSite> 
    <ShowAll>www.mysite.com/showallclothes</ShowAll> 
    </Navigator> 
</NavigatorItems> 

produit le résultat souhaité, correct:

<p>Shoes</p> 
<ul> 
    <li> 
     <a href="http://www.nike.com">Nike</a> 
    </li> 
    <li> 
     <a href="http://www.reebok.com">Reebok</a> 
    </li> 
    <li> 
     <a href="http://www.adidas.com">Adidas</a> 
    </li> 
</ul> 
<p> 
    <a href="http://www.mysite.com/showallshoes">View More Results</a> 
</p> 
<p>Clothes</p> 
<ul> 
    <li> 
     <a href="http://www.lee.com">Lee Jeans</a> 
    </li> 
    <li> 
     <a href="http://www.levi.com">Levis</a> 
    </li> 
    <li> 
     <a href="http://www.lawman.com">Lawman</a> 
    </li> 
</ul> 
<p> 
    <a href="http://www.mysite.com/showallclothes">View More Results</a> 
</p> 

et le navigateur qu'il affiche comme celui-ci:

Chaussures

View More Results

Vêtements

View More Results

+0

Awsome réponse Dimitre .. !!! Merci beaucoup..!!!!Pourriez-vous s'il vous plaît me fournir des ressources/sites en ligne pour apprendre XSLT plus en détail. Je suis un débutant. Apprécier ton aide. Encore merci. –

+1

@ Sayed Vous êtes les bienvenus. J'ai fourni ce que je pense être les meilleures ressources dans ce domaine dans cette réponse à une question SO: http://stackoverflow.com/questions/339930/any-good-xslt-tutorial-book-blog-site-online/341589 # 341589 –

+0

Dimitre: J'ai un tag de plus qui est juste en dessous de chacun de mes tags . Cette balise contient "true" ou "false". Je dois identifier ceci pendant que nous assignons le . Donc, si c'est vrai, je vais écrire comme: –

Questions connexes