/// <summary> /// Show a transformation using a registered collection /// </summary> public override void run(Uri samplesDir) { // Create a Processor instance. Processor processor = new Processor(); // Load the source document XdmNode input = processor.NewDocumentBuilder().Build(new Uri(samplesDir, "data/othello.xml")); // Define a stylesheet that splits the document up String stylesheet = "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='2.0'>\n" + "<xsl:template name='main'>\n" + " <out>\n" + " <xsl:for-each select=\"collection('http://www.example.org/my-collection')\">\n" + " <document uri='{document-uri(.)}' nodes='{count(//*)}'/>\n" + " </xsl:for-each><zzz/>\n" + " <xsl:for-each select=\"collection('http://www.example.org/my-collection')\">\n" + " <document uri='{document-uri(.)}' nodes='{count(//*)}'/>\n" + " </xsl:for-each>\n" + " </out>\n" + "</xsl:template>\n" + "</xsl:stylesheet>"; Uri[] documentList = new Uri[2]; documentList[0] = new Uri(samplesDir, "data/othello.xml"); documentList[1] = new Uri(samplesDir, "data/books.xml"); processor.RegisterCollection(new Uri("http://www.example.org/my-collection"), documentList); XsltCompiler compiler = processor.NewXsltCompiler(); compiler.BaseUri = new Uri("http://localhost/stylesheet"); XsltExecutable exec = compiler.Compile(new StringReader(stylesheet)); // Create a transformer for the stylesheet. XsltTransformer transformer = exec.Load(); // Set the root node of the source document to be the initial context node transformer.InitialTemplate = new QName("", "main"); //Set the destination XdmDestination results = new XdmDestination(); // Transform the XML transformer.Run(results); // Show the result Console.WriteLine(results.XdmNode.ToString()); }