Skip to content

Correction de l'exercice 10

18/03/2010

Voici le fichier XML sur lequel les feuilles XSL ci-dessous doivent s’appliquer

Exercice 1 : Extraire la liste des titres de revues dont l’URL contient https://

Relire l’exercice

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<head><title>Liste des revues en https://</title></head&gt;
<body>
<h1>Liste des revues en "https://"</h1>
Je ne commente pas cette partie là
<ul>
<xsl:for-each select="//revue[contains(url,'https://')]">
<li>
<xsl:value-of select="titre"/>
</li>
</xsl:for-each>

</ul>
La balise <ul> crée la liste.Pour chaque revue dont l’URL contient https://, on crée une puce et on met le titre (noeud-enfant de <revue>)
</body>
</html>
</xsl:template>
</xsl:stylesheet>

Exercice 2 : ne choisir, dans les revues actives, que celles dont l’url ne contient pas « http »

Commençons par désigner toutes les revues dont l’URL contient effectivement http.

<xsl:for-each select="//revue[statut='actif' and contains(url, 'http')]>

(notez que cela inclut aussi bien les URL en http que les URL en https)

Ensuite, il faut nier la seconde condition, avec la fonction not().

<xsl:for-each select="//revue[statut='actif' and not(contains(url, 'http'))]>

  • L’inverse de contains() est not(contains()) (attention au nombre de parenthèses !)
  • En revanche pour la première condition (statut='actif'), pour dire « n’est pas égal à », il faut utiliser la syntaxe != (différent de) : <xsl:for-each select="//revue[statut!='actif' and not(contains(url, 'http'))]>

Remarque : les corrections sont rédigées en même temps que les exercices, si bien qu’elles n’intègrent pas les variantes proposées pat certains (càd, pour l’instant Dominique seulement…) en commentaires des exercices eux-mêmes. Mais il est toujours intéressant de s’y reporter aussi.

Publicités
%d blogueurs aiment cette page :