Bisakah Anda menempatkan dua kondisi dalam atribut tes xslt?

Jawaban:

211

Tidak cukup, AND harus huruf kecil.

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

Itu memang harus dibungkus dengan <xsl: pilih> karena ini saat. Dan huruf kecil "dan".

<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>
Aaron Palmer
sumber
6

Dari XML.com :

Seperti xsl: jika petunjuk, xsl: ketika elemen dapat memiliki konten yang lebih rumit antara tag awal dan akhir mereka — misalnya, elemen hasil literal, xsl: elemen elemen, atau bahkan xsl: jika dan xsl: pilih elemen — untuk ditambahkan ke pohon hasil. Ekspresi pengujian mereka juga dapat menggunakan semua trik dan operator yang xsl: jika atribut pengujian elemen dapat digunakan, seperti dan, atau, dan pemanggilan fungsi, untuk membangun ekspresi boolean yang lebih kompleks.

Harper Shelby
sumber
5

Mungkin ini adalah no-brainer untuk xslt-professional, tetapi bagi saya di tingkat pemula / menengah, ini membuat saya bingung. Saya ingin melakukan hal yang persis sama, tetapi saya harus menguji nilai responsetime dari xml bukan angka biasa. Mengikuti utas ini, saya mencoba ini:

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

yang menghasilkan kesalahan. Ini bekerja:

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

Namun, tidak terlalu mengerti mengapa itu tidak berfungsi tanpa angka (). Mungkinkah tanpa angka () nilainya diperlakukan sebagai string dan Anda tidak dapat membandingkan angka dengan string?

Bagaimanapun, harap ini menyelamatkan seseorang dari banyak mencari ...

Ted
sumber