Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2810 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  XSLT et noeuds vides en sortie (C# aussi)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

XSLT et noeuds vides en sortie (C# aussi)

n°1589543
theshockwa​ve
I work at a firm named Koslow
Posté le 20-07-2007 à 17:16:43  profilanswer
 

Ca fait un moment que je tourne en rond pour trouver une méthode pour "vider" les noeuds que je produis avec un script XSLT. J'arrive juste à produire des :

Code :
  1. <balise>
  2. </balise>


alors que je souhaiterais que mon fichier en sortie contienne des  

Code :
  1. <balise />


j'ai sans doute un problème de vocabulaire vu que toutes mes recherches sur le sujet ont été infructueuses ... Je n'ai jamais pu tomber sur autre chose que les xsl:strip-space qui ne traitent que les données entrantes et absolument pas les noeuds produits.
 
Quelqu'un aurait-il une solution à ce problème pourtant idiot ? [:petrus75]
 
 
edit : typo
edit2 : précision : mon xslt est interprété au milieu de code C# compilé sous Visual Studio .Net 2003 et est donc potentiellement sujet à des "libertés" prises par l'auteur de la plateforme .Net 1.1


Message édité par theshockwave le 23-07-2007 à 11:03:44
mood
Publicité
Posté le 20-07-2007 à 17:16:43  profilanswer
 

n°1589611
safran57
Posté le 20-07-2007 à 22:43:01  profilanswer
 

Ca c'est ce qu'on obtient alors qu'on veut l'éviter , d'habitude...
 
Tu veux donc transformer du XML en XML  
Si tu codes  
 <xsl:template match="balise">
  <xsl:copy>
  </xsl:copy>
 </xsl:template>  
ou même
 <xsl:template match="balise">
  <xsl:copy/>
 </xsl:template>  
 
XmlSpy donne le résultat <balise/>
 
Mais il ne s'agit que de cosmétique ,car les deux expressions sont équivalentes.
 
 

n°1589952
theshockwa​ve
I work at a firm named Koslow
Posté le 23-07-2007 à 10:19:45  profilanswer
 

en l'occurrence, non, les deux expressions ne sont pas équivalentes quand le XML généré retourne en entrée d'un type C# généré à coup de XSD ... (il considère que le whitespace entre les deux balises ne respecte pas la contrainte de balise vide)
Pour le xsl:copy, oui, il me laisse bien les balises sous leur forme "concise", mais lorsque je génère un élément à coup de xsl:element, je ne parviens pas à le mettre dans ce même état s'il est vide
 
edit :
en clair, lorsque je charge mes données dans mon type généré par un XSD, il me sort des erreurs du type Column 'unNoeudQuelconque_text' does not allow DBNull.Value
 
edit2 : en fait, non, le xsl:copy ne me laisse pas les balises fermées à partir du moment où je dois aussi copier les attributs ... Pour faire ca, je fais simplement ca :

Code :
  1. <xsl:copy>
  2.     <xsl:copy-of select="attribute:*" />
  3. </xsl:copy>


 


Message édité par theshockwave le 23-07-2007 à 11:24:30
n°1590017
theshockwa​ve
I work at a firm named Koslow
Posté le 23-07-2007 à 11:53:13  profilanswer
 

Je me demande aussi s'il ne serait pas plus simple de faire un traitement sur le XmlDocument que je manipule (côté C#, donc, cette fois) pour vider les noeuds dont le texte ne contiendrait que du whitespace ...
 
Enfin, j'ai pu trouver une "solution" qui est de permettre les valeurs nulles dans le XSD

n°1590387
theshockwa​ve
I work at a firm named Koslow
Posté le 23-07-2007 à 18:09:12  profilanswer
 

J'ai l'impression de ne pas avoir de succès avec mes questions [:dawa] C'est pas que le problème ne soit pas contourné, c'est juste que ca me sidère de ne pas arriver "facilement" à générer ces balises fermées en xslt

n°1606229
MagicBuzz
Posté le 30-08-2007 à 12:28:57  profilanswer
 

je pense que ton souci est ailleurs.
 
c'est pas normal que XmlDocument saute une ligne entre l'ouverture et la fermeture du tag.
 
pour moi y'a une couille dans ta transformation : tu rajoutes un saut de ligne dans ta balise, et XmlDocument le conserve.
 
c'est d'ailleurs ce qui ne plait pas lors de la validation.
 
<toto></toto> == <toto/>
 
mais <toto>\n</toto> != <toto/> ce qui est parfairement normal. ceci s'applique à tout caractères non imprimable.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  XSLT et noeuds vides en sortie (C# aussi)

 

Sujets relatifs
Système de template avec XML/XSLTXSLT et flux RSS
[XSLT] Calculer le nombre de paramètres non nullgénérer un ">" et un "<" en XSLT
Executer une commande et recuperer la sortie standardLiaison entre xml et xslt
[JS] Récupérer les noeuds fils d'un élément - Pocket IEPasser un paramètre aux noeuds enfants
Templates Maison ou XSLT ?récupérer une sortie console en C
Plus de sujets relatifs à : XSLT et noeuds vides en sortie (C# aussi)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR