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] différencier 2 tags [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Par défaut [XSLT] différencier 2 tags
    Bonjour,

    je me suis mis au XSL aujourd'hui. En fait je travail sur l'importation d'un fichier XML comportant des tags se référant à une norme ISO.

    dans mon fichier XSL j'ai crée les paths:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:apply-templates select="Metadata/distInfo/distributor/distorFormat/formatName"/>
    <xsl:apply-templates select="Metadata/dataIdInfo/dsFormat/formatName"/>
    ...
    et puis ensuite pour récupérer les valeurs je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:template match="formatName">
    	 FORMAT_DATA:<xsl:value-of select="formatName"/>#
    </xsl:template>
    et mon interrogation concerne le fait que je possède 2 tags nommés FormatName.
    Comment les différencier qd je fait le <xsl:template match="formatName" ?

    merci

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    tu peux distinguer les deux en affinant les attributs match de tes templates, en spécifiant quel doit être la balise parente de la balise formatName :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template match="distorFormat/formatName">
      ...
    </xsl:template> 
     
    <xsl:template match="dsFormat/formatName">
      ...
    </xsl:template>
    Tu n'es pas obligé de limiter au parent, tu peux également spécifier d'autres balises ancêtres.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 57
    Par défaut
    merci je saisi le truc à présent!

    par contre j'ai une nouvelle question


    je possède le code xml suivant:

    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
     
    <resRefDate>
            <refDate>03/01/2006</refDate>
            <refDateType>
              <DateTypCd value="creation"/>
            </refDateType>
          </resRefDate>
          <resRefDate>
            <refDate>05/02/2006</refDate>
            <refDateType>
              <DateTypCd value="revision"/>
            </refDateType>
          </resRefDate>
          <resRefDate>
            <refDate>0</refDate>
            <refDateType>
              <DateTypCd value="publication"/>
            </refDateType>
          </resRefDate>
    cad 3 champs de type date de la norme ISO. J'aimerais récupérer la valeur de ces dates mais j'ai un souci, voici comment je procède:

    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
     
    <xsl:template match="refDateType/DateTypCd">
    		<xsl:variable name= "date_type"><xsl:value-of select= "@value"/></xsl:variable>
     
    		<xsl:choose>
      			<xsl:when test="$date_type = 'creation'">
      			<xsl:template match="refDate">
        			MD_DATECREA: <xsl:value-of select="."/>#
      			</xsl:template>
      			</xsl:when>
     
      			<xsl:when test="$date_type = 'revision'"> 
                            <xsl:template match="refDate">
        			MD_DATEMAJ: <xsl:value-of select="."/>#
      			</xsl:template>
      			</xsl:when>
      			<xsl:when test="$date_type = 'publication'">
        			<xsl:template match="refDate">
        			MD_DATEVALID: <xsl:value-of select="."/>#
      			</xsl:template>
      			</xsl:when>
    		</xsl:choose>
    Mais problème, aucune valeur ne s'affiche après MD_DATECREA, MD_DATEMAJ et MD_DATEVALID

    Quelqu'un voit-il mon erreur?

    merci à vous

  4. #4
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Il est interdit d'imbriquer les <xsl:template>...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [XSLT] ouvrir un tag avec conditionnement.
    Par Drag dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/07/2010, 19h00
  2. [XSLT]GROUPER des tags
    Par marxan dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/12/2007, 14h22
  3. [XSLT] fichier.xml?tag=import récupérer avec get
    Par LeXo dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/10/2007, 15h28
  4. [Débutant][XSLT] Gérer des tags XML identiques
    Par Michel_be dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 19/09/2007, 15h57
  5. [XSLT] Syntaxe des namespaces (ns:tag) non comprise
    Par LoK dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 31/12/2006, 11h39

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