J'ai un truc comme ça en entrée :
<MyDataSet> <MyTable1> <MyRow> <MyXmlAsString><balise>blablabla xml échappé</balise></MyXmlAsString> </MyRow> </MyTable1> </MyDataSet>J'ai un fichier xsl pour ma transformation; À l'origine, il devait transformer le contenu de plusieurs tables, mais vu les problèmes de perfs (pas de possibilité actuellement d'avoir de relation entre les tables...), j'ai du me rabattre sur de la génération du xml directement depuis Sql Server.
Il le fait vite et bien.
Le problème, c'est que via une procédure et un chargement dans un dataset, il ne prend pas le type xml mais nvarchar(max).
Ensuite, au moment où on veut appliquer une transformation sur le XmlDataDocument (un dataset xml), il va fournir la version xml du dataset (normal hein), mais dedans mon nvarchar(max) se trouve échappé.
Problème supplémentaire, le xml-nvarcharé est une version sans aucun espace entre les balises (pas de retour ligne, pas d'indentation).
(si jamais y'a moyen, je suis déjà preneur, mais bon, j'y crois pas).
Pour l'instant, j'ai réussi à recracher tel quel le nvarchar déséchappé grâce à <xsl:value-of select="" disable-output-escaping="yes" />(il le déséchappe tout seul).
Dans l'idéal, je voudrais pouvoir "xmliser" le nvarchar et pouvoir le parcourir afin d'effectuer de le réindenter*.
Pour l'instant, je sais/vois pas du tout comment faire.
Vous avez des idées/solutions à me proposer ?
* : je sais, ça peut paraître stupide comme ça, mais essayer d'ouvrir un xml tout en 1 seule ligne de plus de 10Mo, vous verrez que nos éditeurs aiment pas ça.
Pis après tout, le fait de pouvoir retravailler sur un xml échappé imbriqué, ça peut toujours être utile, non ?




