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 :

[XSLT] Extraire certaines balises d'un document XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut [XSLT] Extraire certaines balises d'un document XML
    Bonjour à tous !

    J'ai un document XML (passablement long) duquel j'aimerais extraire certaines balises, pour les traiter ensuite (en fait, je veux déserializer un objet qui est contenu dans ces balises).

    J'imaginais donc un XSLT de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:template match="//claims">
    		<xsl:value-of select="claims"/>
    	</xsl:template>
    </xsl:stylesheet>
    L'idée étant donc de filtrer le document XML pour n'afficher que la balise claims et son contenu, mais en XML !

    Et je n'y arrive pas... Quelqu'un a-t-il une idée ? Merci d'avance !
    Wookai


  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    "je n'y arrive pas" : as tu au moins un resultat?

    "passablement long" : tu peux envoyer un petit bout (frangment avec claims)?

    sinon essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:template match="//claims">
    		<xsl:value-of select="."/>
    	</xsl:template>
    </xsl:stylesheet>
    Ce n’est pas en cassant le thermomètre que vous ferez baisser la température

  3. #3
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Merci pour ta réponse ! Le "je n'y arrive pas" voulait dire que j'obtiens une page "blanche" lors de l'affichage de mon XML traité avec le XSL...

    Voici la partie intéressante du XML :
    Code response.xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="filterClaims.xsl"?>
    <ep-patent-document id="EP05102939A1" file="EP05102939NWA1.xml" lang="fr" country="EP" doc-number="1712958" kind="A1" date-publ="20061018" status="n" dtd-version="ep-patent-document-v1-1">
      <claims id="claims01" lang="fr">
        <claim id="c-fr-0001" num="0001">
          <claim-text>Mécanisme d'affichage sautant de l'heure pour mouvement de montre, <b>caractérisé en ce qu'</b>il comporte :
            <claim-text>- une roue de commande (14) entraînée en rotation par le mouvement dans le sens anti-horaire à raison d'un pas par heure et d'un tour en douze heures et possédant onze dents (15) en forme de dent de scie qui présentent un flanc sensiblement radial (16) et un flanc incliné (17), ladite roue ayant un pas angulaire normal de 30°, mais deux de ses dents (15a, 15b) étant espacées d'un pas angulaire de 60° ;</claim-text>
            <claim-text>- un disque (18) entraîné pas à pas en rotation autour de son arbre (22) par ladite roue (14) dans le sens horaire et possédant douze dents (19) embrassant un secteur dont la longueur de l'arc est égal à la circonférence de ladite roue, et comprenant :
              <claim-text>. une série de dix dents (8, 9, 10, 11, 12, 1, 2, 3, 4, 5) en forme de dent de scie similaires à celles de ladite roue ;</claim-text>
              <claim-text>. une onzième dent (7) adjacente à l'une des dents (8) d'extrémité de ladite série, ladite dent, en forme de dent de scie, présentant un flanc sensiblement radial et un deuxième flanc (20) qui, sur une moitié de sa longueur, épouse d'abord le contour circulaire du disque puis, sur l'autre moitié est incliné ; et</claim-text>
              <claim-text>. une douzième dent (6) adjacente à la onzième (7), présentant un flanc sensiblement radial et un deuxième flanc (21) qui épouse le contour circulaire du disque jusqu'à rejoindre l'autre extrémité de la série de dix dents ;</claim-text>
            </claim-text>
            <claim-text>- un élément indicateur (26) solidaire dudit disque et agencé de manière à se positionner, à chaque pas de celui-ci, en regard d'une première série d'index d'heure fixes disposés sur un angle égale à celui dudit secteur denté ; et</claim-text>
            <claim-text>- un ressort de rappel (23) lié à l'arbre (22) du disque de manière à se charger lorsque celui-ci est entraîné dans le sens horaire.</claim-text>
            <!-- EPO <DP n="8"> -->
          </claim-text>
        </claim>
        <claim id="c-fr-0002" num="0002">
          <claim-text>Mécanisme selon la revendication 1, <b>caractérisé en ce que</b> ladite roue de commande (14) est solidaire en rotation d'une étoile de douze dents (12) entraînée par le doigt (11) d'un mobile (10) entraîné, lui-même, par le mouvement à raison d'un tour par heure.</claim-text>
        </claim>
        <claim id="c-fr-0003" num="0003">
          <claim-text>Mécanisme selon l'une des revendications 1 et 2, <b>caractérisé en ce que</b> la première série d'index est disposée sur un cadran (24) recouvrant ledit disque (18) et percé d'un guichet (25) conformé et dimensionné de manière à laisser apparaître ledit élément indicateur (26) tout au long de sa course en regard des index.</claim-text>
        </claim>
        <claim id="c-fr-0004" num="0004">
          <claim-text>Mécanisme selon la revendication 3, <b>caractérisé en ce que</b> ledit disque (18) est solidaire, en son centre, d'une aiguille (27) placée de manière à se positionner, à chaque pas du disque, en regard d'une deuxième série d'index d'heure fixes disposées sur le cadran sur un secteur dont l'angle est égale à celui dudit secteur denté, à l'opposé de la première série d'index.</claim-text>
        </claim>
      </claims>
    </ep-patent-document>

    Et voici mon XSL :
    Code filterClaims.xsl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="//claims">
        <xsl:value-of select="."/>
      </xsl:template>
    </xsl:stylesheet>

    L'affichage dans Firefox me donne "rien", c'est-à-dire "page grise" ...
    Wookai


  4. #4
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    tu peux essayer cela
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output 
      		encoding="ISO-8859-15"
      		method="xml"
      		indent="yes" />
     
     
    	<xsl:template match="/">
        		<xsl:apply-templates select="//claims"/>
      	</xsl:template>
     
     
    	<xsl:template match="node() | @*">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>

  5. #5
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Merci !! Ca fonctionne parfaitement !

    Est-ce que tu pourrais s'il-te-plaît m'expliquer en deux mots le principe de ta solution ? Parce que je ne vois pas comment j'aurais dû y arriver ...
    Wookai


  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Le premier match selectionne tous les noeuds claims, et a partir de là pour chacun, on copie tous les sous-noeuds et attributs récursivement.

  7. #7
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    rien à rajouter

  8. #8
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Merci beaucoup pour l'explication !
    Wookai


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier le contenu des balises d'un document XML
    Par habsbu dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/06/2011, 09h52
  2. extraire une balise d'un fichier xml
    Par sokles dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 14/05/2007, 15h45
  3. [MPD] comment extraire le MPD d'un document XML ?
    Par walid0577 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 02/04/2007, 23h11
  4. [XSLT]Problème de transformation d'un document XML.
    Par JM_Cholet dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/01/2007, 13h29
  5. [XSLT] Filtrer certaines balises d'un fichier XML
    Par arthix dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 07/07/2006, 12h21

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