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 :

XPath XSL : comment afficher la valeur d'un attribut seulement si il est pair


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut XPath XSL : comment afficher la valeur d'un attribut seulement si il est pair
    Bonjour,

    Dans notre sortie html, nous souhaitons afficher la valeur de l'attribut @n de l'élément <lb> lorsqu'il est pair uniquement, et cela dans la cellule d'un tableau.
    Voici l'extrait de notre fichier xml :

    <div type="edition" xml:lang="la">
    <ab>
    <lb n="1"/> ---
    <lb n="2"/>[---]++ỊỊỊIDXIII
    <lb n="3"/>H•S•P•EST
    <lb n="4"/>CAECILIVS VICTOR
    <lb n="5"/>C•LEG•XII•FVLMINNATE
    <lb n="6"/> FRATRI•DVLCISSIMO

    </ab>
    </div>

    Dans notre fichier xsl nous avons testé ce code :
    <table>
    <td width="10">
    <pre>
    <xsl:apply-templates select="//div[@type='edition']/ab/lb"/>

    </pre>
    </td>
    </table>
    <xsl:template match="//div[@type='edition']/ab/lb">

    </xsl:for-each>
    <xsl:for-each select="@n">
    <xsl:if test="(position() mod 2)=2">
    <xsl:value-of select="."/><br/>
    </xsl:if>
    </xsl:for-each>
    </xsl:template>

    Dans l'affichage html nous obtenons false et true, donc le test marche mais on ne comprends pas comment ensuite afficher les valeurs de l'attribut n lorsqu'ils sont pairs.
    Merci pour aide !

  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:for-each select="@n">
    <xsl:if test="(position() mod 2)=2">
    <xsl:value-of select="."/><br/>
    </xsl:if>
    </xsl:for-each>
    Il devrait être un coup de miracle pour qu'il produise true ou false dans le test. En tout cas, position() sur un attribut @n, ça n'a pas de sens.

    En tout cas, on peut faire grosso modo comme ça.
    Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="//div[@type='edition']/ab/lb">
        <xsl:if test="(position() mod 2)=0">
            <xsl:value-of select="normalize-space(following-sibling::text())"/><br/>
        </xsl:if>
    </xsl:template>

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour votre réponse. Nous avons appliqué le code proposé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <xsl:template match="//div[@type='edition']/ab/lb">
            <xsl:if test="(position() mod 2)=0">
                <br/><xsl:value-of select="normalize-space(following-sibling::text())"/><br/>
            </xsl:if>
    </xsl:template>
    mais cela ne marche pas comme nous le souhaitons. Nom : affichage html.png
Affichages : 653
Taille : 4,0 Ko
    Voilà ce que cela affiche : le texte des lignes paires. Or nous souhaitons voir affiché le numéro des lignes paires (valeurs de l'attribut n de l'élément lb) en face des lignes correspondantes, donc que 2, 4, 6.
    Nom : numlignes.JPG
Affichages : 631
Taille : 13,4 Ko


    Avez-vous encore une idée ?
    merci

  4. #4
    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
    J'ai pas bien compris. Sauf que le formatage, il démontre comment ça joue des mod, position()... Je ne prends pas en compte les @n, mais si on veut, remplacer position() par @n et cela se fait aussi marcher.

    Si vous voulez un html au moins un peu valable, comme ça avec numéroté les sorties.
    Code xslt : 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:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="iso-8859-1" omit-xml-declaration="yes" indent="yes"
        doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd"
    />
    <xsl:template match="/">
    <html><head></head><body>
        <table>
            <tr width="10">
                <td>
                    <xsl:apply-templates select="//div[@type='edition']/ab/lb"/>
                </td>
            </tr>
        </table>
    </body></html>
    </xsl:template>
    <xsl:template match="//div[@type='edition']/ab/lb">
        <xsl:if test="(position() mod 2)=0">
            <pre>
                <xsl:value-of select="concat(position(), ' ', normalize-space(following-sibling::text()))"/>
            </pre>
        </xsl:if>
    </xsl:template>
    </xsl:stylesheet>

Discussions similaires

  1. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  2. Réponses: 20
    Dernier message: 30/05/2006, 13h24
  3. comment afficher les valeurs d'une semaine
    Par duck54 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/05/2006, 22h57
  4. [FPDF] comment afficher une valeur formatée
    Par fabrice1596 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/04/2006, 19h37
  5. Comment afficher une valeur contenue dans une variable ?
    Par manubrard dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 15h56

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