Как мне использовать XSLT в .NET? - PullRequest
4 голосов
/ 09 июня 2011

Я собираюсь перевести XML-документ в другой XML-документ на основе расширяемого преобразования языка стилей. Где я могу найти хорошие учебники о том, как это сделать в .NET?

Я нашел кое-что о том, как это сделать с помощью инструментов с открытым исходным кодом. Но как насчет .NET Framework? Еще пара быстрых вопросов ...

  1. Может кто-нибудь дать мне быстрое и грязное объяснение порядка операций XSLT? Я все еще немного озадачен тем, что происходит?

  2. Существуют ли явные инструменты .NET для работы с XSLT? Я знаю, что при работе с XSLT, XSD и файлами XML вы получаете небольшой выпадающий список XML в главном меню Visual Studio .NET. Я думаю, сейчас все в порядке, но было бы неплохо узнать, есть ли у меня другие варианты.

  3. Я не собираюсь на самом деле преобразовывать файлы ... Ну, я предполагаю, что Расширяемая таблица стилей будет файлом, но я хочу импортировать строку XML, преобразовать ее в другую строку XML, а затем через нее к виду в схеме проектирования MVC. Как я могу это сделать?

1 Ответ

8 голосов
/ 09 июня 2011

1) Может кто-нибудь дать мне быстрое и грязное объяснение порядка операций XSLT? Я все еще немного озадачен тем, что происходит?

С точки зрения использования, есть только одна операция: вы получаете какой-то ввод, а механизм XSLT превращает его в вывод.

2) Существуют ли явные инструменты .Net для работы с XSLT? Я знаю, что при работе с файлами XSLT, XSD и XML вы получаете небольшой выпадающий список XML в главном меню Visual Studio .net. Полагаю, пока все нормально, но было бы неплохо узнать, есть ли у меня другие варианты.

С помощью XslCompiledTransform вы можете применять свои преобразования XSL.

3) Я не собираюсь на самом деле преобразовывать файлы ... Ну, я предполагаю, что таблица расширяемых стилей будет файлом, но я хочу импортировать строку XML, преобразовать ее в другую строку XML, а затем через нее к виду в схеме проектирования MVC. Кто-нибудь раньше пробовал что-нибудь сумасшедшее? Если да, то какой совет?

Класс XslCompiledTransform, о котором я упоминал выше, может работать непосредственно с потоками или объектами XmlReader и XmlWriter, поэтому вы можете делать все это в памяти без каких-либо временных файлов.

Вот базовый пример:

// Load the XSL transform from a file
var transform = new XslCompiledTransform();
transform.Load("foo.xslt");

// This is your input string
string input = /* blah */;

// Make an XML reader out of the string
XmlReader inputXmlReader;
using(var inputReader = new StringReader(input))
{
    inputXmlReader = XmlReader.Create(inputReader);
}

using(writer = new StringWriter()) // prepare a string writer for the output
{
    // if you need to pass arguments to the XSLT...
    var args = new XsltArgumentList();
    args.AddParam("key", "urn:xml-namespace-of-key", "value");

    // Apply the transformation to the reader and write it in our string writer
    transform.Transform(inputXmlReader, args, writer);

    // Retrieve the output string from the string writer
    return writer.GetStringBuilder().ToString();
}

Где я могу найти хорошие учебники о том, как это сделать (...)?

Если вы хотите выучить сам язык XSLT, вы можете проверить этот предыдущий вопрос: «Как начать работу с xslt-преобразованиями?» .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...