in

InfoPath Dev

Comment indenter le .xml créé par Infopath 2003 ?

Last post 03-28-2008 08:03 AM by Coita Thierry. 6 replies.
Page 1 of 1 (7 items)
Sort Posts: Previous Next
  • 05-25-2007 06:40 AM

    • brisco
    • Not Ranked
    • Joined on 05-25-2007
    • Posts 6

    Comment indenter le .xml créé par Infopath 2003 ?

    Bonjour,

    nouveau venu sur ce site, j'espère trouver quelques conseils utiles. Je parle aussi anglais et je peux poster des questions dans la partie anglophone, mais je ne sais pas encore dans quel forum ma question devrait aller...
    Mon problème est que j'utilise Infopath pour créer des fichiers .xml en local (pas de SharePoint etc au milieu !), qui sont gérés en conf. Le fait de ne pas avoir d'indentation pose donc des problèmes. Je n'ai pas trouvé de solution simple pour résoudre le problème, mais j'ai l'impression qu'en utilisant un code d'enregistrement personnalisé (dans les options de formulaire) il doit y avoir moyen de forcer l'indentation. Le seul problème est que je connais mal les langages de script Windows, et les classes MSXML. J'ai essayé avec XmlWriter et XmlWriterSettings, mais je ne vois pas bien comment récupérer la chaine de caractères représentant mon fichier (XDocument.DOM.xml peut être ?) et la remplacer par la même indentée, avant écriture sur le disque.

    Merci d'avance pour toute information utile :-)

     

    Filed under:
  • 05-25-2007 07:29 AM In reply to

    Re: Comment indenter le .xml créé par Infopath 2003 ?

    Salut et bienvenue,

     je vois le souci mais c'est seulement pour toi que tu veux ca (et ca se limitera a quelque cas) ou c'est vraiment pour tout ce que tu sauvegarde?

    Si c'est occasionnel je te conseil de le faire dnas un éditeur XML (XMLSpy par ex) il y a des commandes qui te le font..

    Si c'est toujours, faudrait soit trouvé le moyen de le faire en code comme tu le suppose dans ton post (je sais pas comment mais un forum de prog XML serait plus approprié) sinon tu peux faire une tranformation XSLT qui va juste indenter ton xml mais si y a un moyen avec le code ca serait mieux de passer par la...

    Mais si tu veux faire avec XSLT je peux te montrer comment le faire

    ++

    Thierry

    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 05-30-2007 02:03 AM In reply to

    • brisco
    • Not Ranked
    • Joined on 05-25-2007
    • Posts 6

    Re: Comment indenter le .xml créé par Infopath 2003 ?

    Merci pour la réponse... Je voudrais que ce soit fait automatiquement à la sauvegarde, lorsque les utilisateurs cliquent sur le bouton enregistrer dans Infopath. C'est pour ça que j'essaie de trouver un moyen via du code à la sauvegarde, intégré dans Infopath. Sinon je sais faire l'indentation avec un outil externe, mais le problème c'est que ça fait une étape supplémentaire pour les utilisateurs, à intercaler entre la sauvegarde et le commit, ce que je ne souhaite pas.

    Si tu as des idées d'un forum plus approprié où poster la question, je suis preneur :-)

    Merci encore !
     

  • 05-30-2007 02:23 AM In reply to

    Re: Comment indenter le .xml créé par Infopath 2003 ?

    voila dans ton code il te suffit de parser ton xml avec ce XSLT et ton XML sera indenté et près a envoyer:

     <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="*">
       <
    xsl:copy-of select="."/>
    </xsl:template>
    <xsl:template match="@*">
       <
    xsl:copy-of select="."/>
    </xsl:template>
    </
    xsl:stylesheet>

    ++

    Thierry

    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
  • 03-19-2008 01:29 AM In reply to

    • brisco
    • Not Ranked
    • Joined on 05-25-2007
    • Posts 6

    Re: Comment indenter le .xml créé par Infopath 2003 ?

    Après pas mal de temps, je reviens à ma question toujours non résolue. Nous avons de plus en plus d'utilisateurs, et pour permettre un suivi plus facile des modifications via un outil de gestion de conf "texte" il deviendrait vraiment important d'arriver à forcer l'indentation des .xml créés par Infopath. Or je n'arrive pas à trouver comment insérer dans le code d'enregistrement personnalisé la transformation XSL qu'il faut. J'ai trouvé des exemples, avec inclusion du .xsl comme fichier de ressources et un code du style :
    function XDocument::OnSaveRequest(eventObj)
    {
    	// Écrivez ici le code à exécuter avant l'enregistrement.
        	var xslIndent = XDocument.GetDOM("indent"); 
    	// Transform the XML of the form into indented format
    	var indentedDoc = XDocument.DOM.transformNode(xslIndent);
    	
    	// Et maintenant, comment faire pour que ce soit la chaine "indentedDoc" qui soit enregistrée ?
    	eventObj.IsCancelled = eventObj.PerformSaveOperation();
    
    	// Écrivez ici le code à exécuter après l'enregistrement.
    	eventObj.ReturnStatus = true;
    }
    
    Je suppose que ma variable indentedDoc est correcte, mais je n'ai pas réussi à trouver comment faire en sorte que ce soit elle qui soit effectivement enregistrée. Une autre approche que j'ai tentée en vain est d'accéder aux propriétés de l'objet XmlSettings utilisé pour l'écriture du fichier, qui permet apparemment de forcer l'indentation. Merci d'avance pour toute aide sur ce sujet !
    Filed under:
  • 03-28-2008 04:17 AM In reply to

    • JFF
    • Top 500 Contributor
    • Joined on 07-17-2006
    • Posts 15

    Re: Comment indenter le .xml créé par Infopath 2003 ?

    Moi je ferai une 2e vue qui me présente les données commes j'ai envie de les voir...

    Mais je n'ai pas bien compris le besoin fonctionnel : le code XML n'a besoin d'être vu que pour des contrôles ponctuels, habituellement.

    JFF
    Developpement : 2007, sans code
  • 03-28-2008 08:03 AM In reply to

    Re: Comment indenter le .xml créé par Infopath 2003 ?

     Désolé mais je ne connais pas cette méthode alors je ne peux te répondre. En plus c'est du vb...

     Moi je le ferais via mon xslt soit dans Infopath soit après via un traitement ultérieur.

     Regarde peut-être ici:

     http://baptiste-wicht.developpez.com/tutoriel/vbs/xml/#L3.1
     

    Infopath 2007, Langage: C#2.0 (Modèle Objet 2003)
    merci de lire ceci
Page 1 of 1 (7 items)
Copyright © 2003-2007 Qdabra Software. All rights reserved.
View our Terms of Use.