Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# для профСссионалов. Π’ΠΎΠΌ IIΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 8

Автор Π‘ΠΈΠΌΠΎΠ½ Робинсон

 // Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅. Π€Π°ΠΉΠ» Π²Ρ‹Π²ΠΎΠ΄Π° создаСтся здСсь.

 transForm.Transform(nav, null, fs);

}

Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π‘Π½Π°Ρ‡Π°Π»Π° создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° основС XPathDocument ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° основС XslTransform. Π—Π°Ρ‚Π΅ΠΌ Ρ„Π°ΠΉΠ» bookspath.xml загруТаСтся Π² doc, a books.xsl Π² transForm. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для записи Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° HTML Π½Π° диск создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ FileStream.

Если Π±Ρ‹ это Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ASP.NET, ΠΌΡ‹ использовали Π±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ TextWriter ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈ Π±Ρ‹ Π΅Π³ΠΎ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ HttpResponse. Если Π±Ρ‹ ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML, Ρ‚ΠΎ примСнялся Π±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° основС XmlWriter. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ XPathDocument ΠΈ XslTransform Π±ΡƒΠ΄ΡƒΡ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹, ΠΌΡ‹ создаСм XPathNavigator Π½Π° doc ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ nav ΠΈ этот stream Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ Transform ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° transForm. XslTransform ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… вСрсий, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ‚ΠΎΡ€ΠΎΠ², XsltArgumentList (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅) ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π½Π°Π²ΠΈΠ³Π°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ XPathNavigator ΠΈΠ»ΠΈ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс IXPathNavigable. ΠŸΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ TextWriter, Stream ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π½Π° основС XmlWriter.

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ books.xsl являСтся Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ стилСй. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">

  <html>

   <head>

    <title>Price List</title>

   </head>

   <body>

    <table>

     <xsl:apply-templates/>

    </table>

   </body>

  </html>

 </xsl:template>


 <xsl:template match="bookstore">

  <xsl:apply-templates select= "book"/>

 </xsl:template>


 <xsl:template match="book">

  <tr><td>

   <xsl:value-of select="title"/>

  </td><td>

   <xsl:value-of select="price"/>

  </td></tr>

 </xsl:template>

</xsl:stylesheet>

Π Π°Π½Π΅Π΅ упоминался ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ XsltArgumentList. Π­Ρ‚ΠΎ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с пространством ΠΈΠΌΠ΅Π½. Когда это сдСлано, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²ΠΎ врСмя прСобразования. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (находится Π² XPathXSLSample4):

private void button1_Click(object sender, System.EventArgs e) {

 // Π½ΠΎΠ²Ρ‹ΠΉ XPathDocument

 XPathDocument doc=new XPathDocument("..\\..\\..\\booksxpath.xml");

 // Π½ΠΎΠ²Ρ‹ΠΉ XslTransform

 XslTransform transForm=new XslTransform();

 transForm.Load("..\\..\\..\\booksarg.xsl");

 // Π½ΠΎΠ²Ρ‹ΠΉ XmlTextWriter, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ xml

 XmlWriter xw=new XmlTextWriter(..\\..\\..\\argSample.xml", null);

 // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ XslArgumentList ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ BookUtils

 XsltArgumentList argBook=new XsltArgumentList();

 BookUtils bu=new BookUtils();

 // это сообщаСт список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² BookUtils

 argBook.AddExtensionObject("urn:ProCSharp", bu);

 // Π½ΠΎΠ²Ρ‹ΠΉ XPathNavigator

 XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();

 // Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

 transForm.Transform(nav, argBook, xw);

 xw.Close();

}


// простой тСстовый класс

public class BookUtils {

 public BookUtils() {}


 public string ShowText() {

  return "This came from the ShowText method!";

 }

}

Π’Ρ‹Π²ΠΎΠ΄ прСобразования (argSample.xml) выглядит Ρ‚Π°ΠΊ:

<?xml version="1.0"?>

<books>

 <discbook>

  <booktitle>The Autobiography of Benjamin Franklin</booktitle>

  <showtext>This came from the ShowText method!</showLext>

 </discbook>

 <discbook>

  <booktitle>The Confidence Man</booktitle>

  <showtext>This came from the ShowText method!</showtext>

 </discbook>

 <discbook>

  <booktitle>The Gorgias</booktitle>

  <showtext>This came from the ShowText method!</showtext>

 </discbook>

 <discbook>

  <booktitle>The Great Cookie Caper</booktitle>

  <showtext>This came from the ShowText method!</showtext>

 </discbook>

 <discbook>

  <booktitle>A Really Great Book</booktitle>

  <showtext>This came from the ShowText method!</showtext>

 </discbook>

</books>

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ класс BookUtils. Π’ этом классС ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ практичСски бСсполСзный ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку "This came from the ShowText method!". Для события button1_Click ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ XPathDocument ΠΈ XslTransform Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ это дСлалось Ρ€Π°Π½ΡŒΡˆΠ΅, Π½ΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. Π’ этот Ρ€Π°Π· ΠΌΡ‹ собираСмся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XML, поэтому ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ XMLWriter вмСсто FileStream. Π’ΠΎΡ‚ эти измСнСния:

XsltArgumentList argBook=new XsltArgumentList();

BookUtils bu=new BookUtils();

argBook.AddExtensionObject("urn:ProCSharp", bu);

ИмСнно здСсь создаСтся XsltArgumentList. ΠœΡ‹ создаСм экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BookUtils, ΠΈ ΠΊΠΎΠ³Π΄Π° вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ AddExtensionObject, Π΅ΠΌΡƒ пСрСдаСтся пространство ΠΈΠΌΠ΅Π½ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Когда дСлаСтся Π²Ρ‹Π·ΠΎΠ² Transform, Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ XsltArgumentList (argBook) вмСстС с XPathNavigator ΠΈ созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ XmlWriter. Π’ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ booksarg.xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bookutil="urn:ProCSharp">

 <xsl:output method="xml" indent="yes"/>


 <xsl:template match="/">

  <xsl:element name="books">

   <xsl:apply-templates/>

  </xsl:element>

 </xsl:template>


 <xsl:template match="bookstore">

  <xsl:apply-templates select="book"/>

 </xsl:template>


 <xsl:template match="book">

  <xsl:element name="discbook">

   <xsl:element name="booktitle">

    <xsl:value-of select="title"/>

   </xsl:element>

   <xsl:element name="showtext">

    <xsl:value-of select="bookUtil:ShowText()"/>

   </xsl:element>

  </xsl:element>

 </xsl:template>

</xsl:stylesheet>

Π—Π΄Π΅ΡΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ строки. Π’ Π½Π°Ρ‡Π°Π»Π΅ добавляСтся пространство ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ создаСтся ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ XsltArgumentList. Π—Π°Ρ‚Π΅ΠΌ примСняСтся стандартный синтаксис использования прСфикса ΠΏΠ΅Ρ€Π΅Π΄ пространством ΠΈΠΌΠ΅Π½ XSLT ΠΈ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π˜Π½Π°Ρ‡Π΅ это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сцСнария XSLT. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ стилСй ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ C#, VB ΠΈ JavaScript. Π‘ΠΎΠ»ΡŒΡˆΠΈΠΌ достоинством этого являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, сцСнарий компилируСтся ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Transform.Load; Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сцСнарии, Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ASP.NET. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΈΠΌ способом. Π”ΠΎΠ±Π°Π²ΠΈΠΌ сцСнарий ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ стилСй. Π­Ρ‚ΠΈ измСнСния ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ bookscript.xsl:

<xsl:stylesheet version="1.0" xmlns:Xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://wrox.com">

 <msxsl:script language="C#" implements-prefix="user">

  string ShowText() {

   return "This came from the ShowText method!";

  }

 </msxsl:script>

 <xsl:output method="xml" indent="yes"/>


 <xsl:template match="/">

  <xsl:element name="books">

   <xsl:apply-templates/>

  </xsl:element>

 </xsl:template>


 <xsl:template match="bookstore">

  <xsl:apply-templates select="book"/>

 </xsl:template>


 <xsl:template match="book">

  <xsl:element name="discbook">

   <xsl:element name="booktitle">

    <xsl:value-of select="title"/>

   </xsl:element>

   <xsl:element name="showtext">

    <xsl:value-of select="user:ShowText()"/>

   </xsl:element>

  </xsl:element>

 </xsl:template>

</xsl:stylesheet>

ИзмСнСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π·Π°Π΄Π°Π½ΠΈΠ΅ пространства ΠΈΠΌΠ΅Π½ сцСнариСв, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скопирован ΠΈΠ· VS.NET IDE) ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Ρ‹Π·ΠΎΠ²Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ стилСй. Π’Ρ‹Π²ΠΎΠ΄ выглядит Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подходящСС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅; XPathDocument, Ссли Π½Π΅ трСбуСтся Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, XmlDataDocument, Ссли Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΈΠ· ADO.NET, ΠΈ XmlDocument, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, нСсмотря Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ.

XML ΠΈ ADO.NET

XML являСтся срСдством, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ связываСт ADO.NET с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΡ€ΠΎΠΌ. ADO.NET Π±Ρ‹Π» создан для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ срСды XML. XML ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСобразования Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΈ ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ страницу Web. Π’Π°ΠΊ ΠΊΠ°ΠΊ ADO.NET ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ XML Π² качСствС транспорта, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ с прилоТСниями ΠΈ систСмами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΎΠ± ADO.NET. Пока обрабатываСтся XML, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. ADO.NET ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ XML, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΈΠ· этих ΠΆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ связи с Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ XML для ADO.NET, сущСствуСт ряд ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… свойств ADO.NET, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² XML. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ XML содСрТит Ρ‚Π°ΠΊΠΆΠ΅ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСляционныС Π΄Π°Π½Π½Ρ‹Π΅ ADO.NET.