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 :

Afficher plusieurs valeurs dans un For-Each


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut Afficher plusieurs valeurs dans un For-Each
    Bonjour,

    Je recherche comment afficher les valeurs de toutes les balises "Attribute" qui ont ont l'attribut Name = "Produktnamen", et dessous ceux avec l'attribut Name = "Produktnummer (Schlüssel)".

    Ex:
    <h2> Mes Produits ... </h2>
    <p>MON PRODUIT /// Mon N° DE PRODUIT
    </p>

    Actuellement ça affiche la liste des Produktnamen (ça c'est ok), mais je n'arrive pas à afficher les N° de Produit "Produktnummer (Schlüssel)". Je ne sais pas du tout comment m'y prendre.

    MON XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <root>
      <Object>
        <Attribute Name="Produktnummer (Schlüssel)">MON N° DE PRODUIT</Attribute>
        <Attribute Name="Produktnamen"> MON PRODUIT</Attribute>
        <Attribute Name="Produktkurzbezeichnung" />
        <Attribute Name="Beschreibung">Gerollte Selbstklemmplatten aus Glaswolle. </Attribute>
       <Attribute Name="Anwendungsbereiche">Hochleistungs-Wärme</Attribute>
    </Object>
    .......
    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
     
    ...
    <xsl:template match="/">
      <html>
      <body>
        <h2>Mes Produits ("Produktnamen et "Produktnummer Schlüssel"):</h2>
     
    		<xsl:for-each select="root/Object/Attribute[@Name='Produktnamen']">
    			<p>
    				<xsl:value-of select="."/> ///
    				<xsl:apply-templates select="root/Object/Attribute[@Name='Produktnummer (Schlüssel)']"></xsl:apply-templates>
    			</p>
    		</xsl:for-each>
     
      </body>
      </html>
    </xsl:template>	
     
    <xsl:template match="root/Object/Attribute[@Name='Produktnummer (Schlüssel)']">
    	<xsl:if test="@Name='Produktnummer (Schlüssel)'">
    	<xsl:value-of select="."/> 
    	</xsl:if>	
    </xsl:template>
    Le template du bas est une impro complête je ne sais pas comment m'y prendre.
    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut
    Je viens de réussir en faisant:


    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
    <xsl:template match="/">
      <html>
      <body>
        <h2>Produits:</h2>
     
    		<xsl:for-each select="root/Object/Attribute">
    			<p>
    				<xsl:if test="@Name='Produktnamen'">
    					<xsl:value-of select="."/> / 
    					</xsl:if> 
    				<xsl:if test="@Name='Produktnummer (Schlüssel)'">
    					<xsl:value-of select="."/> 
    				</xsl:if>
    			</p>
    		</xsl:for-each>
     
      </body>
      </html>
    </xsl:template>
    C'est la meilleure solution?

    Par contre ça me met le "Produktnummer (Schlüssel)" à la ligne et pas à la suite du "Produktnamen".

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Fais plutôt <xsl:for-each select="root/Object"> et pour chacun d'eux, affiche les deux attributs qui t'intéressent, l'un après l'autre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut
    Alors j'ai essayé comme ça:

    ("root/Object[@AttributeSetName ='Produkt']" ==> car je veux que les objets avec cet attribut)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:for-each select="root/Object[@AttributeSetName ='Produkt']">
     
    	<xsl:if test="Attribute[@Name='Produktnamen']">
    		<nom_produit><xsl:value-of select="."/> </nom_produit> / 
    	</xsl:if> 
    	<xsl:if test="Attribute[@Name='Produktnummer (Schlüssel)']">
    		<cle_produit><xsl:value-of select="."/> </cle_produit>
    	</xsl:if>
     
    </xsl:for-each>
    Une fois dans "root/Object[@AttributeSetName ='Produkt']", je ne sais pas comment afficher mes "<xsl:if ..." pour afficher le bon attribut.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Citation Envoyé par sirjenny Voir le message
    Une fois dans "root/Object[@AttributeSetName ='Produkt']", je ne sais pas comment afficher mes "<xsl:if ..." pour afficher le bon attribut.
    Bah... Exactement comme quand tu vérifies s'ils existent dans le <xsl:if test=""> ...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre habitué
    Inscrit en
    Août 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 9
    Par défaut
    bah actuellement comme ça ça ne fonctionne pas car dans le for-each on est dans root/Object, et dans le xsl:if on devrait d'abord aller dans "Attribute" ..

    J'ai essayé "<xsl:if test="@Name='Produktnamen'">..." et "<xsl:if test="Attribute/@Name='Produktnamen'">" ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    		<xsl:for-each select="root/Object[@AttributeSetName ='Produkt']">
     
    				<xsl:if test="@Name='Produktnamen'">
    					<nom_produit><xsl:value-of select="."/> </nom_produit> / 
    				</xsl:if> 
    				<xsl:if test="@Name='Produktnummer (Schlüssel)'">
    					<cle_produit><xsl:value-of select="."/> </cle_produit>
    				</xsl:if>
     
    		</xsl:for-each>

Discussions similaires

  1. Réponses: 12
    Dernier message: 12/05/2014, 10h31
  2. Réponses: 2
    Dernier message: 17/02/2014, 09h23
  3. Afficher des champs cachés dans un for each
    Par rvm31 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/11/2013, 21h30
  4. Réponses: 21
    Dernier message: 20/05/2011, 01h53
  5. Réponses: 2
    Dernier message: 17/03/2009, 14h20

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