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 :

XLST dynamique avec le contenu du XML


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut XLST dynamique avec le contenu du XML
    Bonjour,

    Je suis un petit nouveau dans le monde du XSLT mais j'aimerai savoir si il peut répondre à un de mes besoins. J'ai un fichier xml ressemblant à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <root>
    <template type="tracking" h1="xcoor" h2="ycoor" />
    <template type="quantif" h2="val" />
    <data id="1" type="tracking" xcoor="1" ycoor="2" foo="empty" />
    <data id="2" type="tracking"  xcoor="5" ycoor="4" />
    <data id="3" type="quantif"  val="12" bar="hello"/>
    </root>
    Donc le probleme réside dans le fait il faut formaté le fichier avec des valeurs contenu dans lui-même. J'aimerai obtenir un fichier comme celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id | type | xcoor | ycorr | val
    1 | tracking | 1 |  2 | [x] |
    2 | tracking | 5 |  4 | [x] |
    3 | quantif | [x] | [x] | 12 |
    Pour le moment j'ai reussi a parcourrir la liste des arguments d'un item:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each select="root/template/@*">
    <xsl:value-of select="."/><br/>
    </xsl:for-each>
    Mais comment prendre cela en compte pour utilisé cette valeur dans un autre for-each?
    Merci d'avance pour toutes informations qui pourrai m'aider.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Attends une minute, quoi*? L'exemple a l'air pas mal, mais je comprends pas qu'est-ce qu'il faut aller chercher où pour faire quoi ?

    Qu'est-ce que c'est que ces histoires "d'utiliser une valeur dans un autre for-each" ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Développeur C++, j'ai du mal a appréhendé le XSLT, mais le but serai de stocker toutes les valeurs des paramètres de l'item template pour faire un for-each sur les paramètres des items data. Mais d’après ce que j'ai vue la variable ne sont pas des tableaux, est ce vrai?

    Je qd meme mon avancement :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
      <xsl:template match="/">
        <html>
          <body>
            <table>
              <!-- Parcourt toutes les data -->
              <xsl:for-each select="root/data">
                <tr>
                  <td>
                    <xsl:value-of select ="@id"/>
                  </td>
                  <!-- Parcourt toutes les valeurs dans template -->
                  <xsl:for-each select="../template/@*">
                    <td>
                      <xsl:variable name="ident" select="." />
                      <xsl:value-of select ="@$ident"/>                   
                    </td>
                  </xsl:for-each>
                  <xsl:value-of select ="name()"/>
                </tr>
              </xsl:for-each>
            </table>
          </body>
        </html>
      </xsl:template>
    </xsl:stylesheet>
    La ligne rouge ne fonctionne pas...

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par themadmax Voir le message
    Développeur C++, j'ai du mal a appréhendé le XSLT, mais le but serai de stocker toutes les valeurs des paramètres de l'item template pour faire un for-each sur les paramètres des items data.
    Je comprends pas ton exemple.
    - Les <template> contiennent des attributs type, les <data> aussi contiennent des attributs type.
    - Les <template> contiennent par exemple des attributs h1 ou h2 dont la valeur est par exemple xcoor ou ycoor ou val. Les <data>, eux, n'ont pas d'attribut h1 ou h2, mais ils ont des attributs xcoor ou ycoor ou val dont la valeur est quelconque.

    Tu vois bien que c'est pas la même chose, alors quoi ? C'est pourtant pas compliqué, comme question.

    Citation Envoyé par themadmax Voir le message
    Mais d’après ce que j'ai vue la variable ne sont pas des tableaux, est ce vrai?
    Pas vraiment. Il n'y a pas de "tableau" mais il y a des "ensembles de nœuds," un nœud pouvant être un élément XML, un nœud texte XML ou un attribut d'élément XML. Une simple string, par contre, n'est pas un nœud, donc on ne peut pas la mettre dans un ensemble de nœuds.

    Il serait, par contre, possible de construire un ensemble de nœuds qui contient tous les attributs de valeurs différentes qui t'intéressent, c'est pas évident mais ça se fait.
    Toutefois il faut commencer par comprendre ce que tu comptes faire. C'est pas important que tu connaisses pas XSLT. Oublie deux secondes que XSLT existe et explique quelle logique algorithmique tu pourrais mettre en œuvre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par défaut
    Donc je re-explique, je voudrais extraire de <data> seulement les paramètres correspondant a ceux de <template>. Et bien sur cela est variable. Par exemple si on trouve dans <template> h1="xcoor" alors si une <data> contient comme nom d'attribut xcoor on affiche sa valeur!
    Le tout pour générer un tableau comme poster dans mon premier message.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    ... Mais enfin, ignore pas mes remarques, quoi...

    C'est attribut type, alors, c'est quoi, c'est particulier ? Pourquoi je dois poser la question ? Pourquoi je dois le faire 2 fois ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Remplir un menu déroulant avec le contenu d'un XML
    Par ibson76 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/09/2008, 15h57
  2. Checker un doc XML chargé dynamiquement avec un DTD
    Par Mr Pink Eyes dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 29/07/2008, 23h11
  3. [XSLT] Création de fichier XML dynamique avec PHP
    Par daninho dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 02/02/2006, 11h18
  4. Contenu DataSource.xml avec base Mysql
    Par PrinceMaster77 dans le forum XMLRAD
    Réponses: 3
    Dernier message: 11/03/2004, 12h59

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