[xslt] xslt 테스트 속성에 두 가지 조건을 넣을 수 있습니까?

When 4 <5 and 1 <2입니까?

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



답변

AND는 소문자 여야합니다.

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


답변

<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>


답변

에서 XML.com :

xsl : if 명령어와 마찬가지로 xsl : when 요소는 시작 태그와 끝 태그 사이에보다 정교한 내용 (예 : 리터럴 결과 요소, xsl : element 요소 또는 xsl : if 및 xsl : choose 요소)을 추가 할 수 있습니다. 결과 트리 또한 테스트 표현식은 xsl : if 요소의 테스트 속성이 and 및 / 또는 함수 호출과 같이 복잡한 부울 표현식을 빌드하는 데 사용할 수있는 모든 트릭과 연산자를 사용할 수 있습니다.


답변

어쩌면 이것은 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 ()가 없으면 값이 문자열로 취급되며 숫자를 문자열과 비교할 수 없습니까?

어쨌든, 이것이 누군가를 많이 검색하지 않기를 바랍니다.


답변