Asp net+There are multiple root elements. [Résolu]

Signaler
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
Bonjour,je bosse avec c# 1.1 webform etj'essayes en vain d'applique une transformation xslt sur un fichier xml issue d'un dataset afin d'obtenir un fichier html.!lors de l'execution du code j'obtiens ce message d'erreur :There are multiple root elements. Line 4, position 2.J'ai beauc cherche je trouve pas ce qui se passe si quelqu'un avait une idée, voici mon code et un bout de mes fichiers xml xslt.Le fichier xml :      VORTIGON6-1    WIN 2003 SP1 english       administrator    .pwroot        VORTIGON6-4    WN 2003 SR2 English    administrator    .pwroot        VORTIGON6-5    WIN 2003 SR2 Deutch    administrator    .pwroot            Computer NameOSUserPwdet le bout de code :string xmlSource = "xmlMachineTest.xml";string xslSource = "XSLTMachine.xsl";string output = Server.MapPath("RESULT_XSLT.html");XmlUrlResolver resolver = new XmlUrlResolver( );resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;XslTransform xsltrans=new XslTransform();xsltrans.Load(Server.MapPath(xslSource),resolver);xsltrans.Transform(Server.MapPath(xmlSource),output,resolver);Je vous remercieChristophe

4 réponses

Messages postés
129
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
30 décembre 2007
3
Salut,

Regarde bien le code de ton fichier XSLT : l'élément xsl:stylesheet est immédiatement fermé.
<hr size="2" width="100%" /><?xml version="1.0"encoding="UTF-8"?>

<stylesheet version="1.0"xmlns="http://www.w3.org/1999/XSL/Transform">

</stylesheet>

<xsl:templatematch="/">

...

<hr size="2" width="100%" />Donc ta feuille de style n'est pas un document XML bien formé. Supprime la balise fermante surnuméraire à la ligne 3, et ferme l'élément stylesheet à la fin du fichier, et le chargement de ta feuille de style devrait se passer sans problèmes.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
discussion redirigée sur www.aspfr.com 

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

salut salut  628847 dgouttegattat

Je viens de déplacer la balise fermante </stylesheet> du fichier xsl mais quand j'execute l'application j'ai cette erreur :

'xsl' is an undeclared namespace. Line 4, position 2

j'ai donc regarde la structure du fichier xsl et remarque a la fin du fichier qu'il y avait une balise fermante :
</

xsl:stylesheet>
mais pas ouvrante

je l'ai donc rajoute et quand j'execute j'ai toujours cette erreur
'xsl' is an undeclared namespace. Line 3, position 2.

voici le fichier xsl modifie qui pour moi est correct

<?xmlversion ="1.0"encoding="UTF-8"?>

<stylesheetversion="1.0"xmlns="http://www.w3.org/1999/XSL/Transform">

<xsl:stylesheet>

<xsl:templatematch="/">

<tableborder="1"align="center">

<tr>

<thbgcolor="grey">Computer Name
</th>

<thbgcolor="grey">OS
</th>

<thbgcolor="grey">User
</th>

<thbgcolor="grey">Pwd
</th>

</tr>

<xsl:for-eachselect="NewDataSet/TableMachine">

<tr>

<td>

<xsl:value-ofselect="ComputerName"/>

</td>

<td>

<xsl:value-ofselect="OperatingSystem"/>

</td>

<td>

<xsl:valueofselect="User"/>

</td>

<td>

<xsl:valueofselect="Pwd"/>

</td>

</tr>

</xsl:for-each>

</table>

</xsl:template></

xsl:stylesheet></

stylesheet>

Si tu vois autre chose !
Je te remercie
Christophe
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008

Ca tourne

J'ai du modifie mon fichier xsl et enlever la ligne stylesheet

voici le fichier correct xsl :

<?

xmlversion="1.0"encoding="ISO-8859-1"?><

xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:templatematch="/">

<tableborder="1"align="center">

<tr><tdcolspan="5">Information about machine
</td></tr>

<tr>

<thbgcolor="grey">Computer Name
</th>

<thbgcolor="grey">Operating System
</th>

<thbgcolor="grey">User
</th>

<thbgcolor="grey">Pwd
</th>

</tr>

<xsl:for-eachselect="NewDataSet/TableMachine">

<tr>

<td>

<xsl:value-ofselect="ComputerName"/>

</td>

<td>

<xsl:value-ofselect="OperatingSystem"/>

</td>

<td>

<xsl:value-ofselect="User"/>

</td>

<td>

<xsl:value-ofselect="Pwd"/>

</td>

</tr>

</xsl:for-each>

</table>

</xsl:template></

xsl:stylesheet>

Merci beaucoup
Christophe