در صورت پشتیبانی مرورگر شما ، برنامه 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 را نمایش دهد