Преобразование Linq в XSLT - PullRequest
       1

Преобразование Linq в XSLT

9 голосов
/ 03 августа 2011

Есть ли способ конвертировать LINQ-запросы в XSLT? таким же образом LINQ может быть преобразован в SQL?

Я имею в виду, если у меня есть четко определенный XML (соответствует XSD), есть ли способ скомпилировать материал под System.Linq.Expressions в XSLT в отношении этого XML?

Спасибо.

К запросу Dimitries я попытаюсь немного уточнить ... По сути, у меня есть некоторые данные в одном месте (в основном это куски сериализуемых данных XML), и мне нужно обрабатывать их, мне нужно объединять и обрабатывать их .

Как входящие исходные данные, так и выходные данные результатов, могут быть XML-сериализуемыми и соответствовать четко определенному XSD.

Я хочу генерировать логику обработки динамически - в другом месте. И позволить моему пользователю изменить и поиграть с обработкой. Я могу легко представить процесс обработки с помощью деревьев выражений. Деревья выражений аналогичны деревьям разбора и могут захватывать программный код. Так работает linq to SQL, он конвертирует деревья выражений в запросы SQL.

Поскольку все данные о доходах и выходные данные представляют собой четко определенный XML, я легко могу выполнить преобразование с помощью XSLT, но я недостаточно знаком с XSLT, чтобы написать динамический генератор XSLT. Поэтому я подумал, что смогу построить преобразования в C # и преобразовать их в XSLT .... опять же, это не C # общего назначения, а, вероятно, конкретные запросы через четко определенного поставщика данных.

Для примера:

(не реальный код)

var schemas = XSchemaSet.Load("a","b");
var doc = XDocument.Load("File",schemas);

var result = from node in doc.Nodes
             where node.Name == "Cats" || node.Name == "Dogs"
             select (new Node(){Name = "Animal Owner", Value = node.Owner)
var newDoc = new XDocument().AddNodes(result);
newDoc.Validate(schemas);

По сути, я хочу что-то, что будет работать так же ... Я могу написать это в одном запросе linq, если я использую IQueryable.Aggregate

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Да, вы можете реализовать свой собственный поставщик запросов , который использует XSLT внутри, если вы можете выяснить, как выполнять запросы с помощью XSLT.

0 голосов
/ 12 августа 2011

Почему бы просто не использовать Linq2XML? Работает на XDocument и XElement

или, если вы хотите, чтобы люди определяли преобразования с помощью xlst, почему бы просто не выполнить xslt для документа в коде?

Я не понимаю, как наличие Linq2XSLT помогло бы решить проблему, не воссоздавая ее в другой форме

...