site de Fabien Torre


Source de sujets2html-1.xsl

<?xml version="1.0" ?>
<!-- -*- coding: utf-8 -*- -->
<xsl:stylesheet version="1.0">
<xsl:output method="xml" encoding="utf-8" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" />
<!-- Les paramètres -->
<xsl:param name="cible" />
<xsl:param name="refsujet" />
<!-- Traitement de la racine -->
<xsl:template match="/sujets">
<html>
<head>
<title>Sujets ID</title>
<link rel="stylesheet" type="text/css" href="sujets.css" />
</head>
<body>
<div class="contenu">
<p>
Cette page est produite dans le cadre d'exercices sur XSLT. Son contenu n'est peut-être pas pertinent.
</p>
<ul>
<li>
retour aux <a href="http://www.grappa.univ-lille3.fr/~torre/Enseignement/tp/XML/Corrections/#xsltfilms">solutions des exercices XML</a>
</li>
<li>
retour aux <a href="http://www.grappa.univ-lille3.fr/~torre/Enseignement/tp/XML/XSLT/">exercices XSLT</a>
</li>
<li>
retour à la page de <a href="http://www.grappa.univ-lille3.fr/~torre/">Fabien Torre</a>
</li>
</ul>
<xsl:choose>
<!-- tous les sujets -->
<xsl:when test="$cible='tout'">
<h1>
Tous les sujets abordés pendant le Master Informatique et Document
</h1>
<ul>
<xsl:apply-templates select="sujet[not(@pere)]" mode="tout" />
</ul>
</xsl:when>
<!-- un seul sujet -->
<xsl:when test="$cible='unsujet'">
<xsl:apply-templates select="sujet[@id=$refsujet]" mode="unseul" />
</xsl:when>
<!-- erreur -->
<xsl:otherwise>
<h1>Page vide</h1>
</xsl:otherwise>
</xsl:choose>
<hr />
<div class="logos">
<a href="http://www.grappa.univ-lille3.fr/~torre/">
<img src="http://www.grappa.univ-lille3.fr/~torre/Images/FabienTorre.png" alt="Fabien Torre" />
</a>
<a href="http://validator.w3.org/check/referer">
<img src="http://www.grappa.univ-lille3.fr/~torre/Images/valid-xhtml10.png" alt="Valid XHTML 1.0!" />
</a>
<a href="http://jigsaw.w3.org/css-validator/validator?uri=http://www.grappa.univ-lille3.fr/~torre/Enseignement/Master-ID/Memoire/memoire.css">
<img src="http://www.grappa.univ-lille3.fr/~torre/Images/valid_css.png" alt="Valid CSS!" />
</a>
</div>
</div>
</body>
</html>
</xsl:template>
<!-- Règles pour la sortie des URLs -->
<xsl:template name="faireunlien">
<xsl:param name="adresse" />
<xsl:param name="texte" />
<a href="{$adresse}">
<xsl:value-of select="$texte" />
</a>
</xsl:template>
<xsl:template match="url">
<li>
<xsl:call-template name="faireunlien">
<xsl:with-param name="texte" select="." />
<xsl:with-param name="adresse" select="@href" />
</xsl:call-template>
</li>
</xsl:template>
<!-- Sortie des sujets -->
<xsl:template match="sujet" mode="tout">
<li>
<xsl:value-of select="@titre" />
<xsl:if test="count(url) > 0">
<ul>
<xsl:apply-templates select="./url" />
</ul>
</xsl:if>
<xsl:copy-of select="description/*" />
<xsl:variable name="idsujet" select="@id" />
<xsl:if test="//sujet[@pere=$idsujet]">
<ul>
<xsl:apply-templates select="//sujet[@pere=$idsujet]" mode="tout">
<xsl:sort select="@titre" order="ascending" />
</xsl:apply-templates>
</ul>
</xsl:if>
</li>
</xsl:template>
<xsl:template match="sujet" mode="liste">
<li>
<xsl:call-template name="faireunlien">
<xsl:with-param name="texte" select="@titre" />
<xsl:with-param name="adresse" select="concat(@id,'.html')" />
</xsl:call-template>
</li>
</xsl:template>
<xsl:template match="sujet" mode="ascendance">
<xsl:if test="@pere">
<xsl:variable name="idpere" select="@pere" />
<xsl:apply-templates select="//sujet[@id=$idpere]" mode="ascendance" />
<xsl:text> > </xsl:text>
</xsl:if>
<xsl:call-template name="faireunlien">
<xsl:with-param name="texte" select="@titre" />
<xsl:with-param name="adresse" select="concat(@id,'.html')" />
</xsl:call-template>
</xsl:template>
<xsl:template match="sujet" mode="unseul">
<h1>
<xsl:value-of select="@titre" />
</h1>
<xsl:if test="@pere">
<div class="chemin">
<xsl:variable name="idpere" select="@pere" />
<xsl:apply-templates select="//sujet[@id=$idpere]" mode="ascendance" />
</div>
</xsl:if>
<xsl:if test="count(url) > 0">
<ul>
<xsl:apply-templates select="./url" />
</ul>
</xsl:if>
<xsl:copy-of select="description/*" />
<xsl:variable name="idsujet" select="@id" />
<xsl:if test="//sujet[@pere=$idsujet]">
<ul>
<xsl:apply-templates select="//sujet[@pere=$idsujet]" mode="liste">
<xsl:sort select="@titre" order="ascending" />
</xsl:apply-templates>
</ul>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Fabien Torre Valid HTML5! Valid CSS!
site de Fabien Torre