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] Générer formulaire de saisie XML à partir du xsd


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Par défaut [XSLT] Générer formulaire de saisie XML à partir du xsd
    Bonjour

    existe-t-il un outil permettant de générer dynamiquement un formulaire de saisie XML à partir du xsd ?

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    une feuille de style xslt devrait faire l'affaire.
    As tu un exemple xsd et ce que tu souhaites obtenir

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Par défaut
    Je n'ai pas d'exemple précis, la demande ne vient pas de moi (un chef) et n'est pas plus explicite que ça ...

    Si nous prenons l'exemple ci-dessous, trouvé sur le net, comment puis-je faire ?

    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
     
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
     
     <xsd:element name="bookstore" type="bookstoreType"/>
     
     <xsd:complexType name="bookstoreType">
      <xsd:sequence maxOccurs="unbounded">
       <xsd:element name="book"  type="bookType"/>
      </xsd:sequence>
     </xsd:complexType>
     
     <xsd:complexType name="bookType">
      <xsd:sequence>
       <xsd:element name="title" type="xsd:string"/>
       <xsd:element name="author" type="authorName"/>
       <xsd:element name="price"  type="xsd:decimal"/>
      </xsd:sequence>
      <xsd:attribute name="genre" type="xsd:string"/>
     </xsd:complexType>
     
     <xsd:complexType name="authorName">
      <xsd:sequence>
       <xsd:element name="first-name"  type="xsd:string"/>
       <xsd:element name="last-name" type="xsd:string"/>
      </xsd:sequence>
     </xsd:complexType>
     
    </xsd:schema>

  4. #4
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    un xsl d'exemple
    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
     
    <xsl:stylesheet version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    	<xsl:output 
      		encoding="ISO-8859-15"
      		method="xml"
      		indent="yes" />
     
    	<xsl:template match="/xsd:schema">
    		<html><body>
    			<xsl:apply-templates select="./xsd:element"/>
    		</body></html>
    	</xsl:template>
     
    	<xsl:template match="xsd:element">
        <xsl:variable name="type" select="./@type"/>
    	  <xsl:choose >  
    	    <xsl:when test="count(//xsd:complexType[@name=$type])=1">
    			  <xsl:apply-templates select="//xsd:complexType[@name=$type]"/>
    	    </xsl:when>
    	    <xsl:when test="count(//xsd:complexType[@name=$type])=0">
    	      <h2><xsl:value-of select="./@name"/></h2>
    	      <input type="text"/>
    	    </xsl:when>
        </xsl:choose>
    	</xsl:template>
     
    	<xsl:template match="xsd:complexType">
    	  <h1><xsl:value-of select="./@name"/></h1>
        <xsl:apply-templates select=".//xsd:element"/>
    	</xsl:template>
     
    </xsl:stylesheet>

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Par défaut
    je suis navré mais étant néophyte dans le domaine, je ne sais comment exploiter ce xsl.
    Pouvez-vous m'en dire plus ?

    merci d'avance

  6. #6
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    tu installes un parser et un transformateur xslt (xalan, xsltproc, ...)
    et tu lances la commande
    avec xalan cela donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xalan -in essai.xsd -xsl essai.xsl
    si tu télécharges l'outil xmlcopyeditor il suffira d'ouvrir ton fichier xsd puis de faire un F8 et d'indiquer ton fichier xsl

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Par défaut
    Merci beaucoup !!!

    Ca fonctionne, sauf que je n'ai aps trouvé l'exe de xalan et que j'ai du lancer une commande du type "java org.apache.xalan.xslt.Process...."

    Mais j'ai bien ma page html.

    Maintenant, puis-je abuser et vous demander comment faire pour faire en sorte que l'on puisse valider ce formulaire et l'enregistrer au format xml ?

  8. #8
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    bon la il va faloir ce mettre dans le xslt.
    En gros pour votre question il faut modifier ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:template match="/xsd:schema">
    		<html><body>
    			<xsl:apply-templates select="./xsd:element"/>
    		</body></html>
    	</xsl:template>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:template match="/xsd:schema">
    		<html><body>
    			<form action="query.html" method="POST" >
    			     <xsl:apply-templates select="./xsd:element"/>
    			<input value="valid" type="submit"/>
    			</form>
    		</body></html>
    	</xsl:template>

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Par défaut
    query.html ?

    J'ai essayé différentes choses pour créer ce query.html, destiné j'imagine, à traiter les valeurs de la page.

    j'ai essayé en javascript, d'enregistrer le formulaire en xml mais n'y suis pas parvenu..

    Est-on obligé de passer par du php ou similaire ?

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    En général le client envoie les données au serveur et celui-ci les stoque.
    Le javascript travaillera toujours coté client et la plupart du temps ses accès au disque client sont restreint par sécurité.
    Donc oui, coté serveur il faut qu'il y ait une application en écoute comprenant les requettes HTTP POST et traitant ton cas spécifique à l'aide de PHP, Java ou autres.

  11. #11
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    sinon imaginons que tu as ton schema sous le nom : query.xml.
    Tu peux transformer ce fichier via query.xsl pour donner query.html
    si tu rajoutes dans l'entête du fichier query.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml-stylesheet type="text/xsl" href="query.xsl"?>
    et que dans le fichier xsl tu remplace method="POST" par method="get"
    le client ouvre via son navigateur le fichier query.xml.
    Par la suite l'envoi des valeurs pourra être traité par le serveur.
    la question est que souhaites faire des données émis par le formulaire?

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Par défaut
    moi, je ne souhaite rien en faire de ce xml et c'est là mon drame ;-)
    En fait, comme je n'ai rien à faire mon boss m'a sollicité.

    Ce qu'il veut c'est stocker des paramètres d'une appli dans un xml (pour remplacer un .ini)
    Il veut pouvoir modifier ce xml dynamiquement ; d'où ma question initiale que je résume :

    transformer un xsd en formulaire html
    -> valider le formulaire pour obtenir un xml

  13. #13
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    Citation Envoyé par zefennec Voir le message
    moi, je ne souhaite rien en faire de ce xml et c'est là mon drame ;-)
    En fait, comme je n'ai rien à faire mon boss m'a sollicité.

    Ce qu'il veut c'est stocker des paramètres d'une appli dans un xml (pour remplacer un .ini)
    Il veut pouvoir modifier ce xml dynamiquement ; d'où ma question initiale que je résume :

    transformer un xsd en formulaire html
    -> valider le formulaire pour obtenir un xml
    - "transformer un xsd en formulaire html" : c'est ce que fraoustin t'a expliqué.

    - "valider le formulaire pour obtenir un xml" : ça depend de tes contraintes techniques, as tu un serveur, es tu obligé d'utiliser que le HTML et le JS? etc...
    que ce qui va y avoir dans ce xml final? que des données issus du formulaire Html? est ce tu dois valider l'integrité des données saisi dans le formulaire Html? et comment (connection à une BD?) ...bref il ya mille et une façon de faire et ça depend de beaucoup de chose, donc essaye de nous donner plus d'info ou des les obtenir de ton chef si tu les a pas encore

  14. #14
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Par défaut
    Pour l'enregistrement du formulaire :
    - il n'y aura que des données du fiormulaire dans le xml final
    - pas de validation des données
    - je n'ai pas de serveur, donc ça limite (pas de php et Cie)


    Dernière tentative, après j'arrête.
    Je ne vais pas faire ch... les membres du forum pour répondre à une demande à la c...
    Il n'a qu'à trouver un mec qui connait les technos, mon chef

  15. #15
    Membre émérite
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Par défaut
    je suis loin d'être un spécialiste mais je pense que javascript pour résoudre ton problème

Discussions similaires

  1. [XSD] Générer la structure du Document XML à partir du XSD
    Par gpmoo7 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 09/10/2011, 22h06
  2. Réponses: 3
    Dernier message: 18/02/2010, 11h25
  3. [XSD] Comment générer un xml à partir du xsd ?
    Par proDZ dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 17/08/2009, 10h45
  4. Générer XML à partir du XSD
    Par aesthetics dans le forum Format d'échange (XML, JSON...)
    Réponses: 12
    Dernier message: 25/02/2009, 20h27
  5. [XSLT] Générer formulaire de saisie XML à partir du xsd
    Par zefennec dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 05/10/2007, 13h00

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