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] Aide pour comprendre ce que ça fait


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut [XSLT] Aide pour comprendre ce que ça fait
    Voilà je connais pas grand-chose à xslt mais je voudrais bien comprendre ce que le code ci-dessous fait:

    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
     
    <xsl:template match="@*|node()|text()">
          	<xsl:copy>
                    <xsl:apply-templates select="@*|*|text()"/>
            </xsl:copy>         
    </xsl:template>
     
    <xsl:template match="From">
    <To>
    <xsl:call-template name="tokenize-fromto">
            <xsl:with-param name="str"><xsl:value-of select="."/></xsl:with-param>
            <xsl:with-param name="splitString" select="$SEMICOLON"/>
       </xsl:call-template>
    </To>
    </xsl:template>
    En fait il semblerait que le token "From" n'est jamais matché. Le xml ressemble à ceci:

    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <NeBiEnvelope xmlns="http://www.nebi.biz/schemas/bd/nebienvelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" BusinessDocumentVersion="7.0" xsi:schemaLocation="http://www.nebi.biz/schemas/bd/nebienvelope NeBiEnvelope_L_0_3.xsd">
        <Header>
            <To>dummy.com;JMS;dummy</To>
            <From>test.com;JMS;test</From>
            <Dialog>BC:Order_1.0</Dialog>
            <DialogId>1233554</DialogId>
            <MessageType>BD:ExecutionStatus_L_1.0</MessageType>
            <MessageId>1162478016.777.INTF_TEST@WFM015</MessageId>
            <Reference Role="buyer" Type="BusinessAgreement">1233554</Reference>
            <SequenceId>23565</SequenceId>
        </Header>
        <Body>
    ...

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    En fait il semblerait que le token "From" n'est jamais matché.
    il le dévrait pourtant! dans le doute peux tu essayer avec ceci?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="/">
          	<xsl:copy>
                    <xsl:apply-templates select="@*|*|text()"/>
            </xsl:copy>         
    </xsl:template>

  3. #3
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    euh ben non ça marche pas trop. Je n'ai plus les tag name en sortie juste leur valeur.

    est-ce que par hasard tu saurais m'expliquer ce que fait le xlt?

  4. #4
    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
    il transforme un xml en un autre xml avec des modifs de structure et de certaines données.

  5. #5
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    euh ça j'avais compris. Ce que je voudrais savoir par exemple, c'est ce que signifie:

  6. #6
    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
    veut dire dans l'ordre :

    - tous les attributs
    - tous les noeuds
    - tous le texte dans les noeuds

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Ce code est assez classique : il s'agit de la recopie à l'identique d'une source XML, à l'exception des éléments <From> qui font l'objet d'un traitement particulier par la fonction "tokenize-fromto".

    Le deuxième template gère les éléments <From>, tandis que le premier template s'applique pour tous les autres noeuds. En fait, les deux templates seraient éligibles pour traiter les éléments <From> (du fait que node() matche tous les types de noeuds, y compris les <From>), mais les règles de calcul de priorité des templates fixés par la spécification XSLT font que les templates qui ont un attribut match comprenant des caractères jokers (*) ou des fonctions génériques comme node() ont une priorité moindre par rapport aux templates "matchant" un élément ou un attribut spécifique (le deuxième template dans notre cas précis).

  8. #8
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Je comprend un peu mieux comment ça marche. La seule chose c'est qu'apparemment tous les nodes passent par le premier template et celui pour From n'est jamais utilisé. Une idée sur le pourquoi du comment?

  9. #9
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Sans doute un problème d'espace de nom. Tous les éléments descendants de <NeBiEnvelop> appartiennent à l'espace de noms http://www.nebi.biz/schemas/bd/nebienvelope, et cela n'apparait pas dans l'attribut match du template de Form, alors que node() "matche" tous les noeuds quel que soit leur espace de noms. Pour que ça marche, on devrait avoir quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:nebi="http://www.nebi.biz/schemas/bd/nebienvelope">
    ...
      <xsl:template match="nebi:From">
        ...

  10. #10
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    aaaahhhhh c'est de mieux en mieux. J'obtiens ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <From xmlns="" xmlns:nebi="http://www.nebi.biz/schemas/bd/nebienvelope">
    <OrganisationId>test.com</OrganisationId>
    <DestinationType>JMS</DestinationType>
    <Destination>test</Destination>
    </From>
    Est-ce normal que xmlns est vide?

  11. #11
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Tu n'as que ça en sortie ?

  12. #12
    Membre régulier Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 84
    Points
    84
    Par défaut
    Non. J'ai sélectioné la partie qui me semblait intéressante en fait.

Discussions similaires

  1. Aide pour comprendre 2 séries d'instructions
    Par raou123 dans le forum Assembleur
    Réponses: 1
    Dernier message: 11/04/2006, 22h43
  2. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 13h22
  3. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 17h54
  4. [XSLT] aide pour faire un tableau HTML avec fusion de lignes
    Par utwor dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 02/01/2006, 21h41
  5. Réponses: 4
    Dernier message: 28/07/2005, 16h22

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