xslt روی کامپیوتر کاربر

در صورت پشتیبانی مرورگر شما ، برنامه xslt می تواند اسناد xml را به برنامه xhtml ارسال نماید   در فصلهای قبلی اموختید چطور xslt می تواند اطلاعات تگ های xml را در سندهای xhtml بکار ببرد   ما این کار را به این صورت انجام دادیم که در برنامه xml پیوندی با برنامه xslt ایجاد نمودیم   اگر چه این کار خوبی بود اما در مرورگرهایی که از xslt پشتیبانی نمی کنند قابل اجرا نیست   بهترین روش استفاده از javascript برای انتقال اطلاعات از xml به xhtml است این یکی از زیبایی های xslt است   به مثالی که در فصلهای قبلی داشتیم توجه کنید برنامه catalog.xml  :

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
</catalog>

مشاهده برنامه کامل  

 و برنامه xsl که در واقع سبک و استایلی برای نمایش داده های برنامه xml است

یعنی برنامه زیر :

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th align="left">Title</th>
      <th align="left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title" /></td>
      <td><xsl:value-of select="artist" /></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

   مشاهده اجرای برنامه xsl مثال   

 برنامه xml بالا هنوز پیوندی با برنامه xsl بالا ندارد

یعنی اینکه ما می توانیم هر نوع  برنامه xsl ای بنویسیم تا با استایل های تعریف شده در ان داده های برنامه xml نمایش داده شود

 

 انتقال سند xml به xhtml در مرورگر

 

 برنامه ای که برای انتقال xml به xhtml  در کامپیوتر کاربر نوشته شده بصور ت زیر است

 

 

<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.ActiveXObject)
  {
  xhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0");
  }
else
  {
  xhttp=new XMLHttpRequest();
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml=loadXMLDoc("cdcatalog.xml");
xsl=loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>

  مشاهده و اجرای برنامه کامل  توضیح مثال بالا :

 تابع loadXMLDoc()

از این تابع برای لود و اجرا کردن فایلهای با پشوند xml , xsl استفاده می شود

این تابع بررسی می کند که مرورگر کاربر چیست بر طبق ان فایل هارا لود می کند

 

 

 تابع displayResult()

این تابع باعث می شود که محتویات فایل xml بر اساس انچه که در فایل xslt مشخص شده نمایش داده شود

 

   

 در کل این میشه که :

برنامه مثال بالا کارهای زیر را انجام می دهد :

  • لود کردن فایلهای xml , xslt
  • تشخیص نوع مرورگر کاربر
  • در صورتیکه مرورگر کاربر از activx پشتیبانی می کنه انگاه :
  1. از متد transformNode() برای اعمال xsl روی xml استفاده می کنه
  2. بدنه body را برای در بر گرفتن استایلهای سند xml اماده می کنه
  • در صورتیکه مرورگر کاربر از کنترلهای activex پشتیبانی نمی کند انگاه :
  1. شی ای از نوع XSLTProcessor ایجاد کرده و فایل xsl را در ان قرار می دهد
  2. از متد transformToFragment() استفاده می کند برای اعمال کردن سبک های تعریف شده در برنامه xsl جهت نمایش محتوای برنامه xml
  3. بدنه body را که ای دی ان در این مثال example است اماده می کند تا بتواند محتویات سبک بندی شده برنامه xml را نمایش دهد

                                                                                                                             

/ 0 نظر / 39 بازدید