Вопрос

У меня есть следующий 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>

Я пытаюсь привязать этот Xml к выпадающему списку в ASP.net используя XmlDataSource и Xslt.Я делаю это в первый раз.Выпадающий список показывает правильное количество пустых элементов, что наводит меня на мысль, что итерация работает, но значения и текст пустые.

Буду признателен за любую помощь в выявлении моей ошибки.

Спасибо

Мой 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>

Мой 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>

Мой Исходный вид

<select name="ddl1" id="ddl1">
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
Это было полезно?

Решение

Эта строка - ваша проблема:

<xsl:value-of select="Category"/>

В этот момент (внутри Category шаблон), контекстным узлом является текущая категория.Селектор, который у вас есть на вашем компьютере. xsl:value-of ищет дочерний элемент контекстного узла также называемый Category.Просто измените эту строку, чтобы вместо нее получить текстовое значение контекстного узла:

<xsl:value-of select="text()"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top