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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    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 chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    tu dois bien connaitre un minimum d'info sur ton xml non? Ou du moins le résultat que souhaite obtenir.

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    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 chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    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>

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    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 chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    oui faut remplacer ROW[0] par ROW[1] (les noeuds sont numérotés à partir de 1).

    ps:

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    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