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 :

ajout de balise <p> pour tous les résultats de xsl:if


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut ajout de balise <p> pour tous les résultats de xsl:if
    Bonjour, pardon si cette question a déja été posée, je suis débutante en xslt
    j'ai un code xml qui contient plusieurs balises portant le même nom <utext>, mon but est d'extraire le contenu de toutes ces balises, j'ai écrit un code xslt qui a bien fonctionné, mais maintenant je voudrai mettre le résultat dans une balise <p></p>. mais pour le moment seulement la première ligne est entre <p></p>.
    désolée si je n'ai pas été assez claire je vous mets le xml, xslt et le résultat.

    xml :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <topic project="Chapitre">
        <helptextnonscroll>
            <document   >
                <utext textstyleno="2">Environnement </utext>
            </document>
        </helptextnonscroll>
        <helptextscroll>
            <document >
                <table >
                    <row>
                        <cell >
                            <utext textstyleno="2">Introduction</utext>
                        </cell>
                        <cell >
                            <utext textstyleno="3">Ce chapitre présente*:</utext>
                            <utext textstyleno="3" br="0">l</utext>
                            <utext textstyleno="4" br="0"></utext>
                            <utext textstyleno="3" br="0">environnement de travail*</utext>
                            <utext textstyleno="3" br="0">les différentes représentations possibles du dispositif </utext>
                        </cell>
                    </row>
                </table>
                <table >
                    <row>
                        <cell >
                            <utext textstyleno="2">Contenu</utext>
                        </cell>
                        <cell >
                            <utext textstyleno="3">Ce chapitre couvre les sujets suivants*:</utext>
                        </cell>
                    </row>
                    <row>
                        <cell />
                        <cell >
                            <utext textstyleno="6" tag="1" parastyleno="6">Environnement de travail</utext>
                        </cell>
                    </row>
                    <row>
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        exclude-result-prefixes="xs"
        version="1.0">
     
     
        <xsl:output method="xml" omit-xml-declaration="no" encoding="ISO-8859-1"/>
     
        <xsl:template match="//topic/helptextnonscroll/document">
            <xsl:if test="//utext">
                <p> : <xsl:value-of select="utext"/> </p>
            </xsl:if>
        </xsl:template> 
     
     
    </xsl:stylesheet>

    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
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <p> : Environnement </p>
     
    Introduction
     
     
    Ce chapitre présente*:
     
    l
    ’
    environnement de travail*
     
    les différentes représentations possibles du dispositif 
     
     
    Contenu
     
     
    Ce chapitre couvre les sujets suivants*:
     
    Environnement de travail
    comme vous constatez, seule la première ligne est entre <p></p>

  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
    Vue de la résultat... qu'il y a des lignes blanches etc... ça montre que l'auteur a perte de contrôle et a laissé le comportement par défaut prenant le contrôle. C'est toujours un mauvais signe. Qu'il sorte justement tous les utext est bien par chance que le xml n'a pas d'autres textes que utext et les espace blancs.
    <xsl:template match="//topic/helptextnonscroll/document">
    Il y a seulement un helptextnonscroll, n'est-ce pas? Les autres sont helptextscroll !!! Et c'est pour ça qu'une seule ligne soit produite enveloppé par la balise p.

    Et puis
    <xsl:if test="//utext">
    C'est un test questionnant l'existence de utext comme descendant à partie de la racine même du xml entier, pas du tout à partie de l'élément document. Donc, toute référence du contexte, .../document est perdue. C'est bien entendu incorrect.

    Si la réference des chaînes /topic/helptextnonscroll/document et /topic/helptextscroll/document sont fonctionnellement importantes pour l'application en place, on peut faire proprement comme ça.
    Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="/">
        <result>
            <xsl:apply-templates select="topic/helptextnonscroll/document|/topic/helptextscroll/document" />
        </result>
    </xsl:template>
    <xsl:template match="/topic/helptextnonscroll/document|/topic/helptextscroll/document">
        <xsl:if test=".//utext">
            <xsl:for-each select=".//utext">
                <p> : <xsl:value-of select="."/> </p>
            </xsl:for-each>
        </xsl:if>
    </xsl:template>
    On peut même faire perdre le xsl:if aussi, si on veut, sans trop dégradant la performance pour un xml de cette taille... mais c'est juste un petit détail.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour, merci beaucoup tsuji pour votre réponse et vos explications, ça marche très bien

Discussions similaires

  1. Ajouter un onglet au portail (pour tous les utilisateurs)
    Par Bandit69330 dans le forum Cognos
    Réponses: 2
    Dernier message: 12/01/2011, 09h39
  2. Réponses: 3
    Dernier message: 06/09/2007, 14h31
  3. [MySQL] 1 seul tableau pour tous les résultats de requetes
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/05/2006, 20h12
  4. TEdit numérique pour tous les claviers
    Par totofweb dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/06/2004, 11h20

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