UP PREVIOUS NEXT   Technologies Internet et Education, © TECFA
  4. Elements XSL de base

4. Elements XSL de base

Opérations de base:
  1. Définir des règles qui disent comment transformer un "noeud" (element, tag) et ses sous-éléments
  2. Organiser l'application de ces règles

4.1 Définition d'une règle ("template") avec xsl:template

Structure d'une règle (template) XSLT:

 

Exemple 4-1: Exemples xsl:template

L'exemple suivant sélectionne tous les noeuds formés par des balises "project":

<xsl:template match="project">
  ......
</xsl:template>

L'exemple suivant sélectionne <title> qui est un enfant de <project>:

<xsl:template match="project/title">
  ......
</xsl:template>

L'exemple suivant sélectionne <title>, un descendant de <project>:

<xsl:template match="project//title">
  ......
</xsl:template>

4.2 Anatomie d'un simple style sheet

 

4.3 Application de templates aux sous-éléments

A. <xsl:apply-templates />

 <xsl:template match="/">
    <html> <body>
      <xsl:apply-templates/>
    </body> </html>
  </xsl:template>

B. L'attribut "select" de apply-templates

<xsl:template match="page">
  <xsl:apply-templates select="title"/>
</xsl:template>

Cette règle pourrait s'appliquer au texte XML suivant:

4.4 Extraction d'une valeur

A. xsl:value-of

<xsl:template match="project">
    <P>
      <xsl:value-of select="problem/title"/>
    </P>
  </xsl:template>

Syntaxe spéciale pour insérer la valeur d'un objet dans un string d'attribut utilisé dans l'output d'un template: {....}

<xsl:template match="contact-info">
....
  <a href="mailto:{@email}"><xsl:value-of select="@email"/></a>
...

B. xsl:copy

  <xsl:template match="p">
   <xsl:copy> <xsl:apply-templates/> </xsl:copy>
  </xsl:template>
<xsl:template match="*">
   <xsl:copy>Garbage: <i> <xsl:apply-templates/> </i> </xsl:copy>
  </xsl:template>

4.5 Boucles et conditions

A. <xsl:if>

Exemple 4-2: xsl:if exemple pour insérer des virgules dans une liste

<xsl:template match="animal">
  Nom:<xsl:value-or select="@name"/>
  <br> Couleurs:
   <xsl:value-of select="couleur"/>
   <xsl:if test="position()!=last()">, </xsl:if>
</xsl:template>

XML:

<animal name="zebre"> <couleur>noir</couleur> <couleur>blanc</couleur> <couleur>bleu</couleur> </animal>

Résultat:

       Nom: zebre 
       Couleur: noir, blanc, bleu

B. <xsl:choose>

<xsl:template match="animal">
  <xsl:choose>
    <xsl:when test="@couleur='noir'">
      <P style="color:black">
        <xsl:value-of select="."/>
      </P>
    </xsl:when>
    <xsl:when test="@couleur='bleu'">
      <P style="color:blue">
        <xsl:value-of select="."/>
      </P>
    </xsl:when>
    <xsl:when test="pattern">
	      ...
    </xsl:when>
    <xsl:otherwise>
      <P style="color:green">
        <xsl:value-of select="."/>
      </P>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
 

C. <xsl:for-each>

Exemple 4-3: Présentation du résultat XML d'une requête SQL avec XSLT

<xsl:template match="ROWSET">
    <table border="2" cellspacing="1" cellpadding="6">
     <xsl:for-each select="ROW">  <tr>
      <td><xsl:value-of select="id"/></td>
      <td><xsl:value-of select="login"/></td>
      <td><xsl:value-of select="fullname"/></td>
        <td bgcolor="tan"><a href="{url}"><xsl:value-of select="url"/></a></td>
      <td><xsl:value-of select="food"/></td>
      <td><xsl:value-of select="work"/></td>
      <td><xsl:value-of select="love"/></td>
      <td><xsl:value-of select="leisure"/></td>
      </tr> </xsl:for-each>
    </table>	
</xsl:template>

UP PREVIOUS NEXT -- TIE