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

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


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

در بخش اول اين مقاله با نحوه تبديل فايل هاي XML با استفاده از فايل هاي XSLT  آشنا شديم .در بخش دوم  به بررسي نحوه تبديل اسناد DOM با استفاده از XSLT خواهيم پرداخت .

تبديل اسناد 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