عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
XML در دات نت : تبديل اسناد XML ( بخش دوم ) |
مديريت وب |
8496 |
4 |
4.2 |
با توجه به جایگاه داده در عصر حاضر و لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و خدمات خود را از طریق سایت www.fabak.ir به مخاطبان محترم عرضه می نماید
 |
XML در دات نت
XML در دات
نت : تبديل
اسناد XML ( بخش
دوم )
دربخش اول
اين مقاله با نحوه تبديل فايل های 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> از
دو خصلت متفاوت می نمايد :
خصلت 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"/>
|