UP PREVIOUS NEXT   Technologies Internet et Education, © TECFA
  3. La logique de la programmation par règles

3. La logique de la programmation par règles

3.1 Rappel: Utilisation de apply-templates et XPath

Exemple 3-1: Simple XML vers HTML avec XSLT

A. Un texte en XML

<arbre>
 <para>Simples Templates et XPath</para>
 <aunt>
  <name>Auntie</name>
  <child>Je suis un enfant de aunt</child>
 </aunt>
 <uncle>
  <name>Uncle Ben</name>
  <child>Je suis le premier enfant de uncle</child>
  <child>Je suis le 2eme enfant de uncle</child>
  <child>Je suis le 3eme enfant de uncle</child>
 </uncle>
</arbre>

B. La feuille de style XSLT

 <xsl:template match="arbre">
  <html><title>XSL Example</title><body>
    <xsl:apply-templates />
   </body> </html>
 </xsl:template>
  
 <xsl:template match="uncle|aunt"> <hr /> <xsl:apply-templates />  </xsl:template>
  
 <xsl:template match="name">  <xsl:apply-templates /> : </xsl:template>
  
 <xsl:template match="uncle/child[position()=1]">
  <p> <strong><xsl:apply-templates /></strong> </p>
 </xsl:template>
  
 <xsl:template match="uncle/child[position()>1]">
  <p> <xsl:apply-templates /></p>
 </xsl:template>
  
 <xsl:template match="aunt/child">
  <p style="color:blue"><xsl:apply-templates /></p>
 </xsl:template>

C. Les résultat en HTML

<!DOCTYPE html
  PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <title>XSL Example</title>
   <body>
      Simples Templates et XPath
      <hr>
      Auntie :
      <p style="color:blue">Je suis un enfant de aunt</p>
      <hr>
      Uncle Ben :
      <p><strong>Je suis le premier enfant de uncle</strong></p>
      <p>Je suis le 2eme enfant de uncle</p>
      <p>Je suis le 3eme enfant de uncle</p>
   </body>
</html>

D. Rappel du principe

3.2 Les règles implicites

Le "problème"

<xsl:template match="*|/">

<xsl:apply-templates/>

</xsl:template>

 

<xsl:template match="text()|@*">

<xsl:value-of select="."/>

</xsl:template>

 

Solution

<xsl:template match="*|/" />

<xsl:template match="text()|@*" />

<xsl:template match="element_qui_ne_sert_a_rien" />

<xsl:template match="title">

<p><xsl:value-of select="." /></p>

</xsl:template>

<xsl:template match="title">

<p><xsl:apply-templates></p>

</xsl:template>


UP PREVIOUS NEXT -- TIE