274 ESSENTIAL ADO.NET There are ways to approximate each different data typewith the possible exception of semistructured databy using a variation of a relational concept. Sometimes, however, you need to present the data in an alternative, nonrela- tional format. For example, suppose youre managing an electronic student reg- istration form that contains data that affects the value of 15 different normalized relational tables. In addition, the form may contain information, such as a re- quest for low-fat, vegetarian meals, that has no correlation in the relational schema. You may want to store the information in the request into multiple ta- bles and reproduce the original request on demand. This might require that you retain additional information or even the entire request in its original form. It might also be nice if the information could be transmitted in a platform-independent, universally recognized format. Enter XML. 7.2 XML and ADO.NET One of the most useful features of ADO.NET is its integration with portions of the managed XML data stack. Traditional data access and XML data access have the following integration points: " The DataSet class integrates with the XML stack in schema, data, and serialization features. " The XML schema compiler lets you generate typed DataSet sub- classes. " You can mix nonrelational XML data and the relational DataSet through the XmlDataDocument class and do XPath queries on this data using DataDocumentXPathNavigator class. " ADO.NET supports SQL Server 2000 XML integration features, both in the SqlClient data provider and in an add-on product called SQLXML. The latter product features a series of SqlXml managed data classes and lets you update SQL Server via updategram or DiffGram format. These features, although unrelated in some aspects, work to complete the picture of support of nonrelational as well as relational data in ADO.NET, and di- rect support of XML for marshaling and interoperability. Lets look first at integra- tion in the System.Data.DataSet class and its support for XML. 5132_ch07 Page 274 Thursday, April 25, 2002 3:09 PM