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 :

generer xsl depuis xml avec balises inconues ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut generer xsl depuis xml avec balises inconues ?
    bonjour,

    sans connaitre les balises composant mon fichier xml, est il possible de generer 'à la volée' le xsl.

    je m'explique : je recois un xml dont ej ne connais pas la structure et je dois generer automatiquement le xsl de mise en page : est ce que c possible ? et biensur, si oui comment ?

  2. #2
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    tu dois bien connaitre un minimum d'info sur ton xml non? Ou du moins le résultat que souhaite obtenir.
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    je connais la structure mais je ne connais ni le nom des balises ni leur nombre
    exemple du xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <MYSQLXML version="1.0">
      <SQL>
        <ROW>
          <COM>268</COM>
          <RIV>0010</RIV>
          <SURF>2622</SURF>
          <NUPLA>0031</NUPLA>
        </ROW>
      </SQL>
    </MYSQLXML>
    alors ce que je connais la dedans :
    les balises <MYSQLXML>, <SQL>,<ROW>. Il peut y avoir plusieurs <ROW>, et je connais le nombre.

    par contre ce que je ne connais pas c : les balises ds le <ROW>, a savoir ds cet exemple <COM>, </RIV>,</SURF>,</NUPLA>. Ces balises etant paramétrer ailleurs.

    Donc est-il possible a ton avis de generer le xsl correspondant a ce xml, sans connaitre le nom de ces balises ?

    et biensur je sais ce que je veux : c mettre les données ds un tableau ayant pour titre de colonnes le nom des balises

  4. #4
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    ca se passe en deux temps :

    1)Pour le header du tableau, il faut que tu affiches les noms de balises : tu récupères par ex les noeuds fils du premier noeud ROW et tu utilises la fonction name() pour obtenir le nom du noeud courant
    2)Pour les lignes : un parcours simple :

    Exemple (pas testé) :

    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
    <xsl:template match="SQL">
      <table>
       <tr>
        <xsl:apply-templates select="ROW[0]" mode="header"/>
       </tr>
      <xsl:for-each select="ROW">
      <tr>
        <xsl:apply-templates/>
      </tr>
      </xsl:for-each>
    </table>
    </xsl:template>
     
    <xsl:template match="ROW/*">
      <td>
        <xsl:value-of select="."/>
      </td>
    </xsl:template>
     
    <xsl:template match="ROW/*" mode="header">
      <th>
        <xsl:value-of select="name()"/>
      </th>
    </xsl:template>
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    yes ! ca marche presque...et c deja tres bien. Juste un petit pb au niveau de l'affichage des entetes de colonnes. je pense que c au niveau de :

    <xsl:template match="ROW/*" mode="header">
    <th>
    <xsl:value-of select="name()"/>
    </th>
    </xsl:template>

    qu'il y a un soucis. Est ce que tu peux m'expliquer un peu la syntaxe pour que je puisse trouver le pb : select="name()"/ et match="ROW/*" mode="header">

    en tout cas merci bp ! a suivre...

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    a moins que le pb ne vienne directement de la structure de mon xsl, j'en fais une copie (ca pourra tj servir...)

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
     
    <xsl:template match="/GGSELSQLXML/GGSQL">  
     
    <SCRIPT LANGUAGE="JavaScript"><xsl:comment><![CDATA[
     
       //-----------------------------------------------------
      function fprint ()
      {
        window.print();
      }
      //-----------------------------------------------------
      function fquit ()
      {
        window.close();
      }
      //-----------------------------------------------------
     
    ]]></xsl:comment></SCRIPT> 
     
      <HTML>
        <HEAD>
          <BODY>
     
            <p align="center"><font size="4" face="Arial" color="#0090AE">RAPPORT PARCELLAIRE</font></p>
     
            <table width="100%" border="0">
              <TR>
                <xsl:apply-templates select="ROW[0]" mode="header"/> 
              </TR> 
              <xsl:for-each select="ROW"> 
                <TR >
                  <xsl:apply-templates/> 
                </TR> 
              </xsl:for-each> 
            </table> 
     
            <br><br>
              <p align="center">
                <input type="button" value="Impression" onclick="fprint()" name="BPRINT" style="background-color: transparent"></input>
                <input type="button" value="Quitter" onclick="fquit()" name="BQUIT" style="background-color: transparent"></input>
              </p>
            </br></br>
     
          </BODY>
        </HEAD>
      </HTML>  
     
    </xsl:template>	
     
     
    <xsl:template match="ROW/*"> 
      <td align="left"> 
        <font face="Arial" size="2">
          <xsl:value-of select="."/> 
        </font>
      </td> 
    </xsl:template> 
     
    <xsl:template match="ROW/*" mode="header"> 
      <td align="center"> 
        <xsl:value-of select="name()"/> 
      </td> 
    </xsl:template>
     
    </xsl:stylesheet>

  7. #7
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    oui faut remplacer ROW[0] par ROW[1] (les noeuds sont numérotés à partir de 1).

    ps:
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    c exact ! merci bp.

Discussions similaires

  1. creer formulaire depuis xml ( avec xsl )
    Par sknano dans le forum Langage
    Réponses: 0
    Dernier message: 10/06/2011, 11h36
  2. Réponses: 2
    Dernier message: 04/10/2007, 11h04
  3. [XSL] Envoyer du code XSL depuis XML
    Par t_ferreira dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 06/09/2007, 14h21
  4. [DOM] Comment generer ce fichier XML avec DOM ?
    Par jlassira dans le forum Format d'échange (XML, JSON...)
    Réponses: 18
    Dernier message: 10/04/2006, 09h12
  5. Réponses: 2
    Dernier message: 07/04/2006, 13h31

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