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][VARIABLE] comment un noeud est-il stocké?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 4
    Points
    4
    Par défaut [Résolu][XSLT][VARIABLE] comment un noeud est-il stocké?
    Je me suis posé une question par souci d'optimisation.

    En faisant, <xsl:variable name='node' select='un/noeud/quelconque'/>, je voulais savoir comment étaient faites les choses.
    Je veux savoir si le noeud 'quelconque' est référencé (dans le genre pointeur), ou alors le noeud est intégralement copié dans la variable.

    Quelqu'un aurait un élément de réponse à ce sujet?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Dans ton cas, ta variable est de type node-set donc l'ensemble de noeuds retourné par ton expression XPath est rassemblé sous la forme d'un arbre temporaire qui peut être utilisée comme racine dans n'importe quelle expression XPath. Je ne sais pas si cela t'éclaire d'avantage.

    Pour moi il s'agit d'une copie comme pour le result tree fragment

    Pour plus d'info : http://www.w3.org/TR/1999/REC-xslt-19991116#variables

    Voilà.

    Moi ce que j''aimerai savoir c'est ce que tu as comme idée derrière la tête, cela peut être intéressant comme débat.

    Gendalf, avanceur de schmilblick

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Oui, je suis au courant que c'est de type node-set. J'en avais débattu une fois avec Erwy (node-set et node-fragment).

    Mon souci n'est pas là. Je me suis sûrement mal exprimé.

    Mon interrogation se porte sur cette arbre temporaire node-set : la formulation de ta phrase a l'air de répondre partiellement à ma question.

    Je veux savoir comment est géré une variable.
    D'où mon souci de savoir si ce noeud est véritablement stocké dans la variable ou alors, le fait de faire "$node" me ramène à la racine du noeud 'quelconque' dans l'arbre XML (d'où la notion de pointeur référencé).

    J'ai l'impression d'être de moins en moins clair...

    edit : merci pour le lien de w3c mais la réponse ne semble pas y être (je ne l'ai du moins pas vu), je l'avais déjà consulté avant de poster.

    L'optimisation dont je parle est de savoir si c'est gênant de stocker un noeud avec une arborescence pouvant avoir un grand nombre de niveaux (~100-1000), de savoir comment la gestion mémoire est faite, de savoir si l'exécution se trouve ralenti après ce stockage.

  4. #4
    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
    Bonjour,

    le W3C (à ma connaissance) ne donne pas le détail d'implémentation des variables. L'implémentation dépend de chaque éditeur, et tous ne diffusent pas d'informations précises à ce sujet. Pour Saxon et Xalan, le code source est disponible, et une documentation concernant l'implémentation est même disponible pour Xalan. Pour MSXML, c'est le black-out. Pour XT, pas la moindre idée.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    @GrandFather : merci pour tes précisions.

    J'ai fais un test assez bête et ma conclusion est allé du côté d'un pointeur référencé (Je met ce que je pense pour ceux que ça intéresseraient éventuellement).

    J'ai "stocké" un noeud dans une variable quelconque et j'ai essayé d'accéder à un noeud qui n'appartenait pas à ce noeud là (c'est clair?!)
    En gros, j'ai testé l'expression XPATH suivante "$node/../../trucmuche[@ID='42']" et je n'ai eu aucun souci...d'où ma conclusion.

    J'ai mis "stocké" entre guillements parce que, d'après ce test, je trouve "référencé" ou "pointé" beaucoup plus appropriés.

    Vous trouvez ça cohérent ?

  6. #6
    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
    Du point de vue du programmeur XSLT, une variable XSLT n'est effectivement qu'une collection de pointeurs vers des noeuds du flux d'entrée XML (définition incomplète, car dans le cas des Result Tree Fragments un arbre est créé). Ce qui signifie qu'en partant de cette variable et en utilisant les axes XPath tu peux parcourir tout l'arbre d'entrée XML. C'est dans la spécification W3C.

    Maintenant, la façon précise dont cela est implémenté dépend du processeur lui-même.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Très bien . C'est ce que j'attendais comme réponse .

  8. #8
    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
    Dans ce cas, place le tag [Résolu] sur ton thread.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/09/2009, 16h58
  2. [XSLT] Application template sur noeud variable
    Par LuckyLiam dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/08/2009, 17h42
  3. Sauriez-vous me dire comment la récursivité est utilisée ici (AB comptage des noeuds)
    Par beegees dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 20/03/2008, 22h33
  4. Réponses: 3
    Dernier message: 17/08/2007, 11h20
  5. [XSLT] Attribut dont le nom est stocké dans une variable ?
    Par Xfennec dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/03/2006, 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