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 :

[xsl] jointure ?


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 22
    Par défaut [xsl] jointure ?
    Bonjour,

    J'applique une feuille de style xsl sur un gros document (50000 lignes), de plus j'appelle d'autres docments xml pour effectuer des remplacement ( 10000) référence <-> libelle. En fait dans le premier doc j'ai des références et dans les autres j'ai les libellés et je veux que les libellé apparraissent dans le tableau résultats.
    Le problème est évident : ça rame ! car pour toutes les lignes du premier document j'effectue une rquête sur les autres...

  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
    et la question est?Tu sais le truc avec un point d'interrogation
    si ton xslt n'est pas trop volumineux montre en un brun et aussi la structure des tes xml

  3. #3
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 22
    Par défaut
    La question est dans le titre...
    Le principe du code :

    fichier xml mondoc.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <bidon num="0">
    <libelle>libelle1</libelle>
    <bidon>
    <bidon num="2">
    <libelle>libelle2</libelle>
    </bidon>
    <bidon num="3">
    <libelle>libelle3</libelle>
    </bidon>
    ...
    document maître xml (sur lequel est appliqué la feuille xsl) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <toto ref="1">...</toto>
    <toto ref="2">...</toto>
    <toto ref="3">...</toto>
    code xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template match="toto">
    <xsl:variable name="var" select="@ref" />
    <xsl:value-of select="document('mondoc.xml')/bidon[@num=$var]/libelle" />
    </xsl:template>
    Les fichier xml sont très gros (50000 lignes) c'est le select="document('mondoc.xml')..." qui rame (c'est 50000 requêtes sur 50000 enregistrement).

  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
    une idee mais sans les document pas sur

    tu pourrais des le debut creer des variables globales(peut etre meme des xsl:key) qui contiendrais tous les noeuds concernés de tes autres fichiers,je pense que ca permettrai de reduire les temps d'acces mais pas sur

  5. #5
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    l'idée serait d'indexer le document contenant les libellés.
    La commande <xsl:key> est faite pour ca. Sur un document externe, lorsque tu appelles key(nomclé, valeur), il faut que le noeud courant soit sur la racine du document des libellés.

    Essaye ce truc, sans garantit que ca améliore vraiment les perfs... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <xsl:variable name="doc" select="document('libelles.xml')/racine">
    <xsl:key name="index" match="bidon" use="@num"/>
    ....
    <xsl:template match="toto"> 
    <xsl:variable name="var" select="@ref" />
    <xsl:for-each select="$doc"><!-- sert juste à se positionner sur le noeud racine-->
       <xsl:value-of select="key('index', $var)/libelle">
    </xsl:for-each >
    </xsl:template>
    Je n'ai pas vu d'amélioration avec MSXLM sur de gros fichiers (>5Mo).
    En fait je crois que XSLT n'est pas optimisé pour effectuer des jointures entre différents documents.
    Si tu peux faire un merge des 2 doc en un seul et créer un index, je crois que tu amélioreras les performances.

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  3. [XSLT] Problème jointure XSL + JavaScript
    Par Valter dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 27/04/2008, 21h35
  4. Jointures INNER et jointures classiques ???
    Par UbiK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/09/2002, 10h29
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

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