در این قسمت می خواهیم درباره ی 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>

برنامه 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 پشتیبانی می کنه انگاه :

از متد transformNode() برای اعمال xsl روی xml استفاده می کنه  بدنه body را برای در بر گرفتن استایلهای سند xml اماده می کنه  در صورتیکه مرورگر کاربر از کنترلهای activex پشتیبانی نمی کند انگاه :

شی ای از نوع XSLTProcessor ایجاد کرده و فایل xsl را در ان قرار می دهد
از متد transformToFragment() استفاده می کند برای اعمال کردن سبک های تعریف شده در برنامه xsl جهت نمایش محتوای برنامه xml
بدنه body را که ای دی ان در این مثال example است اماده می کند تا بتواند محتویات سبک بندی شده برنامه xml را نمایش دهد