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] appliquer en cascade


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Par défaut [XSLT] appliquer en cascade
    Bonjour

    Je dispose d'une feuille XSLT qui permet d'extraire du contenu d'un document XML sous la meme forme que l'entrée. On a donc un ensemble résultat inclus dans l'ensemble de départ.

    Par exemple

    <racine>
    <a><x>...</x><y>...</y></a>
    <b><x>...</x><y>...</y></b>
    <c><x>...</x><y>...</y></c>
    </racine>


    qui ressortirait :

    <racine>
    <a><x>...</x><y>...</y></a>
    <c><x>...</x><y>...</y></c>
    </racine>

    c'est donc un filtre

    j'ai une autre feuille XSLT qui transforme la structure précédente en une autre structure.

    Ce que je voudrais maintenant, c'est utiliser ma première feuille pour créer cette nouvelle structure mais uniquement sur les éléments filtré.

    J'espère que tout est bien clair. En d'autres termes enchainer la feuille XSLT 1 qui prend la structure XML A et filtre pour produire A' inclus dans A, et poursuivre avec la feuille XSLT 2 qui prend une structure du document A quelconque et la transforme en structure du document B.


    j'ai donc essayé xsl import et xsl include, le premier était je pense ce qui convenait mais non ca ne marche pas, j'ai tout le contenu du doc XML sans filtre, et le deuxieme non plus mais je m'y attendais...

    est ce que je veux faire est faisable, et si oui comment ? je voudrais éviter un bête copier coller ou deux appels aux moteurs XSLT ce qui serait un peu moins élégant je trouve


    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Si tes codes xslt ne sont pas trop long, mets les en ligne, il est tout a fait possible qu'on puisse effectuer ce traitement en une seule fois.

  3. #3
    Membre confirmé
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Par défaut
    c'est assez long mais je peux les mettre en ligne


    la seule chose c'est que je ne souhaite pas que ca soit fait en une seule fois, je souhaitais vraiment le faire en deux feuilles xslt

    je pensais que c'était faisable, comme on spécifie une feuille dans un doc xml, non ?

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    demande etrange surtout que pour faire un "filtre" tu ne devrais pas avoir besoin d'une feuille xslt(c'est pour ca que je ne comprends pas bien l'interet de la premiere).la une question:
    Est ce que tu veux deux fichiers en sorties?le trie + le modifié?
    Parce que si c'est le cas il est nettement preferable de faire le traitement l'un apres l'autre.
    S'il n'y a que le modifié qui t'interesse je comprends moins, surtout que même s'il y a plusieurs feuilles xslt "filtres" tu devrais pouvoir l'eviter en utilisant un processeur xslt et des parametres.
    J'ai vraiment l'impression que tu choisit la methode la plus complexe et la moins adaptée
    Explique un peu plus ton objectif.

  5. #5
    Membre confirmé
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Par défaut
    en fait les deux étapes sont très décomposées pour le moment, elles doivent etre bien séparées car c'est pour l'ébauche d'un projet, donc chaque page répond à un besoin spécifique et un seul

    il y aura ensuite ou non mélange des deux feuilles ou appel successif, moi pour le moment tout ce que j'aimerais c'est pas du tout gagner en compléxité en tant que calcul ou en code sur les feuilles, mais bien juste appeller une première feuille puis une deuxième sans ce soucis de ces considérations

    en gros une feuille qui filtre, une feuille qui modifie la structure, est ce qu'on PEUT appeller dans la deuxième la première et effectuer sur le résultat de la première les opérations de la deuxième et si oui comment

    voila c'est tout, merci pour tes conseils, je ne cherche pas l'optimisation dans mon "exemple" mais un peu un cas d'école si tu veux pour bien décomposer deux étapes

    si tu preferes il me faut une feuille etape 1 et une feuille etape 2

    donc la complexité ou l'amélioration ne compte pas trop pour le moment, ce qui compterait ca serait de savoir si c'est faisable avec un include ou une commande de ce genre.

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Citation Envoyé par guipom
    donc la complexité ou l'amélioration ne compte pas trop pour le moment, ce qui compterait ca serait de savoir si c'est faisable avec un include ou une commande de ce genre.
    Simplement en xslt non.
    Avec beaucoup de complexité oui,en theorie, en appelant le resultat de la premiere feuille dans une variable, les templates de la premiere devant etre nommé etc....Puis en transformant le fragement node produit en node set par une instruction processeur.Theoriquement possible , assez complexe, pas generique, difficile a mettre en oeuvre.C'est même pas d'optimisation dont je parle, c'est de complexité tout court.

    Sans vouloir paraitre méchant, si tu poses la question c'est que tu ne maitrise pas assez de notions de bases de ce langages pour comprendre la solution, ou alors je comprends mal ton probleme, c'est possible, quelqu'un aura peut etre une autre idee.
    Il peut existex peut etre des instructions processeur resolvant ton pb. :

    Puis en passant par le Dom tu pourrais selectionner tes noeuds SANS feuille xslt et les passer en parametre au processeur.
    En javascript 4 lignes de codes supplementaires,1 seule feuille xslt.

    Quand a mes reticence sur ton code je vais etre plus clair.Si quelqu'un dans mon equipe pondait ca, il ne toucherait plus jamais du code xslt, de tout le projet, et si je me contenterais de ca c'est que je ne suis pas chef de projet.Je refuserais de maintenir un code aussi aberrant, qui va completement contre les principes du langage utilisé.

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Je confirme qu'il n'y a pas de moyen direct en XSLT pour appliquer deux feuilles de style consécutives à un même flux XML. Il faut pour cela créer un batch appelant le processeur plusieurs fois, ou utiliser un framework XML comme Cocoon.
    Maintenant, comme erwy, je pense qu'il faut de bonnes raisons pour avoir à le faire, comme des transformations très complexes ou gourmandes en ressources mémoire et délicates à n'appliquer qu'avec une seule feuille de style.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  8. #8
    Membre confirmé
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Par défaut
    ok merci beaucoup pour votre aide à tous les deux

    j'avais entendu parlé de cocoon, je verrai plus tard, pour l'instant un petit script shell devrait suffir alors puisque ca n'est pas possible autrement

    j'attends ce soir avant de mettre résolu des fois que quelqu'un ait la solution miracle, on ne sait jamais

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9
    Par défaut quelques années plus tard...
    Je ne fais que débuter dans le XML, mais XSLT permet de produire à partir d'une page XML une autre page, en l'occurence XML également. Que se passe-t-il si cette page (d'arrivée) est contruite de manière à présenter vers le début :
    <?xml-stylesheet type="text/xsl" href="****.xsl"?> ?

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

Discussions similaires

  1. [SAX] Problème de XSLT appliqué sur un XML généré en SAX
    Par snoozeman dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 29/12/2011, 22h08
  2. [XSLT] Appliquer un template avec une condition
    Par bj304075 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 12/05/2008, 10h12
  3. Réponses: 2
    Dernier message: 20/08/2007, 14h08
  4. [XSLT] Appliquer un xsl si disponible
    Par Nickysama dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 26/10/2006, 14h36
  5. [XSLT] Appliquer un traitement xslt sur un fichier XML distant
    Par mabig dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/03/2006, 09h38

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