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]Liste déroulante auto-renseigné


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [XSLT]Liste déroulante auto-renseigné
    Bonjour,
    voilà je n'arrive pas à mettre en forme mon fichier xlm via le xsl comme je le voudrais.
    Tout d'abord je vais exposer mes attentes car il se pourrait que ce que je souhaites ne soit pas adapter au xml.
    Donc je voudrais utiliser mon xml comme une base de donnée client que je renseigne sous excel sous forme de tableau et qui me permet de mettre en forme "facilement" des documents Word. Exemple: je rentre les infos de mon client dans excel, ensuite j'ouvre un modele de document Word et là, j'ai une liste déroulante avec les noms de mes clients et quand j'en séléctionne un il me remplis automatiquement les champs adresses n° tel etc...

    Le premier problème que je rencontre c'est déjà de remplir la liste déroulante avec mes noms de clients. En effet, je n'arrives qu'a créer une liste déroulante pour chaque client.
    Voici mon xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet type="text/xsl" href="clients.xslt"?>
    <Root>
    	<Clients>
            	<nom></nom>
            	<site></site>
    		<adresse></adresse>
    		<cp></cp>
    		<ville></ville>
    		<tel></tel>
    		<fax></fax>
    	</Clients>
    </Root>
    Et mon fichier xsl:
    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
     
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet type="text/xsl" href="clients.xslt"?>
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Forma " xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:template match="/">
    <html>
    	<head><title/></head>
    		<body><form>
    			<xsl:for-each select="//Clients">
    				<select size="1">
    				<optgroup label="clients">
    					<option><xsl:value-of select="nom"/></option>
    				</optgroup>
    				</select>
    			</xsl:for-each>
    		</form></body>
    </html>
    </xsl:template>
    </xsl:stylesheet>
    Quelqu'un peut il m'aider s'il vous plait
    Merci

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    A mon avis rien de bien méchant ici sinon un pb d'algo plus que de XSL, dans ta boucle tu redéfinis une balise <select> à chaque client ... ca ne devrait pas être une balise <option> plutot ?

    En outre, pour une question de clarté, je partirai sur l'utilisation des templates comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="/">
         <html><head><title/></head>
              <body><form>
                   <select size="1"><optgroup label="clients">
                        <xsl:apply-templates select="//Clients"/>
                   </optgroup></select>
              </form></body>
         </html>
    </template>
    <template match="Clients">
         <option><xsl:value-of select="nom"/></option>
    </template>
    Ca isole le traitement des balises clients.

    En espérant avoir répondu à ta question, je reste à disposition pour toute précision.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Salut,
    merci pour ta reponse.
    J'ai essayé ce que tu m'as conseillé, soit :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     
    xmlns:fo="http://www.w3.org/1999/XSL/Forma " xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     
    xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:template match="/">
    <html><head><title/></head>
    	<body><form>
    		<select size="1"><optgroup label="clients">
    			<xsl:apply-templates select="//Clients"/>
    		</optgroup></select>
    	</form></body>
    </html>
    </xsl:template>
    <template match="Clients">
    	<option><xsl:value-of select="nom"/></option>
    </template>
    </xsl:stylesheet>
    <template match="Clients">
         <option><xsl:value-of select="nom"/></option>
    </template>
    Mais malheuresement j'ai une erreur en retour :"Un seul élément de niveau supérieur est autorisé dans un document XML. Erreur de traitement de la ressource ", apparement il vit mal l'ajout de ton template. Si tu as une autre idée je suis prenneur.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ok, j'ai trouvé, grace à toi Bizur merci encore.
    Donc ça marche si je mets:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     
    xmlns:fo="http://www.w3.org/1999/XSL/Forma " xmlns:xs="http://www.w3.org/2001/XMLSchema" 
     
    xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:template match="/">
    <html><head><title/></head>
    	<body><form>
    		<select size="1"><optgroup label="clients">
    			<xsl:apply-templates select="//Clients"/>
    		</optgroup></select>
    	</form></body>
    </html>
    </xsl:template>
    <xsl:template match="Clients">
         <option><xsl:value-of select="nom"/></option>
    </xsl:template>
    </xsl:stylesheet>

  5. #5
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Au oui, au temps pour moi ... j'avais oublié les namespace devant les balises <template>, désolé >_<.

    Bon courage pour la suite.

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

Discussions similaires

  1. Liste déroulante auto
    Par lenul78570 dans le forum Excel
    Réponses: 1
    Dernier message: 27/01/2009, 07h03
  2. liste déroulante auto envoyé
    Par cobra91 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/06/2007, 15h30
  3. [MySQL] Renseigner une liste déroulante dans un formulaire en faisant une jointure.
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 16/10/2006, 10h12
  4. Réponses: 2
    Dernier message: 04/06/2006, 21h35
  5. Réponses: 1
    Dernier message: 27/10/2005, 21h48

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