« Tutoriel XSLT intermédiaire » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
m (Remplacement de texte — « <pageby nominor="false" comments="false"/> » par « <!-- <pageby nominor="false" comments="false"/> --> »)
 
(5 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Ebauche}}
{{tutoriel
<pageby nominor="false" comments="false"/>
|fait_partie_du_cours=XML
|page_precedente=Tutoriel XSLT débutant
|statut=brouillon
|difficulté=intermédiaire
|derniere_modif=false
|prérequis=XML
}}
<!-- <pageby nominor="false" comments="false"/> -->


== Introduction ==
== Introduction ==
... à faire
Objectifs:
Objectifs:
<div class="tut_goals">
<div class="tut_goals">
; Objectifs
; Objectifs
*
* Découvrir et comprendre des fonctions équivalentes à d'autres langages de programmations
; Prérequis
; Prérequis
* [[Tutoriel XSLT débutant]]
* [[Tutoriel XSLT débutant]]
Ligne 18 : Ligne 22 :
*  
*  
</div>
</div>
Ce tutoriel se veut être la suite du [[Tutoriel XSLT débutant]] et s'intéresse à des opérations plus poussées que celles présentes dans ce tutoriel.
== Concaténation ==
Afin d'afficher plusieurs données #PCDATA liées entre elles, il est possible d'utiliser la formule xsl:value-of select="concat()". Il faut néanmoins respecter les règles suivantes :
* La concaténation n'accepte pas les balises "<>", puisqu'elles font partie intégrante du langage xml/xsl
* Le texte supplémentaire est inséré entre guillemets simples (' '), puisqu'entre deux guillemets doubles
* Les différents éléments sont séparés par une virgule
<source lang="xml">
<xsl:template match="date"> 
  <h1>
  <xsl:value-of select="concat('Nous sommes le ', jourdelasemaine, ' ', journum, ' ', mois, ' ', an, '.')"/>     
  </h1>
</xsl:template>
</source>
Affichera le message suivant : "Nous sommes le Vendredi 11 mars 2016." (si ce sont les données insérées par l'utilisateur)
== Boucle ==
Afin d'appliquer une règle générale à un ensemble de balises, il est pertinent d'utiliser une boucle xsl:for-each select="".
<source lang="xml">
  <xsl:template match="/listes/liste/mots">
  <div class="mots">
    <h2>Mots et leur définition</h2>
      <xsl:for-each select="mot">
      <xsl:value-of select="vocable" />
      <ul>Etymologie : <xsl:value-of select="etymon"/></ul>
      <ul>Définition : <xsl:value-of select="definition"/></ul>
      <ul>Synonyme(s) : <xsl:value-of select="synonyme"/></ul>
      </xsl:for-each>
  </div>
</xsl:template>
</source>
Pour chaque mot, il sera affiché le vocable, suivi par son étymologie, sa définition et son synonyme. Pour afficher plusieurs synonymes, à notre niveau, il faudrait tous les mettre dans la même balise, mais ce n'est pas très pratique et cela dénature l'intérêt même de la dtd de référence. La dtd devrait ainsi avoir comme balise une balise qui contient plusieurs synonymes (comme <!ELEMENT synonymes (synonyme+)>) et donc les synonymes, qu'il y en ait qu'un seul ou plusieurs, devraient être appelés par la fonction <xsl:value-of select="synonymes"/>.
[[Category: XML]]
[[Category: Ressources STIC]]

Dernière version du 22 août 2016 à 19:13

XML
◀▬
brouillon intermédiaire
2016/08/22


Introduction

Objectifs:

Objectifs
  • Découvrir et comprendre des fonctions équivalentes à d'autres langages de programmations
Prérequis
Suite
Niveau
  • Intermédiaire
Remarques

Ce tutoriel se veut être la suite du Tutoriel XSLT débutant et s'intéresse à des opérations plus poussées que celles présentes dans ce tutoriel.

Concaténation

Afin d'afficher plusieurs données #PCDATA liées entre elles, il est possible d'utiliser la formule xsl:value-of select="concat()". Il faut néanmoins respecter les règles suivantes :

  • La concaténation n'accepte pas les balises "<>", puisqu'elles font partie intégrante du langage xml/xsl
  • Le texte supplémentaire est inséré entre guillemets simples (' '), puisqu'entre deux guillemets doubles
  • Les différents éléments sont séparés par une virgule
 <xsl:template match="date">  	
  <h1>
   <xsl:value-of select="concat('Nous sommes le ', jourdelasemaine, ' ', journum, ' ', mois, ' ', an, '.')"/>      
  </h1>
 </xsl:template>

Affichera le message suivant : "Nous sommes le Vendredi 11 mars 2016." (si ce sont les données insérées par l'utilisateur)

Boucle

Afin d'appliquer une règle générale à un ensemble de balises, il est pertinent d'utiliser une boucle xsl:for-each select="".

  <xsl:template match="/listes/liste/mots">
   <div class="mots"> 
    <h2>Mots et leur définition</h2>
      <xsl:for-each select="mot">
       <xsl:value-of select="vocable" />
       <ul>Etymologie : <xsl:value-of select="etymon"/></ul>
       <ul>Définition : <xsl:value-of select="definition"/></ul>
       <ul>Synonyme(s) : <xsl:value-of select="synonyme"/></ul>
      </xsl:for-each>
   </div>
 </xsl:template>

Pour chaque mot, il sera affiché le vocable, suivi par son étymologie, sa définition et son synonyme. Pour afficher plusieurs synonymes, à notre niveau, il faudrait tous les mettre dans la même balise, mais ce n'est pas très pratique et cela dénature l'intérêt même de la dtd de référence. La dtd devrait ainsi avoir comme balise une balise qui contient plusieurs synonymes (comme <!ELEMENT synonymes (synonyme+)>) et donc les synonymes, qu'il y en ait qu'un seul ou plusieurs, devraient être appelés par la fonction <xsl:value-of select="synonymes"/>.