2011-08-03 13 views
9

LINQクエリをXSLTに変換する方法はありますか?同じ方法でLINQをSQLに変換できますか?LinqをXSLTに変換する

私は確かによく定義されたXML(XSDに準拠)を持っていれば、そのXMLに関してSystem.Linq.Expressionsの下にあるものをXSLTにコンパイルする方法がありますか?

ありがとうございます。

Dimitriesのリクエスト私は少し詳しく説明しようとします...基本的に私は1つの場所にいくつかのデータを持っています(基本的にはxmlのシリアライズ可能なデータです)、それらを処理する必要があります。それら。

入力元データと出力結果データの両方がXMLシリアライズ可能であり、明確に定義されたXSDに準拠しています。

他の場所で処理ロジックを動的に生成したいと考えています。そして、私のユーザーが処理を変更して遊ぶことができるようにします。私はそれを表現木で簡単に表現することができます。式ツリーは構文解析ツリーに似ており、プログラムコードを取得できます。これはlinqが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クエリでそれを書くことができます

+4

でそれを再作成せずに問題を解決する方法を参照していけませんか?あなたの質問はあまり意味がありません。 XSLTは、あるXMLから別のXMLへの一連の変換を定義します。それはLINQにどのように関連していますか?あなたは具体的な例を挙げることができますか? Btw。 XSDをお持ちの場合は、 'xsd.exe'を使用してオブジェクトモデルを生成し、そのオブジェクトモデル上のオブジェクトにLINQを使用することができます。とにかくXSLTを使いたいのはなぜですか?-p – Steven

+1

「LINQはXMLに変換できますか」というのは、LINQ-to-XMLの使用について言えば、LINQはXMLに変換されませんが、XML文書は –

+0

@ルーンFS:私は、SQLの申し訳ありませんでした...つまり、LINQ SQLのプロバイダはLinqの式をSQLクエリに変換します。 –

答えて

3

はい、implement your own query providerとすることができます。これはXSLTを使用してクエリする方法を理解できる場合は、内部的にXSLTを使用します。

+0

+1のリンクです。しかし、私はより多くの私の質問に関連性の高いホッピングしていた –

0

なぜLinq2XMLを使用しないのですか? XDocumentとXElementで動作します。

また、人々がxlstを使って変換を定義したい場合、なぜコード内の文書に対してxsltを実行しないのでしょうか?

私はあなたが手の込んだLinq2XSLTを有する異なる形