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] Liste des elements


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut [XSLT] Liste des elements
    Bonjour,

    Je voudrai récupérer les noms de balises et des attributs, mais pas les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <b1 att="xx">
    <b2>XXXXXXXXXXXXX</b2>
    <b1>

    Ma feuille de style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template match="*">
            <xsl:element name="{name()}">
            	<xsl:text>(B)</xsl:text><xsl:value-of select = "name()" />
            	<xsl:for-each select="@*">
            		<xsl:text>(A)</xsl:text><xsl:value-of select = "name()" />
            	</xsl:for-each>
            </xsl:element>
            <xsl:apply-templates select="@* | node()"/>
     
    </xsl:template>
    J'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (B)b1(A)att(B)b2XXXXXXXXXXXXX
    Je voudrai ne pas traiter toutes les valeurs des balises et des attributs (j'en ai beaucoup, je ne voudrai aps tous déclarer)

    Merci

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    C'est un bon début à mon avis, mais pourrait-on voir ta XSL complète ?

  3. #3
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut
    A part les entêtes, elle est complète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="text"/>
    <xsl:template match="*">
            <xsl:element name="{name()}">
            	<xsl:text>(B)</xsl:text><xsl:value-of select = "name()" />
            	<xsl:for-each select="@*">
            		<xsl:text>(A)</xsl:text><xsl:value-of select = "name()" />
            	</xsl:for-each>
            </xsl:element>
            <xsl:apply-templates select="@* | node()"/>
     
    </xsl:template>
    </xsl:stylesheet>

  4. #4
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour henri,

    voici un petit exemple à partir duquel tu devrais pouvoir arriver à obtenir ce que tu veux :

    Le document XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
     
    <ns:root xmlns:ns="http://polymorphisme.com/ns/ns">
      <ln/>
      <ns:ln/>
      <nso:ln1 xmlns:nso="http://polymorphisme.com/ns/nso"/>
    </ns:root>

    Le fichier XSLT :

    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <xsl:stylesheet version="1.0"
    	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    	<xsl:template match="*">
    		<xsl:text>      
          name() : </xsl:text>
    		<xsl:value-of select="name()" />
    		<xsl:text>
          local-name() : </xsl:text>
    		<xsl:value-of select="local-name()" />
    		<xsl:text>
          namespace-uri(): </xsl:text>
    		<xsl:value-of select="namespace-uri()" />
            <xsl:apply-templates/>
    	</xsl:template>
     
    </xsl:stylesheet>
    Le résultat :

    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
    name() : ns:root
          local-name() : root
          namespace-uri(): http://polymorphisme.com/ns/ns
     
          name() : ln
          local-name() : ln
          namespace-uri():
     
          name() : ns:ln
          local-name() : ln
          namespace-uri(): http://polymorphisme.com/ns/ns
     
          name() : nso:ln1
          local-name() : ln1
          namespace-uri(): http://polymorphisme.com/ns/nso
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  5. #5
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Alors j'ai testé et c'est bien ce que je pensais : ton apply-templates est mauvais.

    En effet "@*" signifie tous les attributs et "node()" signifie tous les noeuds (y compris attribut et texte). Donc tu rebalances un traitement XSL sur des éléments que tu ne veux pas traiter.

    Toi ce que tu veux c'est faire le traitement sur tous les éléments fils et ça, ça s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="*"/>
    Et voilà. \o/

  6. #6
    Membre régulier
    Inscrit en
    Juin 2009
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 237
    Points : 88
    Points
    88
    Par défaut
    Ok c'est super

    merci

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

Discussions similaires

  1. Trouver la list des element dans un menu avec webdriver
    Par stpaul04 dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 17/07/2014, 22h19
  2. Liste des elements absent d'en table
    Par Clorish dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/01/2008, 15h47
  3. probleme recuperer liste des elements
    Par am.adnane dans le forum Struts 1
    Réponses: 3
    Dernier message: 14/06/2007, 13h46
  4. Accéder à la liste des elements avec un ID commencant par x
    Par vodnok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/12/2006, 12h11
  5. Réponses: 2
    Dernier message: 14/09/2006, 22h26

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