IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

XSLT les templates


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2014
    Messages : 48
    Points : 62
    Points
    62
    Par défaut XSLT les templates
    Bonjour j'ai un soucie c'est que dans un exercice je suis obligé d'utiliser un template, mais je ne vois pas comment le faire sans que mes requêtes ne se répètent ( ici 4 fois comme il n'y a que 4 livres).

    ligne 52

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    	<xsl:template match="/">
     
    		<html>
     
    			<head>
    				<meta charset="utf-8"/>
    				<title> La bibliothèque chérie des L3 </title>			
    			</head>
    			<body>
    				<h1>Liste des livres</h1>
     
    				<table border="1" width="100%">
    					<tr bgcolor="#9acd32">
    						<th>Code</th>
    						<th>Auteur</th>
    						<th>Description</th>
    						<th>Prix</th>
    					  </tr>
     
     
    					<xsl:for-each select="bibliotheque/livre">
    					  <tr>
    						<td><xsl:value-of select="@code"/></td>	
    						<td><xsl:element name="img">
    							<xsl:attribute name="src"><xsl:value-of select="photo/@source"/></xsl:attribute>
    							<xsl:attribute name="alt"><xsl:text>"</xsl:text><xsl:value-of select="photo/@source"/></xsl:attribute>
    						</xsl:element></td>
    						<td>
    							<xsl:value-of select="titre"/> : 
    							<xsl:value-of select="description"/> par 
    							<xsl:value-of select="auteur"/> 
    							<xsl:if test="titre[@lang='Fr']">(en francais)</xsl:if>
    							<xsl:if test="titre[@lang='En']">(en Englais)</xsl:if>
    						</td>
    						<td>
    							<xsl:value-of select="prix"/> XPF
    						</td>
    					  </tr>
    					 </xsl:for-each>
    				</table>
     
     
    		<xsl:apply-templates/>
     
    			</body>
    		</html>
     
    	</xsl:template>
     
    	<xsl:template match = "livre">
    		<h2>Valeur totale des livres de la bibliothèque</h2>
    		<h3><xsl:value-of select="sum(//livre/prix[@devise='XPF'])"/> XPF</h3>
    		<h3><xsl:value-of select="sum(//livre/prix[@devise='Euros'])"/> Euros</h3>
     
    		<h2>Le livre le plus cher coûte</h2>
    		<h3><xsl:for-each select="//livre">
    			<xsl:sort select="prix[@devise='XPF']" order="descending"/>
    			<xsl:if test="position()=1">
    				<xsl:value-of select="prix[@devise='XPF']"/> XPF
    			</xsl:if>
    		</xsl:for-each></h3>
     
    		<h2>Le livre le moins cher coûte</h2>
    		<h3><xsl:for-each select="//livre">
    			<xsl:sort select="prix[@devise='XPF']"/>
    			<xsl:if test="position()=1">
    				<xsl:value-of select="prix[@devise='XPF']"/> XPF
    			</xsl:if>
    		</xsl:for-each></h3>
    	</xsl:template>

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si vous regardez un peu plus de votre template pour livre, tous les xpath concernant ont le contexte la racine documentaire. Avec ce genre de structure, le match en fait joue un rôle tout à fait d'aucune importance. Ce template est prêt à s'écrire comme un template dit nommé. Et ça résourds le problème aussi, je pense sans rien tester préalablement. Vous pouvez faire comme ça.

    [1] Changez xsl:apply-templates (ligne #45) à un xsl:call-template.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!--
    <xsl:apply-templates/>
    -->
    <xsl:call-template name="sommaire" />
    [2] Changez le template livre à un template, nommé sommaire en accord avec le xsl:call-template dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!--
    <xsl:template match = "livre">
    -->
    <xsl:template name= "sommaire">

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Polynésie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2014
    Messages : 48
    Points : 62
    Points
    62
    Par défaut
    Merci pour votre réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/05/2007, 10h19
  2. [XSLT] question sur les templates
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/10/2006, 12h39
  3. Réponses: 3
    Dernier message: 15/05/2005, 14h12
  4. [CR 10] A quoi servent les Templates Fields ?
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 10/11/2004, 10h52
  5. [XSLT] les variables???
    Par Lydiane dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 09/08/2002, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo