سوال بسیار مهم :
چگونه می توان محتویات سند xml را با استفاده از xslt درون سند xhtml استفاده کرد ؟ جزئیات مثال زیر در فصلهای بعدی توضیح داده خواهد شد
اعلان دستورات xsl
برای اینکه در برنامه بگوئید دستورات نوشته شده از نوع xsl هستند باید این دستورات را دورن یکی از تگ های زیر قرار دهید
<xsl:stylesheet>
یا
<xsl:transform>
اما با توجه به استانداردw3 باید یکی از این دو خط زیر را هم در ابتدای سند قبل از تگ html اضافه نمائیم
<xsl:stylesheet version=”1.0″
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
یا
<xsl:transform version=”1.0″
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
آشنایی با کار توسط مثال
گام اول
فرض کنید می خواهیم محتویات سند xml زیر را که نام ان cdcatalog.xml است در سند xhtml استفاده کنیم
سند 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>
در برنامه بالا چه چیزهایی وجود دارد ؟
شاخه یا root با نام : catalog درون شاخه یا root تگ های دیگر قرار دارند درون شاخه تگ بزرگ دیگری که شامل تگ های فرزند است قرار دارد و نام ا ن cd است درون تگ cd تگ های فرزند به نام های title , artist , country , company , price,year قرار دارندو دورن هر یک از این تگ های فرزند محتویات انها قرار دارد
با کلیک روی علامت + یا – کنار هر عنصر می توانید محتویات انرا جمع کرده یا نمایش دهید
در صورتیکه نمی خواهید علامت های + و – را ببینید
در جائی از صفحه کلیک راست نموده یکی از گزینه های زیر را انتخاب کنید :
View Page Source” یا “View Source
روش مشاهده فایل xml در مرورگر netscape 6 :
فایل xml را اجرا کنید
در جایی از صفحه ا ن کلیک راست کنید
گزینه View Page Source را انتخاب کنید تا تگ ها را رنگی ببینید
بعد از اجرای فایل xml در جایی از صفحه ان کلیک راست کرده گزینه Frame” / “View Source را انتخاب نمائید تا محتویات xml را بصورت طرح متنی ببینید
گام دوم
نوشتن برنامه xsl
درون یک سند xsl با استفاده از الگوهای مسیر یابی تگ ها که در xpath آموختید به محتویات تگ های سند xml دست خواهیم یافت این برنامه را از نوع xsl ایجاد می کنیم به نام cdcatalog.xsl
<?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>Title</th>
<th>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 استفاده می کنیم
خط دوم داره می گه که از دستورات زبان xslt هم می خواهیم استفاده کنیم
خط سوم داره می گه دستورات xslt و کدهای دیگر html باید درون تگ خط سوم نوشته بشن
خط ۴و۵و۶ که کاملا واضحه
خط ۷ جدول با حاشیه با ضخامت ۱ پیکسل ایجاد می کنه
خط ۸ و ۹و ۱۰ و ۱۱ مربوط به ایجاد یک سطر با دو ستون هست که دورن انها عبارتهای title , artist نوشته شده
خط ۱۲ یعنی
<xsl:for-each select=”catalog/cd”>
که در فصلهای بعدی مفصلا درباره اون حرف می زنیم داره می گه برای تمام تگ هایی که اسمشونcd می باشند و این تگ های Cd درون تگ catalog هستند کارهای زیر را انجام بده
همونطور که در برنامه مشاهده می کنین خطهای ۱۳و۱۴و۱۵و۱۶ بین این تگ و تگ بسته اش قرار دارند پس یعنی برای هر تگ cd که درون تگ catalog می باشد یک سطر با دو ستون ایجاد کنه
خط ۱۳
یک سطر جدیددر جدول ایجاد می کنه
خط ۱۴
یک ستون در سطر جدید ایجاد می کنه که محتویاتش را با استفاده از دستورات xslt بدست می اره و محتویاتش ان چیزی است که درون تگ title قرار داره
خط ۱۵
یک ستون در سطر جدید ایجاد می کنه که محتویاتش را با استفاده از دستورات xslt بدست می اره و محتویاتش ان چیزی است که درون تگ artist قرار داره
خط ۱۶
اخر سطر جدید
خط ۱۷
انتهای حلقه for-each
خطهای ۱۸ به بعد هم که کاملا مشخصه
اما همانطور که از اجرای برنامه xsl بالا مشاهده کردید نتیجه کار یک جدول واقعی نیست بلکه شما همان دستورات بالا را بصورت رنگی در خروجی می بینید .زیرا ما هنوز در برنامه xml خودمان به برنامه xsl پیوند بر قرار نکرده ایم تا اطلاعات سند xml را زیبا تر نشان دهد
گام سوم
کار دیگری که باید انجام دهیم این است که در ابتدای سند xml اعلام کنیم که کدام برنامه xsl کار انتقال این سند را انجام خواهد داد
مثال زیر به خوبی روش کار را نشان می دهد
<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<?xml-stylesheet type=”text/xsl” href=”cdcatalog.xsl”?>
<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>