Wenn Sie einen Blick auf Ihre XML haben (nur die ersten paar Zeilen):
<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/>
Sie binden Ihre Datenraster auf der Liste von Elemente - gut so weit.
Aber dann in Ihrem Raster verweisen Sie: <%# XPath("Version/Title") %>
Das wird nicht funktionieren, da die nicht hat ‚/ inside it - these elements are within a
` Sammlung .....
Also, was Sie brauchen, um Referenz in Ihrem ItemTemplate wäre:
<%# XPath("Versions/Version[@language='fr']/Title") %>
Das sollte funktionieren.
UPDATE:
scheint es mit der ASP.NET 2.0 XmlDataSource ein zusätzliches Problem zu sein, nicht Standard-XML-Namespaces zu handhaben zu können :-(
Das ist diese Linie hier in Ihrem XML:
<VacancyList ........
xmlns="urn:EasyCruit"
sehen Sie diesen Blog-Beitrag hier zum Thema: http://jasonf-blog.blogspot.com/2006/08/xmldatasource-xpath-workaround-for.html
Es gibt wirklich zwei Dinge, die Sie tun könnten, dies zu beheben:
- Verwendung einer XSLT-Transformation den Standardnamespace abzustreifen, so dass die XmlDataSource die Daten verarbeiten kann
- laden die Daten aus der URL in Code, und binden Sie es in Ihrem Code-Behind Gridview
UPDATE 2: Die Methode zum Entfernen der XML-Namespaces scheint recht gut zu funktionieren - Bill Evjen schlägt diese Methode here vor.
Wenn Sie seine XSLT-Datei in der Post in eine Datei namens „StripNamespaces.xslt“ in der Website-Projekt zu speichern, sollten Sie Ihre Daten, wenn Sie die asp ändern: XmlDataSource sein:
<asp:XmlDataSource ID="XMLsource" runat="server"
DataFile="http://demo.easycruit.com/export/xml/vacancy/list.xml"
TransformFile="~/StripNamespaces.xslt"
XPath="VacancyList/Vacancy" />
Beachten Sie die neue Einstellung "TransformFile", die auf diese XSLT-Datei verweisen muss. Wenn dies vorhanden ist, werden jetzt Daten in der GridView angezeigt.
Marc