Verwandeln Xml mit Xslt
-
06-09-2019 - |
Frage
Ich habe die folgende XML:
<?xml version="1.0" encoding="utf-8" ?>
<ApplicationSettingCategories>
<Category>Cat1</Category>
<Category>Cat2</Category>
<Category>Cat3</Category>
<Category>Cat4</Category>
<Category>Cat5</Category>
<Category>Cat6</Category>
</ApplicationSettingCategories>
Ich versuche, diese Xml zu einem Dropdownliste in ASP.net zu binden, einen XmlDataSource und Xslt verwenden. Dies ist mein erstes Mal, dies zu tun. Die Dropdownliste zeigt die korrekte Anzahl von leeren Elementen, führt mir die Iteration zu glauben, funktioniert, aber die Werte und Text sind leer.
Jede Hilfe meines Fehlers bei der Identifizierung würde geschätzt.
Danke
Mein XLST
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="ApplicationSettingCategories">
<Categories>
<xsl:apply-templates select="Category"/>
</Categories>
</xsl:template>
<xsl:template match="Category">
<Category>
<xsl:attribute name="Category">
<xsl:value-of select="Category"/>
</xsl:attribute>
</Category>
</xsl:template>
Mein ASPX
<asp:DropDownList ID="ddl1" runat="server" DataSourceID="XmlDataSource1"
DataTextField="Category" DataValueField="Category" />
<asp:XmlDataSource ID="XmlDataSource1" runat="server"
DataFile="~/App_Data/Xml/SettingCategory.xml"
TransformFile="~/Schema/AppCategoryXSLT.xslt"></asp:XmlDataSource>
My Source View
<select name="ddl1" id="ddl1">
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
Lösung
Diese Zeile ist Ihr Problem:
<xsl:value-of select="Category"/>
An diesem Punkt (im Category
Vorlage), ist der Kontextknoten die aktuelle Kategorie. Der Wähler auf dem xsl:value-of
haben sucht ein Kindelement des Kontextknotens auch genannt Category
. Genau diese Linie ändert Kontextknotens Textwert zu erhalten, statt:
<xsl:value-of select="text()"/>