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] Ne pas répêter attribut de même valeur ?


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut [XSLT] Ne pas répêter attribut de même valeur ?
    Bonjour à tous !!!
    Je suis en train de faire un projet pour la fac , c'est un projet de géolocalisation .Je dois sélectionner des produits dans des listes déroulantes et que les produits s'affiche sur un plan ..
    J'ai donc mon xml qui se présente comme sa :

    Code : 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
    <?xml version="1.0" encoding="utf-8" ?>
    <?xml-stylesheet href="magasin.xsl" type="text/xsl" ?>
     
    <magasin>
     
    	<secteur nom="Cosmetologie" >
    		<rayon nom="Podologie">
    			<produit type="Creme" marque="Loreal" prix="5,50" x="295" y="180">  </produit>
    			<produit type="Creme" marque="YvesRocher" prix="4,25 " x="295" y="160"> </produit>
    			<produit type="Rabot" marque="LeRabot" prix="4,00 " x="295" y="200">  </produit>
    		</rayon>
    		<rayon nom="Soin du visage">
    			<produit type="Masque" marque="Loreal" prix="6,75 " x="282" y="180" >  </produit>
    			<produit type="Fond de teint" marque="Loreal" prix="5,75 " x="282" y="160">  </produit>
    			<produit type="Masque" marque="YvesRocher" prix="3.90 " x="282" y="200">  </produit>
    		</rayon>
    	</secteur>
    </magasin>
    (avec plusieurs secteur)
    et mon xsl :
    Code : 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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     
    <xsl:output method="html" encoding="ISO-8859-1" />
     
    <xsl:template match="/">
    	<html> 
     
    		<body style="background:url('plan.jpg');background-repeat:no-repeat; background-position: top right">
    		<center><font color="white"><h2>* * * Bienvenue dans votre hypermarche  * * *</h2></font><font color="#e00080"><i><h4>Service de localisation de vos produits</h4></i></font></center>
    			<form method="get" action="relais.php" target="maFrame">
    				<xsl:apply-templates select="//*" />
    				<!-- selection de tous les noeuds de l'arbre dom -->
    				<input type="submit" value="Rechercher" />
    				<input type="reset" value="Annuler" />
    			</form>
     
    		<br/><br/><br/><br/><br/><br/><br/><br/><br/>
    		<center><iframe width="850" height="600" name="maFrame" frameborder="0"></iframe></center>
     
    		</body>
    	</html>
    </xsl:template>
     
    <xsl:template match="*[not(preceding::*[name()=name(current())])]">
     
    	<b><u><font color="black"><xsl:value-of select="name()" /></font></u></b> 
    	<table>
    		<xsl:apply-templates select="@*" />
    	</table>
     
     
    </xsl:template>
     
    <xsl:template match="@*">
     
    	<xsl:variable name="baliseParente" select="name(..)" />
    	<xsl:variable name="nomAttribut" select="name()" />
    	<td>
    		<tr bgcolor="#ffe0a0">
    			<font color="#e00080"><xsl:value-of select="$nomAttribut" /></font>
     
    			<select name="{concat($baliseParente,'-',$nomAttribut)}">
    				<option value="">-- Tous --</option>
    				<xsl:for-each select="//*[name()=$baliseParente]/@*[name()=$nomAttribut]">
    					<option>
    						<xsl:value-of select="."/>
    					</option>
    				</xsl:for-each>
    			</select>
    		<br/>
    		</tr>
    	</td>
     
    </xsl:template>
     
     
     
     
    </xsl:stylesheet>

    Mais dans mes liste de produits par exemple j'ai deux fois la valeur"creme" alors que j'aimerais qu'elle ne saffiche q'une fois ...
    Est ce que qu'elqu'un sais ce que je dois faire pour regler ce petit pb??

    Merci à tous d'avance
    Bonne journée
    Emilie

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Je suis aller voir , mais en fait c'est pas exactement ce que je veux , car il faut que dans mon XSL il n'y ait pas de valeur et que ca soit générique ..

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Par défaut
    Comme ma feuille XSL doit être générique je ne peux pas appliquer cela ...

    <xsl:template match="*[not(preceding::*[name()=name(current())])]">
    C'est un truc dans ce genre la "expression régulière" qu'il me faut pour gerer le fait que les attributs de même nom ne doivent pas avoir la même valeur...
    Cette expression régulière là , évite qu'il y ait une liste produit pour chaque balise produit..
    Il me faudrait un peu dans ce style mais pour vérifier que les valeurs des attribut soit la premiere rencontrés , si on la deja vu , on la mets pas ..
    Je sais pas si j'ai été très claire...
    Bisous à tous

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/06/2007, 07h45
  2. [XSLT] Création d'un filtre selon la valeur d'un attribut
    Par lemok dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 07/05/2007, 17h13
  3. Problème avec un cookie: je ne retrouve pas la même valeur
    Par metalcoyote dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 15/02/2007, 15h10
  4. [XSLT][HTML] Afficher un attribut et plusieurs valeurs ?
    Par Najla dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/11/2006, 16h32
  5. [XSLT]Sort sur un attribut dont la valeur est en param
    Par Trin dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 07/11/2005, 16h16

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