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 :

@n pour des notes, avec n+1 généré automatiquement.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 10
    Points : 9
    Points
    9
    Par défaut @n pour des notes, avec n+1 généré automatiquement.
    Bonjour à tous,

    Je travaille actuellement à produire une édition HTML d'un court texte pour lequel j'ai la volonté de faire quelques notes de renvois en bas de page.

    Voici mon XML source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <text>
               <p ana="description">Voici le texte d'un paragraphe<note>Ceci est une note.</note> descriptif.</p>
             <said ana="replique" who="JM">- Bonjour, ceci est ma première réplique</said>     
             <p>Ceci est un paragraphe comprenant un autre mot<note>Définition de "mot".</note> à définir.</p></text>
    Voici ma tentative de transformation 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
    20
    21
    22
    23
    24
    <xsl:template match="note">
            <xsl:variable name="Notetraitée"><xsl:value-of select="."/></xsl:variable>
            <xsl:if test="not(preceding::note[.=$Notetraitée])"> <!-- ou, ici "not(preceding::persName=$Notetraité)" = NE PAS AVOIR DE PREDECESSEUR QUI S'APPELLE NOTE ET QUI SOIT EGAL A LA VARIABLE Notetraite EN COURS DE TRAITEMENT -->
                <xsl:element name="note">
                    <xsl:attribute name="n">
                <xsl:value-of select="count(/text/descendant::note[.=$Notetraitée])"/>
                    </xsl:attribute>
                    <xsl:attribute name="place">foot</xsl:attribute>
                    <xsl:apply-templates/>
                </xsl:element> <!-- dans le cas du test, affichage de la valeur -->
     
                <!-- on compte le nombre de <note> qui ont la même valeur, dans tout le document (on va chercher tous les descendants qui ont la même valeur que l'élément en cours de traitement -->
     
                <xsl:for-each select="following::note[.=$Notetraitée]"> 
                    <xsl:element name="note">
                    <xsl:attribute name="n">
                        <xsl:value-of select="count(/text/descendant::note[.=$Notetraitée])+1"/>
                    </xsl:attribute>
                    <xsl:attribute name="place">foot</xsl:attribute>
                </xsl:element>
     
                </xsl:for-each>
            </xsl:if>
        </xsl:template>
    Ma volonté est simplement de générer un fichier HTML où, pour chaque note, celles-ci porteraient un nombre qui aurait été généré automatiquement (par ma fonction for-each). Je voudrais, à terme, établir des liens (aller-retour) entre l'endroit où se trouve l'appel de note, et ladite note en bas de page.

    J'ai essayé maintes transformations, mais cela ne fonctionne pas et je m'arrache les cheveux.

    Je vous remercie par avance pour les éclaircissements que vous pourrez m'apporter.

    Jonas

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    <xsl:value-of select="count(/text/descendant::note[.=$Notetraitée])"/>
    Cette valeur qui sort d'une fonction xpath, et cette dernière a un contexte fixe: /text. Par conséquence, la fonction résulte partout et toujours la même valeur.

    Peut-être c'est ça qu'on cherche?
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:attribute name="n">
        <xsl:value-of select="count(preceding::note[.=$Notetraitée])" />
    </xsl:attribute>
    la même écriture dans les deux places.

Discussions similaires

  1. Condition pour des dates avec strcmp
    Par CLeBeR dans le forum Langage
    Réponses: 4
    Dernier message: 16/09/2015, 22h19
  2. Réponses: 1
    Dernier message: 13/03/2012, 10h37
  3. Réponses: 2
    Dernier message: 09/09/2008, 22h03
  4. Réponses: 9
    Dernier message: 02/05/2006, 21h17
  5. Réponses: 6
    Dernier message: 23/05/2005, 15h38

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