В недавнем проекте я смог использовать следующий синтаксис для получения различных значений из моего XML-файла:
<xsl:for-each select="distinct-values($ds/datasource/Products-list/Products/CategoryName)">
Но сейчас мы переносим проект в ASP.NET, и следующий код не работает:
public DataSourceManager manager = new DataSourceManager();
protected void Page_Load(object sender, EventArgs e)
{
this.manager.Get("http:***",
"distinct-values(/datasource/Products-list/Products/CategoryName)",
new String[] { "." }, this.messageRepeater);
}
}
Функция Get выглядит следующим образом:
public void Get(String datasourceUrl,
String xpathToNodes,
Array nodeNames,
Repeater repeater,
params String[] options ) {
Debug.WriteLine("datasourceUrl= " + datasourceUrl);
Debug.WriteLine("xpathToNodes= " + xpathToNodes);
//call datasource url
XmlDocument doc = new XmlDocument();
doc.Load(datasourceUrl);
//statusCode
this.statusCode = doc.SelectSingleNode("/datasource/result/status/@code").Value;
if (options.GetLength(0) > 0) {
this.maxItem = Convert.ToInt16(options[0]);
}
//iterate
this.list = new ArrayList();
int count = 0;
if (IsErrorCode == false) {
XmlNodeList nodes = doc.SelectNodes(xpathToNodes);
foreach (XmlNode node in nodes) {
Hashtable row = new Hashtable();
foreach (String nodeName in nodeNames) {
row.Add(nodeName, node.SelectSingleNode(nodeName).InnerText);
}
list.Add(row);
if (++count == this.maxItem) {
break;
}
}
}
//data binding
repeater.DataSource = list;
repeater.DataBind();
}
Возвращена ошибка:
Требуется менеджер пространства имен или XsltContext. Этот запрос имеет префикс, переменную или пользовательскую функцию.
Как я могу получить различные значения в ASP.NET?