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 1.1] plein de questions de débutant


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut [XSLT 1.1] plein de questions de débutant
    Bonjour,

    Je vais avoir dans les semaines à venir à faire plusieurs transformations sur un fichier XML degueulasse pour en récupérer un tout propre. Je me suis lancé dans la lecture de livre, tutos et bah xslt c'est bien puissant mais qu'est ce que c'est compliqué

    j'aurais d'abord une question de noob. j'ai un xml contenant des produits et un xml representant des camions. pourrais-je avec un seul xslt faire un troisieme xml indiquant quel produit va dans tel camion? cad un xslt travaille sur deux xml source pour en faire un. j'ai regardé des exemples avec saxon et msxml, on dirait pas mais j'aimerai etre sûr

    ensuite, j'ai dans mon xml de base des produits rangés comme ca
    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
    <produits>
      <item>
        <type>menager cuisine</type>
      </item>
       <item>
        <type>menager jardin</type>
      </item>
       <item>
        <type>jardin menager </type>
      </item>
    <item>
        <type>menager cuisine jardin</type>
      </item>
    <item>
        <type>menager  jardin cuisine</type>
      </item>
    </produits>
    et il faut imaginer qu'il y a des majuscules en plein milieu, des espaces en trop parfois au milieu. j'ai trouvé les methodes pour nettoyer tout ca. Maintenant j'aimerai trouver des types "unique" donc menager+jardin == jardin+menager pour moi
    Comment puis-je qu'importe si cest degeu, nettoyer ce xml pour obtenir une copie propre avec les noms de type remis dans l'ordre. Sachant qu'il n'y a pas d'ordre. je veux que ce soit unique (je ne veux que 3 types differents dans lexemple precedent) et je vois pas trop comment faire

    a la mano ca serait vite fait mais c'est pour un client et je suis pas sûr qu'il adore faire ca chaque semaine :p

    on m'a conseillé a la fin de remplace les espaces pas des underscores pour avoir des entitées uniques et que je peux trier par ordre alphabétique mais faudrait que je rassemble les types.

  2. #2
    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
    Salut,

    pour ce qui concerne le traitement de plusieurs sources XML à la fois, ça ne pose aucun problème avec la fonction XPath document() qui te renvoie le noeud racine du document dont l'URL lui est passée en paramètre.

    Pour ce qui est de la transformation, il faudrait que tu précises un peu les règles qui président à la normalisation : d'abord replacement des mots du type dans le bon ordre (alphanumérique ?), puis regroupement, c'est cela ?
    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

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    merci pour xpath

    pour le regroupement, y a pas de vraie logique. en fait la source d'origine qui passe par plein de transformation avant que j'exige d'eux un XML est un xls rempli à la main par une personne au grand intellect: le chef de service

    ce que j'aimerai, c'est regroupé les produits par type. pour cela, je dois essayer d'avoir un type uniforme.
    j'ai donc des produits
    - menager
    - menager cuisine
    - menager cuisine carrelage
    qui suivent une certaine logique de type de plus en plus précis MAIS la liste n'est définie nulle part.
    le problème est que je peux d'un coup avoir un produit avec le type
    "menager carrelage cuisine". or j'aimerai qu'il soit considéré (ou plutot modifié) en "menager cuisine carrelage"
    et là que débutant en xslt je me pose la question du moyen le plus adapté pour faire ceci. Ceci ne représentant qu'une légère partie de ce que j'aimerai faire au final, je préfèrerai une solution légère mais bon si j'ai pas le choix...


    merci

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut !

    petite précision à la réponse de GF : http://xml.developpez.com/faq/?page=3#xslt_document

    pour le problème de type, pourquoi ne pas utiliser un XSLT "simple" (sur base de substring) pour avoir un modèle du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <types>
       <type>menager</type>
       <type>cuisine</type>
       <type>carrelage</type>
    </types>
    ça te permet de t'affranchir de l'ordre car il n'est pas nécessaires pour les transformations XSLT suivantes...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    je crois comprendre ce que tu veux dire mais après j'ai besoin de deviner chaque classe unique. les élements du type en soit même je ne les traiterai pas.
    je sais pas si je suis clair. disons pour simplifier que je vais remplacer tous les espaces par un underscore ce qui me donnera des types du genre
    menager_cuisine_carrelage et rien que ca, je sais que cest different de menager_cuisine_toto. avec ta solution, je devrais faire plein de comparaisons. ici, je pense qu'une simple récurence interne pour vérifier que le type existe déjà en me basant sur une comparaison de chaine sera le plus simple.

    maintenant, j'aimerai juste éviter d'avoir
    menager_cuisine_carrelage et menager_carrelage_cuisine car ca bousille mon raisonnement surtout qu'il y a deux erreurs comme ca dans le xml que je pourrai faire à la main mais j'essaie de trouver une solution qui permettra l'erreur humaine et tentera de la corriger.


    un exemple plus simple, pour chaque produit, j'ai un champ type2 qui dit:
    -s'il est petit ou grand
    - lourd
    (c'est pour les colis et le prix de transport)

    donc un produit peut etre
    petit
    grand
    petit lourd
    grand lourd
    et bien sûr on m'a foutu un lourd grand dans le tas.
    ici je connais les catégories donc je peux tester si ca commence par lourd et switcher mais ce n'est p-e pas la solution la plus propre... j'aimerai profiter de votre XP pour apprendre le plus tôt possible à ne pas coder comme un sagouin

  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 : 49
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Je rejoins swoög, les opérations de chaines en xslt ou xpath c'est pas l'idéal, et ton pb, à la moindre évolution ca va être casse-bonbon complet .

    Tu es vraiment sûr de toi ? L'exemple donné precedemment est bien celui que je conseillerais dans une structure xml et dans ce cas le xslt de transfo est assez simple. Autrement ton pb est soluble mais pas trop envie de me pencher sur une solution "batarde" tant que je ne suis pas sûr que cela soit celle choisie

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/06/2005, 10h56
  2. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51
  3. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 17h25
  4. Questions de débutant
    Par J-P-B dans le forum XMLRAD
    Réponses: 12
    Dernier message: 24/07/2003, 15h19
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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