03 avril 2003

Comment traiter les balises contenant du texte et des balises en XSL

Il arrive parfois en XML que le contenu d'une balise ne soit pas seulement du texte. En effet rien ne nous interdit de mettre du texte et des balises, par exemple :

<?xml version="1.0" ?>
<document>
 <test>
  <machin>
   Bonjour tout <gras>le monde</gras> c'est moi !
  </machin>
 </test>
</document>

Maintenant en XSL comment fait-on pour traiter correctement la balise "machin" et la balise "gras" ?

On peut tout simplement ignorer la balise "gras".

<?xml version="1.0" ?>
<xsl:stylesheet 
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>

  <xsl:template match="test">
    <div>
      <xsl:value-of select="."/>
    </div>
  </xsl:template>

</xsl:stylesheet>

ce qui produira :

 
 <div>
  Bonjour tout  le monde c'est moi !
 </div>
 

mais le mieux c'est quand même de la traiter !

<?xml version="1.0" ?>
<xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>

  <xsl:template match="test">
    <div>
      <xsl:apply-templates/>
    </div>
  </xsl:template>

  <xsl:template match="test/text()">
      <xsl:value-of select="."/>
  </xsl:template>

  <xsl:template match="gras">
    <b>
      <xsl:value-of select="."/>
    </b>
  </xsl:template>

</xsl:stylesheet>

ce qui produira :

 <div>
  Bonjour tout  <b>le monde</b> c'est moi !
 </div>

Aucun commentaire:

Enregistrer un commentaire