اگر (<if>) (XSLT <if>)
در XSLT، «شرط در XSLT» یعنی چاپ خروجی فقط وقتی شرط درست است. عنصر «<xsl:if>» همین کار را انجام می دهد. «عبارت (Expression)» همان تست شرطی است؛ مثل نمره ریاضی بزرگ تر از 10.
عنصر <xsl:if> و نحوه نوشتن test
برای تست شرطی، داخل الگویت یک <xsl:if> بگذار. ویژگی test حاوی عبارت XPath است.
<xsl:if test="price > 10">
<!-- خروجی وقتی شرط درست است -->
<span>Expensive</span>
</xsl:if>
مثال عملی: نمایش فقط آیتم های گران
اینجا فقط CDهایی با قیمت بالای 10 نمایش می شوند. «XPath» زبان مسیر یابی است؛ مثل پوشه بندی.
<?xml version="1.0" encoding="UTF-8"?>
<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>
<th>Price</th>
</tr>
<xsl:for-each select="catalog/cd">
<xsl:if test="price > 10">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
<td><xsl:value-of select="price"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
گام های عملی
- الگوی اصلی با
match="/"بساز. - لیست را با
xsl:for-eachپیمایش کن. xsl:ifرا با عبارت تست اضافه کن.- مقادیر درست را با
xsl:value-ofچاپ کن.
نکته: عبارت test یک XPath است؛ مانند price > 10 یا artist='Bob Dylan'.
هشدار: از کاراکترهای مقایسه ای درست استفاده کن؛ < را به صورت < بنویس.
مسیر ادامه مطالعه
پس از شرط در XSLT، مرتب سازی را در xsl:sort ببین. همچنین از xsl:choose برای چند حالت استفاده کن.
جمع بندی سریع
- <xsl:if> خروجی را شرطی می کند.
- test یک عبارت XPath است.
- درون for-each کاربردی تر است.
- مقایسه گرها را درست escape کن.