دستور choose
<xsl:choose>
به همراه
<xsl:when> و <xsl:otherwise>
برای ایجاد انتخاب تگ با چندین شرط به کار می رود
اگر شما با زبانهای برنامه نویسی مثل vb اشنا باشید می توان گفت که این دستورات مثل
select case , case else می باشد
خود دستور select case در اینجا می شود choose
شما به تعداد حالتهای مورد نظرتان case می گذارید که در اینجا ما به جای Case عبارت when را داریم و به جای case else در اینجا ما otherwise را داریم
اگر با زبان php اشنایی دارید می توان دستورات choose را مثل دستور switch و دستور when را مثل مجموعه case ها و دستور otherwise را مثل دستور default در نظر گرفت
که when ها و otherwise باید درون دستور choose باشند
روش استفاده از این دستور به صورت زیر است
مثال
بیایید خطهای بین for-each را بررسی کنیم
دستورات زیر درون حلقه for-each هستند و مدام تکرار می شوند
ابتدا یک سطر جدید به جدول افزوده می شود
سپس مقدار تگ title بعدی در سلول این سطر قرار می گیرد
دستور شرطی choose اجرا می شود
دستور شرطی choose دارای دستورات زیر است:
دستور when می گوید اگر مقدار تگ price ای که در مسیر تگ titile فعلی است بیشتر از ۱۰ بود انگاه در سطر جاری رنگ زمینه سلول دومی صورتی شود و محتوای تگ artist ای که با تگ titile هم مجموعه است یعنی با هم در یک تگ cd هستند در ان نشان داده شود
در غیر این صورت
فقط مقدار تگ artist در سلول قرار گیرد و رنگ زمینه سلول تغییر نکند
مثال دیگر
در اینجا ما از دو تا دستور when استفاده می کنیم
فقط قسمت choose را بررسی می کنم بقیه موارد قبلا در فصلهای قبلی کاملا توضیح داده شده است
دستور when اول :
می گوید اگر مقدار محتوای تگ price که در مجموعه تگ titile قرار دارد بیشتر از ۱۰ بود انگاه سلول ایجاد شده رنگ زمینه به شماره ff00ff داشته باشد و مقدار محتوای تگ artist که با تگ price ان هم خانواده است در این سلول نشان داده شود
مشخص است که اگر شرط when برقرار نبود ای دستور اجرا نخواهد شد
دستور when دوم
<xsl:when test=”price > 9″>
<td bgcolor=”#cccccc”>
<xsl:value-of select=”artist”/></td>
</xsl:when>
می گوید اگر مقدار محتوای تگ price که در مجموعه تگ titile قرار دارد بیشتر از ۹ بود انگاه سلول ایجاد شده رنگ زمینه به شماره cccccc داشته باشد و مقدار محتوای تگ artist که با تگ price ان هم خانواده است در این سلول نشان داده شود
مشخص است که اگر شرط when برقرار نبود ای دستور اجرا نخواهد شد
در غیر این صورت یعنی اگر هیچکدام از when ها درست نبودند دستورات دورن otherwise اجرا می شود
<xsl:otherwise>
<td><xsl:value-of select=”artist”/></td>
</xsl:otherwise>
و سلول بدون اینکه زمینه اش رنگی شود مقدار محتوای تگ artist را نمایش می دهد