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 :

Comment ajouter plusieurs attribut


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Par défaut Comment ajouter plusieurs attribut
    Bonjour,

    Je dois élaborer deux transformations XML vers XML qui traiteront chacune l’un des documents XML afin d’exploiter les informations contenues dans les listes de joueurs incluses dans les métadonnées (dans l’élément <Joueurs>) pour :
    1. 1
    ) concernant le fichier commentaires-Noms.xml, enrichir les balisages des noms de joueurs (les éléments <persName>) en leur associant trois attributs : @type dont la valeur indiquera le poste du joueur s’il est connu ou
    « indetermine » sinon, @subtype dont la valeur sera le sigle de l’équipe dont le joueur fait partie ou « indetermine » si le nom de joueur n’est dans aucune des deux équipes et @ref dont la valeur code si le contenu de l’élément correspond au « nom », au « prenom » ou au « surnom » du joueur ;
    1. b
    ) concernant le fichier manip-source.xml, je dois baliser les noms des joueurs au moyen d’éléments <persName>, en associant trois attributs à ces derniers :
    @type dont la valeur indiquera le poste du joueur s’il est connu ou « indetermine » sinon, @subtype dont la valeur sera le sigle de l’équipe dont le joueur fait partie ou « indetermine » si le nom de joueur n’est dans aucune des deux équipes et @ref dont la valeur code si le contenu de l’élément correspond au « nom », au « prenom » ou au « surnom » du joueur.

    PS : Pour écrire ces transformations, j’ai pensé que j'aurai probablement besoin de savoir si un <nom> est bien le frère d’un <surnom> par exemple et donc si ces deux éléments partagent le même élément père. Je pense alors d'utiliser la fonction generate-id() qui attribut aux éléments repérés au moyen de l’expression xPath indiquée dans les parenthèses un identifiant qui reste le même pour un élément donné à chaque lecture de l’arbre XML.

    Ci-joint les deux fichiers en XML de départ et une de mes transformations mais je pense que je suis loin de la bonne feuille de style car je n'arrive pas à concrétisé ce qui est demandé et encore moins dans l'écriture et l'utilisation des generate-id().

    Merci pour vos réponses !
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Je viens de regarder de quoi il s'agit comme problème. Je ne m'en occupe que 1.1(?) et, en particulier, le rendement de l'attribut type. Vous pouvez développer vous-même les cas de subtype et ref et 1.b(?) en imitant l'exemple montré pour type.
    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
    	<xsl:template match="persName">
            <xsl:element name="{local-name()}">
                <xsl:attribute name="type">
                    <!--
                    <xsl:value-of select="child::encodingDesc/Joueur [position()=3]"/>
                    -->
                    <xsl:choose>
                        <xsl:when test="/TEI/teiHeader/encodingDesc/Joueurs/Joueur[Nom=current()/text()]/Poste !=''">
                            <xsl:value-of select="/TEI/teiHeader/encodingDesc/Joueurs/Joueur[Nom=current()/text()]/Poste" />
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="'indetermine'" />
                        </xsl:otherwise>
                    </xsl:choose>
                </xsl:attribute>
                <xsl:attribute name="subtype"/>
                <xsl:attribute name="ref"/>
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:template>
    p.s. D'ailleurs je ne vois pas pourquoi on ne peut pas avoir plusieurs joueurs de même Nom comme Carrasso, par exemple, et donc, dans ce cas, le problème ne serait pas bien posé - en tout cas, je vous laisse de régler ce genre de complication vous-même dans un temps futur.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Par défaut problème à moitié résolu !
    Bonjour,
    Je tiens à vous remercier pour votre réponse tsuji;
    Je pense que le problème est résolu pour la première parti, malgré quelques erreurs en passage du fichier résultant ou j'ai dû ajouter des boucles afin de spécifier les éléments dont j'avais vraiment besoin de les traiter.

    Par contre, pour la deuxième question j'ai un problème général parce que comme on le voit dans le résultat ci-après ou les 3 attributs ajouté ne s'applique pas correctement sur les noms de joueurs comme Maurice ou Belay et puis l'attribut subtype est affiché sur l'ensemble des autres éléments et ce n'est pas correct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <chunk ana="GN">
    <persName type="indetermine" subtype="indetermine" ref="indetermine">Maurice</persName></chunk>
    <persName type="indetermine" subtype="indetermine" ref="indetermine">-</persName><chunk ana="GN">
    <persName type="indetermine" subtype="indetermine" ref="indetermine">Belay</persName>
    <persName type="indetermine" subtype="indetermine" ref="indetermine">sort</persName></chunk>
    <persName type="indetermine" subtype="indetermine" ref="indetermine">et</persName><chunk ana="GN">
    <persName type="Attaquant" subtype="FCGB" ref="David">Bellion</persName></chunk>
    Merci d'avance !

  4. #4
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Bonjour, aladin: si le problème (lequel, hélas?) reste à vous déranger et qu'il n'est pas encore résolu, vous pouvez donner une résumé: en quel fichier xsl s'appliquant sur quel fichier xml pour quel résultat attendu... J'avoue je ne sais quoi à regarder et sur quoi je dois regarder de plus près. Avec plus de précision, je pourais peut-être regarder encore le problème pendant weekend. Si il n'y a plus de problème, c'est tant mieux!

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/05/2009, 23h41
  2. [E-03] comment ajouter plusieurs colonnes d'un coup ?
    Par Emily2711 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/02/2009, 09h25
  3. comment ajouter plusieurs blancs à une variable
    Par sasseur dans le forum SAS Base
    Réponses: 8
    Dernier message: 20/10/2008, 12h57
  4. [MySQL] comment ajouter plusieurs articles dans une BD MySql+tables temporaires
    Par forbidden_fruit dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/05/2008, 12h00
  5. [JDOM] Comment ajouter un attribut xml:lang ?
    Par Smix007 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 18/03/2008, 09h15

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