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 :

XSL / XSLT / XPATH - Mettre un id en fonction de la position


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 3
    Points
    3
    Par défaut XSL / XSLT / XPATH - Mettre un id en fonction de la position
    Bonjour à tous,

    Dans le but de générer un sommaire, j'analyse un fichier XML et j'applique un template sur les h2 qui corresponde à une partie. Sauf que ces titres n'ont pas tout le temps un id donc il n'est pas possible de faire d'ancre.

    C'est pourquoi je cherche à mettre un id en fonction de l'occurence de h2.

    Voici un XML en entrée : XML
    Voici le XSL complet : 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
     
    <!-- Mettre des id aux h2 -->
    <xsl:template match="h2"> 	
    	<xsl:if test="not(string-length(./@id) > 0)">
    		<xsl:copy>
    			<xsl:copy-of select="@*"/>
    			<xsl:attribute name="id">
    				<xsl:text>title-</xsl:text>
    				<xsl:value-of select="position()" />
    			</xsl:attribute>
    			<xsl:apply-templates />
    		</xsl:copy>
    	</xsl:if>
    </xsl:template>
    En sortie, j'obtiens 4 id :
    • title-14
    • title-26
    • title-64
    • title-81


    Je souhaiterais obtenir
    • title-1
    • title-2
    • title-3
    • title-4


    S'il n'est pas possible de le faire directement dans le h2, je suppose qu'il faut que je me fasse une fonction qui boucle sur chaque h2 et qui incrémente le compteur.

    Mais j'ai du mal à voir où l'insérer dans mon XSL.

    Note: Je n'ai pas la main sur le fichier XML en entrée
    EDIT: Les h2 ne sont pas obligatoirement définis au même niveau (un h2 peut être au niveau 1, comme au niveau 2, 3, ...)

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="position()" />
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:number level='any' count='h2' format='1' from='/'/>

Discussions similaires

  1. XSLT - Trier/regrouper des noeuds en fonction de leur position
    Par Rackamm dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 10/03/2014, 15h58
  2. [XSLT][XPATH] current-date() fonction non-valide
    Par exe2bin dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/03/2010, 14h30
  3. [DEBUTANT] Editeur XSL, XSLT
    Par elitost dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/10/2004, 13h16
  4. Cours en Français sur XML-XSL et XPath
    Par Community Management dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 25/04/2002, 15h46

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