2008-12-13 10 views
10

.NET तथाकथित एक्सटेंशन ऑब्जेक्ट का उपयोग करके एक्सएसएलटी का विस्तार करने की अनुमति देता है। बहुत आसान और बहुत सुविधाजनक।एक्सएसएलटी एक्सटेंशन ऑब्जेक्ट विधि से .NET रिटर्न प्रकारों की अनुमति क्या है?

public class VeryHandyExtensionFunctions 
{ 
    public string VerySmartStringConcat(XPathNodeIterator NodeList) 
    { 
     return "some very smart string concat based on NodeList"; 
    } 
} 

कुछ जादू लंबित (bellow देखें) आप अपने xslt के हिस्से के रूप VerySmartStringConcat का उल्लेख कर सकते:

<xsl:value-of select="someprefix:VerySmartStringConcat(nodes[@withsomeattribute])"/> 

केवल एक चीज है ताकि इसे बनाने के लिए ऐसा करने के लिए आप एक वर्ग बनाने के द्वारा ऐसा करने के हो पता लगाना में

XsltArgumentList xsltArg = new XsltArgumentList(); 
xsltArg.AddExtensionObject("SomeUriResolvingToSomePrefix",new VeryHandyExtensionFunctions); 
XslCompiledTransform xslTransform; 
XmlWriter W = XmlWriter.Create(SomeTarget, Xslt.OutputSettings); 
xslTransform.Transform(SomeXmlDocument, xsltArg, W); 

नेट काफी चालाक है: हो आपका एक्सटेंशन वर्ग XslCompiledTransform वर्ग के लिए (ऊपर VeryHandyExtensionFunctions) का एक उदाहरण पारित करने के लिए, एक XsltArgumentList उपयोग कर रहा है एक्सएमएल प्रकारों को इनपुट पैरामीटर & एक्सटेंशन फ़ंक्शंस के रिटर्न प्रकारों में कनवर्ट करने के लिए। हालांकि, हर बार एक बार यह समर्थन प्रकार के बारे में शिकायत करता है। समर्थित प्रकार क्या हैं?

+0

@Boaz: हाँ, यह जवाब है। क्या आप कृपया सवाल बंद कर सकते हैं? –

उत्तर

13

कुछ शोध मैं http://msdn.microsoft.com/en-us/magazine/bb986125.aspx पर इस पाया करने के बाद:

-3 सी XPath प्रकार -> समतुल्य नेट कक्षा (प्रकार)
स्ट्रिंग -> System.String
बूलियन -> System.Boolean
संख्या -> System.Double
परिणाम ट्री टुकड़ा -> System.Xml.XPath.XPathNavigator
नोड सेट -> System.Xml.XPath.XPathNodeIterator

संबंधित मुद्दे