Si vous avez un oeil à votre XML (seulement les premières lignes):
<VacancyList generated="2009-08-04T18:43:17"
xmlns="urn:EasyCruit"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.easycruit.com/dtd/vacancy-list.xsd">
<Vacancy id="82034" date_start="2007-04-17" date_end="2009-12-22"
reference_number="CDP-GR3">
<Versions>
<Version language="fr">
<Title>Chef de produit (H/F)</Title>
<TitleHeading/>
Vous lier votre DataGrid à la liste de éléments - bien jusqu'à présent.
Mais dans votre grille, vous faites référence: <%# XPath("Version/Title") %>
Cela ne fonctionnera pas, car le n'a pas une collection «/inside it - these elements are within a
` .....
Alors ce que vous devez référence dans votre ItemTemplate serait:
<%# XPath("Versions/Version[@language='fr']/Title") %>
Cela devrait fonctionner.
MISE À JOUR:
il semble y avoir un problème supplémentaire avec le XmlDataSource ASP.NET 2.0 ne pas être capable de gérer les espaces de noms XML par défaut :-(
C'est cette ligne ici dans votre XML:
<VacancyList ........
xmlns="urn:EasyCruit"
Voir ce billet de blog ici sur le sujet: http://jasonf-blog.blogspot.com/2006/08/xmldatasource-xpath-workaround-for.html
Il y a vraiment deux choses que vous pouvez faire pour résoudre ce problème:
- utiliser une transformation XSLT à bande sur l'espace de noms par défaut afin que le XmlDataSource peut gérer les données
- charge les données de l'URL dans le code, et le lier à l'GridView dans votre code-derrière
MISE à JOUR 2: La méthode de décapage sur les espaces de noms XML semble fonctionner assez bien - le projet de loi propose Evjen cette méthode here.
Si vous enregistrez le fichier XSLT dans le poste à un fichier appelé « StripNamespaces.xslt » dans le projet de site Web, vous devriez obtenir vos données si vous changez le asp: XmlDataSource être:
<asp:XmlDataSource ID="XMLsource" runat="server"
DataFile="http://demo.easycruit.com/export/xml/vacancy/list.xml"
TransformFile="~/StripNamespaces.xslt"
XPath="VacancyList/Vacancy" />
Notez le nouveau paramètre "TransformFile" - cela doit faire référence à ce fichier XSLT. Avec cela en place, je reçois maintenant des données affichées dans le GridView.
Marc