xsltテスト属性に2つの条件を指定できますか?


回答:


211

不正解です。ANDは小文字にする必要があります。

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

33

それは時なので、<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>

6

XML.comから:

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


5

たぶん、これはxslt-professionalにとって非常に簡単なことですが、初心者/中級レベルの私にとって、これは私を困惑させました。まったく同じことをしたかったのですが、単純な数値ではなくxmlからの応答時間値をテストする必要がありました。このスレッドに従って、私はこれを試しました:

<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()がないと値が文字列として扱われ、数値を文字列と比較できないのでしょうか?

とにかく、これが誰かの検索の多くを節約することを願っています...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.