<xsl:if> با استفاده از ویژگی  test بررسی می کند ایا شرط مورد نظر برقرار است یا نه از این دستور برای نمایش  تگ هایی که در الگو مشخص شده اند و مقدار تگ خاصی که خواهر یا برادر انهاست و مقدار مورد نظر ما را دارد  استفاده می شود  محل نوشتن این دستور دورن for-each است
به مثال زیر توجه نمائید

<?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”>
<xsl:if test=”price &gt; 10″>
<tr>
<td><xsl:value-of select=”title”/></td>
<td><xsl:value-of select=”artist”/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

همانطور که خروجی را دیدید  برنامه خودش در خروجی قرار می گیرد زیاد نگران نشوید برای حل این مشکل  قسمت گام سوم در فصل xslt transform را ببینید  برنامه بالا فقط محتوای تگ های titile , artist را نشان می دهد که محتوای تگ های price موجود در مسیر انها یعنی دورن تگ cd پدر شان بیشتر از ۱۰ باشد برنامه xml که این مثال بر پایه ان کار می کند رادر قسمت گام اول  صفحه xslt transform ببینید.

ببینید وقتی می گویم تگ های titile , price , artist  هم خانواده یعنی چی ؟

فرض کنید دستورات زیر قسمتی از یک برنامه کامل xml باشد

<cd>
<title>1999 Grammy Nominees</title>
<artist>Many</artist>
<country>USA</country>
<company>Grammy</company>
<price>10.20</price>
<year>1999</year>
</cd>
<cd>
<title>For the good times</title>
<artist>Kenny Rogers</artist>
<country>UK</country>
<company>Mucik Master</company>
<price>8.70</price>
<year>1995</year>
</cd>

 در این جا ما دو مجموعه تگ cd داریم هر تگ cd می شود پدر برای تگ های دورن خود  پس تگ های title , artist , price , year در هر تگ cd می شوند هم خانواده یا برادر و خواهر هر مجموعه هیچ ربطی به مجموعه دیگر ندارد