Các choose
phép bạn kiểm tra cho nhiều điều kiện và chỉ áp dụng khi một phù hợp (hoặc một trường hợp mặc định). Với if
bạn cũng có thể kiểm tra, nhưng chúng được kiểm tra độc lập và mỗi trường hợp phù hợp sẽ có đầu ra.
Thêm nhiều chi tiết (xin lỗi đã phải vội vã tắt)
choose
phép bạn kiểm tra cho nhiều trường hợp và chỉ tạo ra trong trường hợp một trong những trận đấu điều kiện, hoặc tạo ra một số lượng mặc định. ví dụ:
<xsl:choose>
<xsl:when test='@foo=1'><!-- do something when @foo is 1--></xsl:when>
<xsl:when test='@foo=2'><!-- do something when @foo is 2--></xsl:when>
<xsl:when test='@foo=3'><!-- do something when @foo is 3--></xsl:when>
<xsl:otherwise><!-- this is the default case, when @foo is neither 1, 2 or 3--></xsl:otherwise>
</xsl:choose>
Như bạn thấy một của "chi nhánh" sẽ chân tùy thuộc vào giá trị của @foo
.
Với if
, đó là một thử nghiệm duy nhất và tạo ra các đầu ra trên các kết quả của bài kiểm tra đó:
<xsl:if test='@foo=1'><!-- do this if @foo is 1--></xsl:if>
<xsl:if test='@foo=2'><!-- do this if @foo is 2--></xsl:if>
<xsl:if test='@foo=3'><!-- do this if @foo is 3--></xsl:if>
Các biến chứng ở đây là trường hợp thất bại - những gì sẽ xảy ra khi @foo
không phải là 1,2 hoặc 3? Trường hợp bị thiếu này là những gì được xử lý gọn gàng bởi choose
- tức là khả năng có hành động mặc định.
XSL cũng thiếu "khác" mà bạn tìm thấy trong hầu hết các ngôn ngữ khác, cho phép bạn để cung cấp một hành động thay thế các thử nghiệm if
nên thất bại - và một choose
với một đơn when
và otherwise
cho phép bạn làm được việc này, nhưng trong ví dụ của tôi ở trên, đó sẽ là khủng khiếp (để chứng minh tại sao bạn không làm điều này ..)
<xsl:choose>
<xsl:when test='@foo=1'><!-- do something when @foo is 1--></xsl:when>
<xsl:otherwise> <!-- else -->
<xsl:choose>
<xsl:when test='@foo=2'><!-- do something when @foo is 2--></xsl:when>
<xsl:otherwise> <!-- else -->
<xsl:choose>
<xsl:when test='@foo=2'><!-- do something when @foo is 2--></xsl:when>
<xsl:otherwise><!-- this is the case, when @foo is neither 1, 2 or 3--></xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
Cần giải thích thêm. –