SQL Server 2005 Integration Services - Part 42 - XML Task continued
February 9, 2007
In the previous article of our series dedicated to SQL Server 2005 Integration Services, we started discussing various types of actions that can be performed using XML Control Flow task, covering its Validate and XSLT options. We will continue this subject by focusing our attention on the next operation type called XPATH. As mentioned earlier, we encourage you to explore sources of XML-specific information for more in-depth analysis of these topics (we will be referencing some of them throughout our presentation).
We have briefly explained basic purpose and characteristics of XPath (XML Path Language) in our previous article (this was necessary in order to describe some of the XSLT-related concepts), as well as provided some basic examples demonstrating its use (to refresh your memory, XPath is a notation used for designating the location of components within XML documents). The XPATH option of SSIS Control Flow XML Task leverages this functionality by retrieving a portion of an XML document (pointed to by the task's Source property) identified by an XPath expression (specified in the form of task's SecondOperand property).
In order to familiarize yourself with configuration parameters of this option, create a new project of Integration Services type in SQL Server 2005 Business Intelligence Development Studio. Next, drag the XML Task icon from the Toolbox onto its Designer interface. By right clicking on the newly added task, you will be able to select Edit from the context sensitive menu, which will display the Task Editor window. From here, select XPATH as the value of OperationType property. As before, for simplicity sake, we will use Direct input as the SourceType (other possibilities include a variable and File connection) and set the Source based on the example listed at Sample XML File for XPath Syntax (inventory.xml) posting:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="myfile.xsl" ?> <bookstore specialty="novel"> <book style="autobiography"> <author> <first-name>Joe</first-name> <last-name>Bob</last-name> <award>Trenton Literary Review Honorable Mention</award> </author> <price>12</price> </book> <book style="textbook"> <author> <first-name>Mary</first-name> <last-name>Bob</last-name> <publication>Selected Short Stories of <first-name>Mary</first-name> <last-name>Bob</last-name> </publication> </author> <editor> <first-name>Britney</first-name> <last-name>Bob</last-name> </editor> <price>55</price> </book> <magazine style="glossy" frequency="monthly"> <price>2.50</price> <subscription price="24" per="year"/> </magazine> <book style="novel" id="myfave"> <author> <first-name>Toni</first-name> <last-name>Bob</last-name> <degree from="Trenton U">B.A.</degree> <degree from="Harvard">Ph.D.</degree> <award>Pulitzer</award> <publication>Still in Trenton</publication> <publication>Trenton Forever</publication> </author> <price intl="Canada" exchange="0.7">6.50</price> <excerpt> <p>It was a dark and stormy night.</p> <p>But then all nights in Trenton seem dark and stormy to someone who has gone through what <emph>I</emph> have.</p> <definition-list> <term>Trenton</term> <definition>misery</definition> </definition-list> </excerpt> </book> <my:book xmlns:my="uri:mynamespace" style="leather" price="29.50"> <my:title>Who's Who in Trenton</my:title> <my:author>Robert Bob</my:author> </my:book> </bookstore>
for which you also have a readily available list of XPath Examples. Make sure to assign True value to SaveOperationResults property and create a File Connection for Destination pointing to a file (its location and name are not relevant), which content you can subsequently review. SecondOperand (also configured via Direct input) will consist of the XPath query that will extract an arbitrarily chosen portion of the sample XML document. Note that the output of the task execution will depend on the values of PutResultInOneNode and XPathOperation properties grouped in the XPath Options section of the task editor window. The first property dictates (depending on whether it is set to True or False) whether the results will be presented in the XML format, with generic <ResultRootNode> as the root. The second one can be assigned one of the following three values:
Note that you can test results independently by taking advantage of other applications capable of processing XML documents with XPath, such as Microsft's XML Notepad 2007 (requires .NET Framework 2.0) or third party XML Editors such as freely downloadable Exchanger XML Lite Editor. If you have Microsoft Visual Studio, you also can install the Visual XPath free add-in, which allows you to evaluate your XPath statements against corresponding XML documents.
In our next article, we will complete the overview of the XML Control Flow task by describing in more details three remaining operation types - merge, diff, and patch.