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 !