将 Linq 转换为 XSLT

发布于 2024-11-27 20:03:59 字数 1039 浏览 1 评论 0原文

有没有办法将 LINQ 查询转换为 XSLT?同样的方式LINQ可以转换为SQL吗?

我的意思是,如果我有一个可靠且定义良好的 XML(符合 XSD),是否有办法将 System.Linq.Expressions 下的内容编译成与该 XML 相关的 XSLT?

谢谢。

对于 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);

基本上我想要一些功能类似的东西...如果我使用 IQueryable.Aggregate 我可以在单个 linq 查询中编写它

Is there a way to convert LINQ queries into XSLT? the same way LINQ can be converted to SQL?

I mean if i have a solid well defined XML(Conforms to an XSD) is there a way to compile the stuff under System.Linq.Expressions into XSLT in regard to that XML?

Thank you.

To Dimitries request I'll try to elaborate a little... Basically I have some data in one place (it's basically to chunks of xml serializable data), and I need to process them, I need to combine and process them.

Both the incoming original data , and the output result data, are XML serializable, and conform to a well defined XSD.

I want to generate the processing logic dynamically - someplace else. And allow my user to change and play around with the processing. I can represent the processing it self easily with Expression trees. Expression trees are similar to parse trees and can capture program code. This is the way linq to SQL works it converts expression trees to SQL queries.

Since all the income data and the output are both a well defined XML I can do the transformation easily with XSLT, but I'm not familiar with XSLT enough to write a dynamic XSLT generator. So I thought I could build the transformations in C# and convert them into XSLT.... again its not general purpose C#, but probably specific queries over a well defined data provider.

For the example sake:

(Not real code)

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);

Basically I want something that will function like that... I can write that in a single linq query if I use IQueryable.Aggregate

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苦笑流年记忆 2024-12-04 20:03:59

是的,您可以实现您自己的查询提供程序,它在内部使用 XSLT,如果您可以弄清楚如何使用 XSLT 进行查询。

Yes, you can implement your own query provider, which uses XSLT internally, if you can figure out how to query with XSLT.

欢你一世 2024-12-04 20:03:59

为什么不直接使用 Linq2XML?
它在 XDocument 和 XElement 上运行

,或者如果您希望人们使用 xlst 定义转换,为什么不直接针对代码中的文档执行 xslt?

我不明白拥有 Linq2XSLT 如何帮助解决问题而不以不同的形式重新创建它

Why not just use Linq2XML?
It operates on XDocument and XElement

or alternatively if you want people to define transforms using xlst why not just execute an xslt against the document in code?

I dont see how having a Linq2XSLT would help solve a problem without recreating it in a different form

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文