2011-08-03 8 views
9

क्या LINQ क्वेरी को XSLT में परिवर्तित करने का कोई तरीका है? वैसे ही LINQ को SQL में परिवर्तित किया जा सकता है?लिंक को XSLT में कनवर्ट करना

मेरा मतलब है कि मेरे पास एक ठोस अच्छी तरह से परिभाषित एक्सएमएल (एक एक्सएसडी के अनुरूप है) क्या सिस्टम के अंतर्गत सामान को संकलित करने का एक तरीका है। LINX.Expressions उस एक्सएमएल के संबंध में एक्सएसएलटी में?

धन्यवाद।

डिमिट्रीज़ अनुरोध के लिए मैं थोड़ा विस्तार करने की कोशिश करूंगा ... असल में मेरे पास एक ही स्थान पर कुछ डेटा है (यह मूल रूप से एक्सएमएल धारावाहिक डेटा के टुकड़ों के लिए है), और मुझे उन्हें संसाधित करने की आवश्यकता है, मुझे गठबंधन और प्रक्रिया की आवश्यकता है उन्हें।

भेजे मूल डेटा दोनों, और आउटपुट परिणाम डेटा, एक्सएमएल serializable हैं, और एक अच्छी तरह से परिभाषित XSD के अनुरूप हैं। बाकी किसी ऐसे स्थान पर -

मैं गतिशील संसाधन तर्क उत्पन्न करना चाहते हैं। और मेरे उपयोगकर्ता को प्रसंस्करण के साथ बदलने और खेलने के लिए अनुमति दें। मैं अभिव्यक्ति पेड़ों के साथ आसानी से प्रसंस्करण का प्रतिनिधित्व कर सकता हूं। अभिव्यक्ति पेड़ पार्स पेड़ों के समान हैं और प्रोग्राम कोड कैप्चर कर सकते हैं। एसक्यूएल के लिए linq तरीका यह है कि यह अभिव्यक्ति पेड़ों को एसक्यूएल प्रश्नों में परिवर्तित करता है।

चूंकि सभी आय डेटा और आउटपुट दोनों एक अच्छी तरह से परिभाषित एक्सएमएल हैं, मैं एक्सएसएलटी के साथ आसानी से परिवर्तन कर सकता हूं, लेकिन मैं एक्सएसएलटी के साथ एक गतिशील एक्सएसएलटी जनरेटर लिखने के लिए पर्याप्त परिचित नहीं हूं। तो मैंने सोचा कि मैं सी # में परिवर्तनों का निर्माण कर सकता हूं और उन्हें एक्सएसएलटी में बदल सकता हूं .... फिर इसका सामान्य उद्देश्य सी # नहीं है, लेकिन शायद एक अच्छी तरह से परिभाषित डेटा प्रदाता पर विशिष्ट प्रश्न।

उदाहरण खातिर:

(नहीं वास्तविक कोड)

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 का उपयोग

+4

आप विस्तार से बता सकते हैं में पुनः बनाने के बिना एक समस्या को हल करने में मदद मिलेगी हो रही है? आपका प्रश्न ज्यादा समझ में नहीं आता है। एक एक्सएसएलटी एक एक्सएमएल से दूसरे एक्सएमएल में ट्रांसफॉर्मेशन के सेट को परिभाषित करता है। यह LINQ से कैसे संबंधित है। क्या आप कोई ठोस उदाहरण दे सकते हैं? Btw। यदि आपके पास एक्सएसडी है तो आप उस ऑब्जेक्ट मॉडल को उत्पन्न करने के लिए 'xsd.exe' का उपयोग कर सकते हैं और उस ऑब्जेक्ट मॉडल पर ऑब्जेक्ट्स के लिए LINQ का उपयोग कर सकते हैं। और क्यों आप – Steven

+1

:-P वैसे भी XSLT उपयोग करने के लिए क्या आप "LINQ एक्सएमएल में बदला जा सकता" आप उपयोग कर LINQ करने वाली एक्सएमएल तो LINQ XML में तब्दील नहीं कर रहा है के बारे में बात कर रहे हैं मतलब है चाहते हैं, लेकिन XML दस्तावेज़ प्रश्नों करना –

+0

@Rune एफएस: मेरा मतलब एसक्यूएल माफ करना ... यानी LINQ से SQL में प्रदाता लिंकक अभिव्यक्ति को SQL क्वेरी में परिवर्तित करते हैं। –

उत्तर

3

हाँ, आप कर सकते हैं implement your own query provider, जो आंतरिक रूप से XSLT का उपयोग करता है, अगर आप पता लगा सकते हैं XSLT के साथ क्वेरी करने के लिए कैसे।

+0

+1 के लिए +1। लेकिन मैं अपने प्रश्न के लिए कुछ और अधिक प्रासंगिक के लिए और अधिक hopping था –

0

क्यों नहीं केवल Linq2XML का उपयोग करें? यह XDocument और XElement

या वैकल्पिक रूप से यदि आप चाहते हैं कि लोग xlst का उपयोग करके ट्रांसफॉर्म को परिभाषित करना चाहते हैं तो कोड में दस्तावेज़ के विरुद्ध एक xslt निष्पादित क्यों न करें?

मैं देख रहा हूँ न कि कैसे एक Linq2XSLT एक अलग रूप