web-dev-qa-db-ja.com

xsltテスト属性に2つの条件を入れることはできますか?

これは、4 <5および1 <2の場合に適していますか?

<xsl:when test="4 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>
120
joe

そうではありませんが、ANDは小文字でなければなりません。

<xsl:when test="4 &lt; 5 and 1 &lt; 2">
<!-- do something -->
</xsl:when>
203
phihag

それは<xsl:choose>にラップされる必要があるのは、それがいつかだからです。そして、「and」を小文字にします。

<xsl:choose>
   <xsl:when test="4 &lt; 5 and 1 &lt; 2" >
   <!-- do something -->
   </xsl:when>
   <xsl:otherwise>
   <!-- do something else -->
   </xsl:otherwise>
</xsl:choose>
33
Aaron Palmer

XML.com から:

Xsl:if命令と同様に、xsl:when要素は、開始タグと終了タグの間でより精巧なコンテンツを持つことができます。たとえば、リテラル結果要素、xsl:element要素、またはxsl:ifおよびxsl:choose要素です。結果ツリー。また、テスト式は、xsl:if要素のテスト属性が使用できるandやor、関数呼び出しなどのすべてのトリックと演算子を使用して、より複雑なブール式を作成できます。

6
Harper Shelby

多分これはxslt-professionalにとって簡単なものかもしれませんが、初心者/中級レベルの私にとっては、これは私を困惑させました。まったく同じことをしたかったのですが、普通の数字ではなくxmlからresponsetime値をテストする必要がありました。このスレッドに続いて、私はこれを試しました:

<xsl:when test="responsetime/@value &gt;= 5000 and responsetime/@value &lt;= 8999"> 

エラーが発生しました。これは動作します:

<xsl:when test="number(responsetime/@value) &gt;= 5000 and number(responsetime/@value) &lt;= 8999">

ただし、number()なしでは機能しない理由を本当に理解しないでください。 number()なしでは値は文字列として扱われ、数字と文字列を比較することはできませんか?

とにかく、これが誰かの検索の多くを救うことを望みます...

5
Ted