در سمت سرور (XSLT on the Server)
اینجا درباره «XSLT سمت سرور» حرف می زنیم. XSLT یعنی تبدیل XML به HTML. سرور (Server) یعنی کامپیوتری که صفحه را می سازد. هدف این است که خروجی HTML برای همه مرورگرها آماده برود.
راه حل کراس براوزر با XSLT سمت سرور
در بعضی مرورگرها مفسر XML نیست. بنابراین، تبدیل در مرورگر مشکل می شود. پس بهتر است تبدیل را روی سرور انجام دهیم. سپس خروجی XHTML را به کاربر بفرستیم.
نکته: این کار سازگاری را زیاد می کند. چون همه فقط HTML تحویل می گیرند.
فایل های XML و XSLT
نمونه ساده کاتالوگ CD را ببین. XML ساختار داده را نگه می دارد.
<?xml version="1.0" encoding="UTF-8"?>
<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>
و این هم XSLT. این قالب مشخص می کند XML چطور به جدول HTML تبدیل شود.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-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>
</xsl:template>
</xsl:stylesheet>
PHP: تبدیل XML به XHTML روی سرور
این کد در PHP کار را انجام می دهد. DOMDocument فایل ها را می خواند. XSLTProcessor تبدیل را اجرا می کند.
<?php
// Load XML file
$xml = new DOMDocument;
$xml->load('cdcatalog.xml');
// Load XSL file
$xsl = new DOMDocument;
$xsl->load('cdcatalog.xsl');
// Configure the transformer
$proc = new XSLTProcessor;
// Attach the xsl rules
$proc->importStyleSheet($xsl);
echo $proc->transformToXML($xml);
?>
ASP: تبدیل XML به XHTML روی سرور
در ASP کلاسیک، از MSXML استفاده می کنیم. خروجی HTML مستقیماً نوشته می شود.
<%
' Load XML file
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
' Load XSL file
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
' Transform file
Response.Write(xml.transformNode(xsl))
%>
گام های عملی
- فایل های
cdcatalog.xmlوcdcatalog.xslرا کنار اسکریپت بگذار. - روی سرور PHP یا ASP فایل را اجرا کن.
- اگر خطا دیدی، مسیر فایل ها را بررسی کن.
- در نهایت باید جدول CDها را به HTML ببینی.
برای سمت کلاینت این را ببین: XSLT سمت کلاینت. برای ویرایش XML با XSLT ادامه بده: ویرایش XML با XSLT.
جمع بندی سریع
- XSLT سمت سرور خروجی سازگار می دهد.
- XML و XSLT روی سرور ترکیب می شوند.
- کاربر فقط HTML می بیند.
- PHP و ASP هر دو پشتیبانی دارند.