جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
XML در دات نت
-(3 Body) 
XML در دات نت
Visitor 673
Category: دنياي فن آوري

ايجاد يک فايل

XML ، يک زبان نشانه گذاري است که امکانات گسترده اي به منظور تشريح اطلاعات را ارائه مي نمايد . مولفين اسناد XML به منظور تشريح اطلاعات از تگ ها و خصلت هاي اختصاصي خود استفاده مي نمايند. ( تگ از قبل تعريف شده اي وجود ندارد ) . تگ هاي موجود در يک سند XML با يکديگر ترکيب و به همراه مجموعه قوانيني که ارتباط بين آنان را مشخص مي نمايد ، ارائه مي گردند . به منظور تعريف قوانين فوق از( DTD ( Documet Type Definition و XML Schema استفاده مي گردد .
XML در سال 1996 توسط کنسرسيوم وب ( گروه کاري XML ) پياده سازي شده است . استاندارد باز و مستقل از پلت فرم بودن از جمله مهمترين ويژگي هاي XML محسوب مي گردد. XML از آن زمان تاکنون دستخوش تغييرات متعددي شده و از آن در ابعاد گسترده اي نظير ذخيره سازي داده هاي مورد نياز که مي بايست بين برنامه ها منتقل گردند، استفاده مي شود ( خصوصا" برنامه هائي که بر روي اينترنت اجراء مي گردند ) .

XML در دات نت

XML داراي جايگاهي خاص در فريمورک دات نت است . فريمورک دات نت نه تنها امکان استفاده موثر از XML در برنامه ها را در اختيار شما قرار مي دهد بلکه از آن در مواردي متعددي نظير فايل هاي پيکربندي ، سرويس هاي وب و ADO.NET نيز استفاده مي گردد. فريمورک دات نت مجموعه اي گسترده از کلاس ها به منظور کار با اسناد XML را ارائه نموده است که جملگي از System.Xml مشتق مي شوند . سه namespace زير ويژگي هاي اصلي XML در دات نت را ارائه مي نمايند :
• System.Xml ، مهمترين namespace ارائه شده در دات نت مي باشد که اشياء سازگار با نسخه XML کنسرسيوم وب و مجموعه اي از اشياء جانبي به منظور کار با اسناد XML را ارائه مي نمايد .با استفاده از اشياء سازگار با XML ارائه شده توسط کنسرسيوم وب ، امکان دستيابي به گره هاي موجود در يک سند XML فراهم مي گردد . در اين رابطه اشياء reader و writer به منظور دستيابي به فايل هاي XML موجود بر روي ديسک و کلاسي به منظور بررسي اعتبار اسناد XML در مقابل يک DTD و يا XML Schema ، ارائه شده است .
• System.Xml.XPath . با استفاده از XML Path Language) XPath )، امکان دستيابي و پردازش بخش هائي خاص ازيک سند XML فراهم مي گردد. مثلا" مي توان عبارت خاصي را ايجاد نمود که گره هاي خاصي را در يک سند XML و بر اساس نام ، نوع و يا مقدار پيدا نمايد . به عبارات فوق ، XPath Queries گفته مي شود . namespace فوق مجموعه اي از اشياء Navigator به منظور انجام عمليات تکراري در يک سند XML را نيز ارائه نموده است . System.Xml.XPath اينترفيس DOM کنسرسيوم وب را حمايت نمي نمايد .
• System.Xml.Xsl .از ( XSL ( eXtensible Stylesheet Language به منظورتعريف فرمت مورد نظر براي داده هاي XML استفاده مي گردد . کلاس فوق ، اشياء لازم به منظور تبديل اسناد XML که از آن با نام XSLT ياد مي شود را نيز ارائه مي نمايد . XSLT فرآيندي است که در آن با استفاده از يک سند XML ، اسناد مبتني بر text ايجاد مي گردند . namespace فوق ، همچنين يک کلاس به منظور پاس دادن آرگومان به يک XSLT Stylesheet براي تبديل شرطي را ارائه نموده است .
علاوه بر سه namespace اشاره شده از دو namespace ديگر به نام System.Xml.Schema و System.Xml.Serialization به منظور انجام عمليات خاص در ارتباط با استاد XML ، استفاده مي شود .

ايجاد يک سند XML با استفاده از XmlTextWriter

از XmlTextWriter ، به منظور نوشتن داده در اسناد XML سازگار با استاندارد W3C XML 1.0 استفاده مي شود . کلاس فوق اطلاعات را cache نکرده و از آن به منظور نوشتن داده در يک سند XML به صورت forward-only ، استفاده مي گردد . XmlTextWriter نسبت به DOM داراي سرعت بمراتب بيشتري بوده و از حافظه کمتري استفاده مي نمايد ( در هر لحظه يک گره در حافظه قرار مي گيرد ) . کلاس فوق گره ها را يکي پس از ديگري ايجاد نموده و آنان را براي خروجي مورد نظر ارسال مي نمايد ( يک Stream ، شي ديگر ويا يک فايل موجود بر روي ديسک ) .
جدول زير مهمترين متدهاي اين کلاس را نشان مي دهد :

کاربرد

متد

 از متد فوق به منظور شروع  يک سند XMLو درج اولين خط در آن که شامل معرفي فايل XMLو نحوه encodingاست ، استفاده مي گردد.  

 WriteStartDocument()

 از متد فوق به منظور ايجاد يک عنصر جديد در سند XMLاستفاده مي گردد . نام عنصر جديد توسط رشته ورودي مشخص مي شود .

WriteStartElement(string)

از متد فوق به منظور ايجاد يک عنصر جديد در سند XMLاستفاده مي گردد . نام عنصر جديد و مقدار متناظر با آن توسط پارامترهاي ورودي مشخص مي گردد.

WriteElementString(name, text_value)

 از متد فوق به منظور ايجاد يک خصلت و نسبت دهي مقدار مورد نظر به آن استفاده مي شود . خصلت ايجاد شده به عنصر جاري سند XMLنسبت داده مي شود .

WriteAttributeString(name, value)

 از متد فوق به منظور بستن عنصري که توسط  متد WriteStartElementايجاد شده است ، استفاده مي گردد .

WriteEndElement()

 از متد فوق به منظور اتمام عمليات نوشتن در سند XMLاستفاده مي گردد .

WriteEndDocument()

از متد فوق به منظور نوشتن محتواي سند XMLبه فايل مشخص شده در يک آدرس خاص، استفاده مي گردد .

Close()

به منظور شروع کار با کلاس XmlTextWriter مي بايست يک فايل و نحوه encoding آن مشخص گردد. encoding مي بايست از نوع System.Text.Encoding باشد . ( مثلا" System.Text.Encoding.ASCII ، System.Text.Encoding.Unicode و يا System.Text.Encoding.UTF8 ) .

مثال : استفاده از XmlTextWriter به منظور ايجاد يک فايل XML

در اين مثال با استفاده از XmlTextWriter يک فايل XML با نام Visitors.xml و ساختار زير ايجاد مي گردد .

 

<userInfo>
   <browserInfo>
      <urlReferrer>...</urlReferrer>
      <userAgent>...</userAgent>
      <userLanguages>...</userLanguages>
   </browserInfo>
  <visitInfo timeVisited>
    <ip>...</ip>
    <rawUrl>...</rawUrl>
    <totalbytes>...</totalbytes>
    <browsertype>...</browsertype>
    <contentEncoding>...</contentEncoding>
    <contentlength>...</contentlength>
    <httpmethod>...</httpmethod>
    <IsSecureConnection>...</IsSecureConnection>
    <RequestType>...</RequestType>
   </visitInfo>
</userInfo>

مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Text" %>

<script language="vb" runat="server">
Sub Page_Load()
Dim writer As XmlTextWriter
writer = new XmlTextWriter(Server.MapPath("Visitors.xml"), Encoding.UTF8)

writer.WriteStartDocument()
writer.WriteStartElement("userInfo")
writer.WriteStartElement("browserInfo")

if (Request.UrlReferrer is "") then
     writer.WriteElementString("urlReferrer", "none")
Else
   writer.WriteElementString("urlReferrer",Request.Url.Tostring())
End if


writer.WriteElementString("userAgent", Request.UserAgent)
writer.WriteElementString("userLanguages", String.Join(", ", Request.UserLanguages))
writer.WriteEndElement()

writer.WriteStartElement("visitInfo")
writer.WriteAttributeString("timeVisited", DateTime.Now.ToString())
writer.WriteElementString("ip", Request.UserHostAddress)
writer.WriteElementString("rawUrl", Request.RawUrl)
writer.WriteElementString("totalbytes", Request.TotalBytes)
writer.WriteElementString("browsertype", Request.Browser.Type)
writer.WriteElementString("contentEncoding", Request.ContentEncoding.EncodingName)
writer.WriteElementString("contentlength", Request.Contentlength)
writer.WriteElementString("httpmethod", Request.HttpMethod)
writer.WriteElementString("IsSecureConnection", Request.IsSecureConnection)
writer.WriteElementString("RequestType", Request.RequestType)

writer.WriteEndElement()
writer.WriteEndDocument()
writer.Close()
End Sub
</script>

خواندن يک فايل

به منظور دستيابي به محتواي يک سند XML ، مي بايست آن را Parse نمود تا به بخش مورد نظر دست يافت . به نرم افزارهائي که امکان انجام چنين عملياتي را فراهم مي نمايند ، "پارسر" گفته مي شود . پارسرها داراي دو نوع متفاوت مي باشند :
• پارسرهاي ( DOM : ( Document Object Model ، يک ساختار درختي از سند XML را در حافظه ايجاد نموده و امکان حرکت بر روي گره ها و يا خصلت هاي متفاوتي را در اختيار قرار مي دهند.
• پارسرهاي ( SAX : ( Simple API for XML ، سندهاي XML را به صورت ترتيبي پردازش نموده و نسبت به پارسرهاي DOM حافظه بمرابت کمتري را اشغال مي نمايند .
در MSXML ver 3.0 ، شرکت مايکروسافت دو پارسر فوق را ارائه نموده است . در دات نت نيز از پارسر DOM که داراي سازگاري و شباهت بسيار زيادي با MSXML است و پارسر SAX که دستخوش تغييرات متعددي نسبت به گذشته شده است ، استفاده مي گردد . پارسرهاي قبل از دات نت ، (مثلا" پارسر MSXML ) کلاس ها و اينترفيس هاي متعددي را به منظور انجام عمليات متقاوت بر روي اسناد XML ارائه نموده که با استاندارد پيشنهادي کنسرسيوم وب ، سازگاري و نزديکي قابل توجهي دارد. در دات نت علاوه بر استمرار وضعيت فوق ، روش هاي ساده و انعطاف پذيري به منظور کار بر روي اسناد XML ارائه شده است .
کلاس XmlTextReader
کلاس XmlTextReader روشي سريع و موثر به منظور parse نمودن اسناد XML را ارائه مي نمايد. کلاس فوق از حافظه بطرز کاملا" حساب شده و بهينه اي استفاده مي نمايد. صرفا" گره جاري در حافظه نگهداري مي گردد ( Cached ) و عنصري که قبلا" parse شده است در حافظه وجود نخواهد داشت . در صورتي که به وجود عناصر قبلي نياز باشد ، مي بايست فايل XML مجددا" از ابتدا و به صورت forward-only خوانده شود. کلاس فوق از XmlReader به ارث رسيده و متعلق به System.Xml مي باشد .
با استفاده از متدها و خصلت هاي ارائه شده توسط کلاس فوق، مي توان بسادگي به محتوا و عناصر موجود در يک سند XML دست يافت . متدهاي ارائه شده همواره گره جاري را برمي گردانند و در ادامه مي توان عمليات مورد نظر را بر روي آنان انجام داد .
به منظور استفاده از کلاس XmlTextReader مي بايست از System.Xml استفاده و يک نمونه از کلاس فوق را ايجاد نمود .

 Dim reader As XmlTextReader  
 reader = New XmlTextReader ( Server.MapPath("visitors.xml") )

به منظور خواندن محتواي يک سند XML از متد Read و در يک ساختار تکرار استفاده مي نمائيم .

Do while reader.read ()
     'عمليات مورد نظر
loop

در صورتي که يک گره با موفقيت خوانده شود، مقدار True برگردانده شده و در ادامه مي توان با استفاده از متدها و خصلت هاي ارائه شده ، عمليات مورد نظر را انجام داد. بررسي نوع يک گره ، دستيابي به خصلت هائي خاص و يا محتواي يک گره نمونه هائي در اين زمينه مي باشد .
جدول زير مهمترين متدها و خصلت هاي کلاس XmlReaderClass را نشان مي دهد .

کاربرد

متد / خصلت

 متد فوق ، cursorرا بر روي گره بعدي قرار داده و درصورتي که  گره با موفقيت خوانده شود ، مقدار trueرا بر مي گرداند . از متد فوق در يک ساختار تکرار و به منظور خواندن و انجام پردازش هاي لازم در خصوص اسناد XMLاستفاده مي گردد .

   Read()

 خصلت فوق نوع گره را بر مي گرداند ( المان ، متن و يا ساير موارد ).

  NodeType

خصلت فوق،  نام گره جاري را بر مي گرداند .

  Name

 خصلت فوق ، محتواي گره را بر مي گرداند .

  Value

 محتواي يک گره را بر اساس يک نوع داده خاص برمي گرداند. مثلا" متد ReadStringمحتواي يک گره را به صورت يک رشته برمي گرداند .

  ReadString(), Readxxxx()....

متد فوق ، مقدار خصلتي را که به عنوان پارامتر در اختيار آن گذاشته شده است ،  برمي گرداند .

  GetAttribute("attb_name")

در صورتي که گره اي  داراي يک خصلت باشد، مقدار trueو در غيراينصورت مقدار False، برگردانده مي شود .

  HasAttributes

در اين مثال قصد داريم فايل Visitors.xml را که در مقاله "XML در دات نت : ايجاد يک فايل با نحوه ايجاد آن آشنا شديم را خوانده و عناصر موجود در آن را به همراه مقادير نسبت داده شده به هر يک در خروجي نمايش دهيم .

محتواي فايل Visitors.xml

<?xml version="1.0" encoding="utf-8"?>
<userInfo>
  <browserInfo>
      <urlReferrer>http://localhost/MakeXmlFile1.aspx</urlReferrer>
      <userAgent>Mozilla/4.0 (compatible; MSIE 6.0; ... </userAgent>
      <userLanguages>fa, en-us;q=0.5</userLanguages>
   </browserInfo>
  <visitInfo timeVisited="10/15/2004 2:18:27 AM"> <ip>127.0.0.1</ip>
      <rawUrl>/MakeXmlFile1.aspx</rawUrl>
      <totalbytes>0</totalbytes>
      <browsertype>IE6</browsertype>
      <contentEncoding>Unicode UTF-8)</contentEncoding>
      <contentlength>0</contentlength>
      <httpmethod>GET</httpmethod>
       <IsSecureConnection>False</IsSecureConnection>
       <RequestType>GET</RequestType>
   </visitInfo>
</userInfo>

مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Text" %>

<script runat="server">
 sub Page_Load(obj as object, e as eventargs)
  Dim reader As XmlTextReader

  Try
     reader = New XmlTextReader ( Server.MapPath("visitors.xml") )
     Dim strNodeResult As String =""
     Dim objNodeType As XmlNodeType

     Do while reader.read ()
         objNodeType = reader.NodeType
         Select Case objNodeType
           Case XmlNodeType.XmlDeclaration   strNodeResult + =" XML Declaration : <b>" &_
                reader.Name & " " & reader.Value & "</b><br /> "
           Case XmlNodeType.Element   strNodeResult + =" Element : <b>" &_
                reader.Name & "</b><br /> "
           Case XmlNodeType.Text   strNodeResult + =" &nbsp; - Value : <b>" &_
                reader.Value & "</b></p><br /> "
        End Select
    If reader.AttributeCount > 0 Then
        Do While reader.MoveToNextAttribute()
           strNodeResult += "&nbsp - Attribute : <b>" & _
           reader.name & "</b> &nbsp - Value  <b>" & reader.Value & "</b><br />"
        Loop
   End If
  Loop
LblMessage.Text =" <P Align=""Center"" dir =""rtl""> خواندن فايل<b>Visitors.xml</b>
LblFile.Text = strNodeResult

Catch objError As Exception
        LblMessage.Text = "<b>* بروز اشکال در خواندن فايل</b>.<br /> "   &_
            objError.Message & "<br /> " & objError.Source
       Exit Sub
 Finally
       If ( Not reader Is Nothing ) then
          reader.close
      End If
  End Try
 End Sub
</script>
<html dir >
<form Language="vb" runat="server" >
   <asp:label id="LblMessage" runat="server" />
   <asp:label id="LblFile" runat="server" />
</form>
</html>

تبديل اسناد XML

به منظور پردازش يک سند XML مي توان از روش هاي مختلفي استفاده نمود . برخي از روش ها ، مبتني بر تکنولوژي هاي سمت سرويس گيرنده و برخي ديگر مبتني بر تکنولوژي هاي سمت سرويس دهنده بوده که پس از پردازش يک سند XML و ايجاد خروجي مناسب ، نتايج براي مرورگر ارسال مي گردد . در اين رابطه مي توان از امکانات ارائه شده به منظور انجام عمليات متفاوتي در ارتباط با اسناد XML نظير ويرايش يک سند و يا قابليت اشتراک آنان بين چندين سرويس دهنده ، استفاده نمود .
در اين مقاله قصد داريم با تاکيد بر تکنولوژي هاي سمت سرويس دهنده به نحوه تبديل اسناد XML در محيط دات نت اشاره نمائيم .
براي دستيابي به اسناد XML با استفاده از تکنولوژي هاي سمت سرويس گيرنده مي توان از روش هاي متفاوتي استفاده نمود :
• اسناد XML مبتني بر فايل : استفاده از فايل هاي XML و XSLT به عنوان ورودي و تبديل اسناد XML به XHTML به منظور نمايش توسط مرورگر
• اسناد XML مبتني بر حافظه :استفاده از استاندارد Document Object Model )DOM ) به منظور دستيابي و پردازش اسناد XML
• اسناد XML مبتني بر Stream : ارائه يک روش ساده به منظور خواندن و نوشتن اسناد XML که در هر لحظه يک عنصر توليد خواهد شد .
پردازش هاي سمت سرويس دهنده در محيط دات نت انجام مي شود .مثلا" در روش دستيابي مبتني بر فايل ، فريمورک دات نت يک کنترل سرويس دهنده را ارائه نموده است که با استفاده از يک فايل XML و يک فايل XSLT ، خروجي مناسب به منظور نمايش در صفحات وب توليد مي گردد . در روش دستيابي مبتني بر حافظه ، فريمورک دات نت امکانات لازم به منظور پردازش اسناد XML را متناسب با استاندارد DOM مربوط به کنسرسيوم وب ارائه نموده است . در روش دستيابي مبتني بر Stream نيز کلاس هاي لازم به منظور خواندن و يا نوشتن اطلاعات در فايل هاي XML ارائه شده است .
در تمامي مثال هائي که در ادامه به بررسي آنان خواهيم پرداخت از فايل XML زير ( SrcoArticles.xml ) استفاده شده است . فايل فوق ، حاوي ليستي ساده از مقالات است .

 <?xml version="1.0" encoding="Utf-8"?>

  <Articles>

   <Article>
      <ID>111111</ID>
     <Name> XML در دانت : خواندنيک فايل</Name>
      <Description> نحوه خواندن يک فايلXML دردات نت</Description>
      <DatePublish>  28 / 7 / 1383 </DatePublish>
   </Article>

   <Article>
      <ID>222222</ID>
     <Name> XML در دانت : ايجاد يک فايل</Name>
      <Description> نحوه ايجاد يک فايلXML در دات نت</Description>
      <DatePublish> 24 / 7 / 1383 </DatePublish>
   </Article>

</Articles>

تبديل فايل هاي XML با استفاده از فايل هاي XSLT

استفاده از فايل هاي XSLT در ارتباط با فايل هاي XML بر روي سرويس دهنده محقق مي گردد . يک تبديل XSLT ، با استفاده از يک کنترل سرويس دهنده <asp:xml> بر روي يک صفحه وب و در محل مورد نظر براي نمايش خروجي ، انجام مي شود ( خروجي به صورت XHTML ) . براي کنترل فوق ، مي بايست فايل هاي XML و XSLT را مشخص تا با استفاده از آنان خروجي مورد نظر توليد گردد .
کنترل <asp:xml> در محل مورد نظر به منظور نمايش خروجي در يک صفحه وب قرار مي گيرد . کنترل فوق از دو خصلت به منظور مشخص نمودن فايل هاي XML و فايل XSLT استفاده مي نمايد . شکل عمومي استفاده از کنترل فوق به صورت زير است :

 <asp:Xml DocumentSource="path" TransformSource="path" runat="server"/>

خصلت هاي DocumentSource و DocumentTransform به ترتيب مسير استقرار فايل هاي XML و XSLT را مشخص مي نمايند .
فايل SrcoArticles.xsl که از آن به منظور تبديل فايل SrcoArticles.xml استفاده شده است :

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

<xsl:template match="/">

 <table border="1" dir="rtl" style="border-collapse:collapse">
    <tr style="background-color:#E6E6E6">
        <th>شماره سريال</th>
        <th>عنوان</th>
        <th>شرح</th>
         <th>تاريخ انتشار</th>
      </tr>

<xsl:apply-templates select="Articles/Article"/>

</table>

</xsl:template>

<xsl:template match="Article">
   <tr>
       <td><xsl:value-of select="ID"/></td>
       <td><xsl:apply-templates select="Name"/></td>
       <td><xsl:apply-templates select="Description"/></td>
       <td><xsl:value-of select="DatePubish"/></td>
    </tr>

</xsl:template>

</xsl:stylesheet>

استفاده از کنترل <asp:lable> در يک صفحه وب ASP.NET ( فايل XmlTransform1.aspx )

<script runat="server" language="vb">
Sub Page_Load()
      Message.Text = " تبديل يک سندXML با استفاده از کنترلasp:Xml"
End Sub
</script>

<html dir=rtl>
  <head>
     <title>تبديل يک سند</title>
</head>
<body>

 <form runat="server">
    <p align="center" style ="font-weight:bold">
     <asp:label id="Message" runat="server"/>  </p>
    <asp:Xml runat="server"
         DocumentSource="SrcoArticles.xml" 
         TransformSource="SrcoArticles.xsl"/>
 </form>

</body>
</html>

تبديل اسناد DOM با اسنتفاده از XSLT

فريمورک دات نت از اينترفيس استاندارد DOM کنسرسيوم وب حمايت مي نمايد ، بنابراين مي توان فايل هاي XML را به طور کامل و به عنوان يک سند DOM در حافظه مستقر نمود . با استقرار سند DOM در حافظه امکان دستيابي به تمامي ساختار سلسله مراتبي سند XML فراهم مي شود . پس از استقرار يک سند DOM در حافظه و به موازات آن مي توان يک XSLT style sheet را نيز درون سند DOM و به عنوان يک سند تبديل در حافظه مستقر نمود . بدين ترتيب شرايط لازم به منظور اعمال اسکريپت هاي مورد نظر به منظور تبديل يک سند DOM فراهم مي گردد .
مثال : در اين مثال فايل SrcoArticles.Xml به عنوان يک سند DOM و فايل SrcoArticles.Xsl به عنوان يک سند تبديل در حافظه مستقر شده و در ادامه با استفاده از کنترل <asp:xml> و اسکريپت هاي نوشته شده ، عمليات تبديل انجام خواهد شد . به منظور تبديل فوق کنترل <asp:xml> از دو خصلت متفاوت مي نمايد :
  • id.Document  : مرجعي به سند XML DOM 
  • id.Transform  مرجعي به سند تبديل XSLT 

خصلت Document به يک سند DOM ( يک سند XML که درون DOM لود شده است ) اشاره مي نمايد . خصلت Transform به يک سند تبديل اشاره مي نمايد ( يک فايل XSLT که به درون DOM لود شده است ) . برخلاف حالتي که خصلت هاي DocumentSource و TransformSource مستقيما" در کنترل <asp:xml> استفاده و به آنان مراجعه مي گرديد ، از خصلت هاي فوق نمي توان به عنوان خصلت هاي همراه کنترل استفاده نمود . امکان بکارگيري خصلت هاي فوق صرفا" از طريق اسکريپت هاي مورد نظر امکان پذير مي باشد . در چنين مواردي کنترل <asp:xml> مي بايست داراي يک مشخصه خاص ( id ) باشد تا اسکريپت هاي مورد نظر با استفاده از آن قادر به انجام فرآيند تبديل باشد .

< asp:xml id="TransformOut" runat="server"/>

ايجاد يک سند DOM

به منظور استقرار يک فايل XML درون سرويس دهنده DOM در ابتدا مي بايست يک شي XmlDocument ايجاد گردد . در ادامه با استفاده از شي ايجاد شده ، امکان استقرار سند XML در حافظه فراهم مي گردد :

Dim document As XmlDocument
document = New XmlDocument
document.Load(path)

                              يا

Dim document = New XmlDocument()
document.Load(path)

متد Load شي XmlDocument يک فايل XML را به عنوان ورودي گرفته و آن را به صورت يک درخت در حافظه مستقر مي نمايد ( يک نمايش درخت گونه از سند XML در حافظه ) . Path مسير فيزيکي به فايل XML را مشخص مي نمايد . در چنين مواردي مي توان از متد MapPath به منظور تبديل يک آدرس نسبي به مسير کامل فيزيکي نيز استفاده نمود .
XmlDocument يکي از اشياء قدرتمند در ارتباط با فايل هاي XML است که به برخي از ويژگي هاي مهم آن اشاره مي گردد :
• مسئوليت پياد ه سازي اينترفيس استاندارد DOM مربوط به کنسرسيوم وب را برعهده دارد.( متعلق به System.Xml )
• استقرار يک سند XML در حافظه به صورت يک نمايش درختي
• امکان دستيابي به هر گره موجود در سند XML
• ارائه يک روش کاملا" انعطاف پذير به منظور دستيابي به هر گره مورد نياز در سند XML در مقايسه با اشياء XmlTextReader و XmlTextReader که صرفا" امکان دستيابي به صورت Forward only را فراهم مي نمايند .
• خصلت ها و متدهاي متعددي به منظور پردازش اسناد XML مستقر در حافظه را ارائه مي نمايد .
• مهمترين نکته قابل تامل در خصوص اينترفيس DOM ، استقرار تمامي داده XML در حافظه است . بنابراين در صورت بالا بودن حجم سند XML ، حافظه زيادي مصرف مي شود . در مواردي که با محدوديت حافظه مواجه هستيم مي توان از روش هاي مبتني بر Forward-only استفاده نمود .

ايجاد يک سند تبديل

از فرآيندي مشابه آنچه اشاره گريد به منظور استقرار يک XSLT style sheet در حافظه استفاده مي گردد . در ابتدا يک شي XslTransform ايجاد شده و در ادامه اين شي از طريق يک فايل XSLT style sheet در حافظه مستقر مي گردد .

 

Dim document As XslTransform
document = New XslTransform()
document.Load(path)

                        يا

Dim document = New XslTransform()
document.Load(path)

کدهاي لازم به منظور تبديل

پس از استقرار دو سند مورد نظر در حافظه ، از سند XSLT به منظور تبديل سند XML DOM استفاده مي گردد . در چنين مواردي خصلت هاي Transform و Document به کنترل <asp:Xml> نسبت داده شده و در ادامه ماحصل فرآيند تبديل که يک سند XHTML است از طريق کنترل نمايش داده مي شود .

<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>

<SCRIPT runat="server">

Sub Page_Load

   Dim SrcoXSL As New XslTransform()
   Dim SrcoDOM As New XmlDocument()

   SrcoDOM.Load(MapPath(" SrcoArticles.xml "))
   SrcoXSL.Load(MapPath(" SrcoArticles.xsl"))

   TransformOut.Document = SrcoDOM
   TransformOut.Transform =  SrcoXSL

End Sub

</SCRIPT>

<html dir=rtl>
<head>
<title>تبديل يک سند</title>
</head>
<body>

<form runat="server">
<p align="center" style ="font-weight:bold">
<asp:label id="Message" runat="server"/>  </p>
<asp:xml id="TransformOut" runat="server"/>
 </form>
</html >

از System.Xml به منظور ايجاد سند DOM و از System.Xml.Xsl به منظور ايجاد سند تبديل استفاده شده است .

عبارات ديگر تبديل

ترکيبات متفاوتي از خصلت هاي تبديل را مي توان به همراه کنترل <asp:Xml> استفاده نمود . مثلا" مي توان يک سند XML DOM را با استفاده از متد Load مربوط به شي XmlDocument در حافظه مستقر نمود و در ادامه يک فايل XSLT را در ارتباط با آن بکار گرفت . در چنين مواردي فايل XSLT با استفاده از خصلت TransformSource مربوط به کنترل <asp:xml> مشخص شده و سند DOM از طريق اسکريپت مورد نظر به خصلت Document مربوط به کنترل <asp:xml> نسبت داده مي شود .

Dim SrcoDOM As New XmlDocument()
SrcoDOM.Load(MapPath(" SrcoArticles.xml "))
XMLControl.Document =SrcoDOM
 
<asp:xml id="XMLControl" TransformSource=" SrcoArticles.xsl" runat="server"/>

در روشي ديگر، مي توان يک فايل XML را با استفاده از خصلت DocumentSource مربوط به کنترل <asp:xml> مشخص نمود و به موازات آن فايل XSLT را با استفاده از اسکريپت هائي که مقدار مورد نظر را به خصلت Transform نسبت مي دهد ، استفاده نمود .

Dim SrcoDOM As New XmlDocument()
Dim SrcoXSL As New XslTransform()
SrcoXSL.Load(MapPath(" SrcoArticles.xsl"))
XMLControl.Transform = SrcoXSL
 
<asp:xml id="XMLControl" DocumentSource=" SrcoArticles.xml " runat="server"/>

Add Comments
Name:
Email:  
User Comments:
SecurityCode: Captcha ImageChange Image