for-each (<for-each>) (XSLT <for-each>)
عنصر «for-each» در XSLT برای تکرار است. «تکرار (Loop)» یعنی یک کار را روی چند مورد انجام بدهیم. «XPath» زبانِ آدرس دهی در XML است؛ مثل آدرس کلاس و صندلی.
عنصر <xsl:for-each> و تکرار روی گره ها
با <xsl:for-each select="..."> روی مجموعه ای از عناصر می چرخیم. مقدار select یک عبارت 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>
</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>
فیلتر کردن خروجی با شرط در XPath
می توانیم تنها برخی رکوردها را تکرار کنیم. کافی است شرط را داخل براکت به select اضافه کنیم.
<?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>
</tr>
<xsl:for-each select="catalog/cd[artist='Bob Dylan']">
<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>
گام های سریع ساخت لیست
- الگو با
match="/"بساز. - جدول خروجی را آماده کن.
- با
for-eachروی رکوردها تکرار کن. - با
value-ofسلول ها را پر کن.
نکته: عملگرهای مجاز در فیلتر: = ، != ، < ، > هستند.
هشدار: اگر مسیر XPath اشتباه باشد، حلقه خالی اجرا می شود.
مسیر ادامه: value-of و sort
برای چاپ مقدار هر گره به xsl:value-of رجوع کن. همچنین برای مرتب سازی خروجی، صفحه xsl:sort را ببین.
جمع بندی سریع
- xsl:for-each یعنی تکرار روی مجموعه.
- select مسیر XPath را تعیین می کند.
- می توان شرط فیلتر اضافه کرد.
- value-of سلول ها را پر می کند.
- برای مرتب سازی از sort بهره ببر.