XSLT

تبدیل اسناد XML به HTML و قالب‌های دیگر با XSLT

XSLT چیست؟

XSLT مخفف eXtensible Stylesheet Language Transformations است؛ زبانی برای تبدیل اسناد XML به XML دیگر، HTML، متن ساده یا هر قالب دیگری.

با XSLT می‌توانید:

XSLT خودش یک سند XML است! یعنی با همان قوانین سینتکس XML نوشته می‌شود.

XSLT چگونه کار می‌کند؟

XSLT از الگوها (Templates) استفاده می‌کند. هر الگو می‌گوید: «وقتی به این عنصر رسیدی، این‌طور رفتار کن»:

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

    <xsl:template match="/">
        <html>
            <body>
                <h2>کاتالوگ CD</h2>
                <table border="1">
                    <tr>
                        <th>عنوان</th>
                        <th>خواننده</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>

تجزیه کد XSLT

عنصر XSLTکارکرد
<xsl:stylesheet>عنصر ریشه سند XSLT با فضای نام XSL
<xsl:template match="/">الگو: از ریشه سند شروع کن
<xsl:for-each select="...">حلقه: روی هر عنصر مطابق تکرار کن
<xsl:value-of select="...">مقدار عنصر انتخابی را در خروجی بگذار
<xsl:sort select="...">مرتب‌سازی نتایج
<xsl:if test="...">شرط: فقط اگر شرط برقرار بود

اتصال XSLT به سند XML

در سند XML، با دستورالعمل xml-stylesheet فایل XSLT را معرفی می‌کنیم:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cd_catalog.xsl"?>
<CATALOG>
    ...
</CATALOG>

حالا وقتی فایل XML را در مرورگر باز کنید، مرورگر خودش XSLT را اجرا می‌کند و نتیجه HTML را نمایش می‌دهد!

مثال با شرط و مرتب‌سازی

<xsl:for-each select="CATALOG/CD">
    <xsl:sort select="ARTIST"/>
    <xsl:if test="PRICE > 10">
        <tr>
            <td><xsl:value-of select="TITLE"/></td>
        </tr>
    </xsl:if>
</xsl:for-each>

این کد CDها را بر اساس خواننده مرتب می‌کند و فقط آن‌هایی که قیمت بالای ۱۰ دارند نمایش می‌دهد.

دقت کنید در عبارت test="PRICE > 10" از موجودیت > استفاده کردیم چون کاراکتر > در XML معنی خاص دارد!

کجا از XSLT استفاده می‌شود؟

این مبحث بخشی از دوره آموزش کامل XML است.

ابزارهای مرتبط