คุณสามารถใส่เงื่อนไขสองเงื่อนไขในแอตทริบิวต์การทดสอบ xslt ได้หรือไม่?


คำตอบ:


211

ไม่มาก AND ต้องเป็นตัวพิมพ์เล็ก

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

33

จะต้องห่อด้วย <xsl: choose> เนื่องจากเป็นเวลา และตัวพิมพ์เล็ก "และ"

<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: เมื่อองค์ประกอบสามารถมีเนื้อหาที่ซับซ้อนมากขึ้นระหว่างแท็กเริ่มต้นและแท็กสิ้นสุดตัวอย่างเช่นองค์ประกอบผลลัพธ์ตามตัวอักษรองค์ประกอบ xsl: องค์ประกอบหรือแม้แต่ xsl: if และ xsl: เลือกองค์ประกอบเพื่อเพิ่มลงใน ต้นไม้ผลลัพธ์ นิพจน์ทดสอบของพวกเขายังสามารถใช้กลเม็ดและตัวดำเนินการทั้งหมดที่แอตทริบิวต์การทดสอบของ xsl: if ขององค์ประกอบสามารถใช้ได้เช่นและหรือและการเรียกฟังก์ชันเพื่อสร้างนิพจน์บูลีนที่ซับซ้อนมากขึ้น


5

บางทีนี่อาจไม่ใช่เกมง่ายๆสำหรับ xslt-professional แต่สำหรับฉันในระดับเริ่มต้น / ระดับกลางสิ่งนี้ทำให้ฉันงงงวย ฉันต้องการทำสิ่งเดียวกันทุกประการ แต่ฉันต้องทดสอบค่า responsetime จาก 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 () เป็นไปได้ไหมว่าหากไม่มีตัวเลข () ค่าจะถือว่าเป็นสตริงและคุณไม่สามารถเปรียบเทียบตัวเลขกับสตริงได้?

อย่างไรก็ตามหวังว่านี่จะช่วยใครบางคนในการค้นหาได้มาก ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.