2010-11-01 5 views
0

J'ai trouvé des didacticiels sur l'utilisation de la valeur des éléments utilisant XSLT mais je suis aux prises avec des attributs. Voici mon document XML.XSLT, XML, For-Each avec des attributs et des éléments

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="PrintListStyleSheet.xsl"?> 
<PrinterDirectory> 
<Country Name = "UK"> 
<Region Name="Birmingham"> 
<Building Name="Brindley Place" url="Brindley.htm"/> 
<Building Name="Solihull TE" url="Solihull.htm"/> 
<Building Name="Midland ATE" url="MidlandATE.html"/> 
<Building Name="Redditch" url="Redditch.html"/> 
</Region> 
<Region Name="Wolverhampton"> 
<Building Name="Wolverhampton TE" url="WolverhamptonTE.htm"/> 
</Region> 
<Region Name="Cardiff"> 
<Building Name="Park Gate" url="CardiffParkGate.htm"/> 
<Building Name="Cardiff Bay Data Centre " url="CardiffParkGate.htm"/> 
</Region> 
    </Country> 
</PrinterDirectory> 

Ce que j'essaie de faire est d'afficher une liste de régions. C'EST À DIRE.

  • Birmingham
    • Brindley Place
    • Solihull ATE
  • Wolverhampton
  • Cardiff

Comment puis-je faire?

Répondre

3

Cette feuille de style:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="PrinterDirectory"> 
     <ul> 
      <xsl:apply-templates/> 
     </ul> 
    </xsl:template> 
    <xsl:template match="Country|Region"> 
     <li> 
      <p> 
       <xsl:value-of select="@Name"/> 
      </p> 
      <ul> 
       <xsl:apply-templates/> 
      </ul> 
     </li> 
    </xsl:template> 
    <xsl:template match="Building"> 
     <li> 
      <xsl:value-of select="@Name"/> 
     </li> 
    </xsl:template> 
</xsl:stylesheet> 

Sortie:

<ul> 
    <li> 
     <p>UK</p> 
     <ul> 
      <li> 
       <p>Birmingham</p> 
       <ul> 
        <li>Brindley Place</li> 
        <li>Solihull TE</li> 
        <li>Midland ATE</li> 
        <li>Redditch</li> 
       </ul></li> 
      <li> 
       <p>Wolverhampton</p> 
       <ul> 
        <li>Wolverhampton TE</li> 
       </ul></li> 
      <li> 
       <p>Cardiff</p> 
       <ul> 
        <li>Park Gate</li> 
        <li>Cardiff Bay Data Centre </li> 
       </ul></li> 
     </ul></li> 
</ul> 

Modifier: Meilleure performance avec xsl:value-of

+0

Merci, très apprécié. –

+0

@Alejandro: +1. –

+0

@Ali Beasley: Vous êtes bienvenu. –

Questions connexes