developer tip

XSLT에서 문자열을 비교할 때 "같지 않음"을 지정하는 방법

copycodes 2020. 12. 4. 19:16
반응형

XSLT에서 문자열을 비교할 때 "같지 않음"을 지정하는 방법 ?


현재 나는 그것이 같지 않은 경우에만 "카운트"를 인쇄하려고하는 다음 코드가있는 xsl이 N/A있습니다. 하지만 "!="작동하지 않는 것 같습니다 .

<xsl:for-each select="Directory/Match">
    <xsl:if test = "Count != N/A">
        <tr>
            <td><xsl:value-of select="@bookName" /></td>
            <td><xsl:value-of select="@AuthorName" /></td>
            <td><xsl:value-of select="Count" /></td>
        </tr>
    </xsl:if>
</xsl:for-each>

그러나 숫자 값과 비교하려고하면 작동합니다.

예:

<xsl:if test = "Occurrances != 0">

누군가 저에게 말해 줄 수 있습니까? 문자열을 비교하고 싶다면 무엇을 사용할 수 있습니까?


Filburt가 말했듯이; 그러나 일반적으로 작성하는 것이 좋습니다

test="not(Count = 'N/A')"

정확히 하나의 Count 요소가 있으면 동일한 의미이지만 Count가 없거나 여러 개이면 의미가 다릅니다.

6 년 후

이 답변은 인기가있는 것 같지만 일부 독자에게는 약간 모호 할 수 있으므로 확장하겠습니다.

XPath의 "="및 "! ="연산자는 두 세트의 값을 비교할 수 있습니다. 일반적으로 A와 B가 값의 집합이면 "="는 A와 B에서 동일한 값 쌍이 있으면 true를 반환하고, "! ="는 같지 않은 쌍이 있으면 true를 반환합니다.

A가 0 개 또는 1 개의 노드를 선택하고 B가 상수 (예 : "NA") 인 일반적인 경우에는 A not(A = "NA")가 없거나 "NA"와 같지 않은 값이있는 경우 true 반환합니다. 반대로 A != "NA"A가 있고 "NA"와 같지 않으면 true를 반환합니다. 일반적으로 "결석"사례를 "같지 않음"으로 처리해야합니다 not(A = "NA"). 이는 적절한 공식 임을 의미합니다 .


문자열 리터럴과 비교하려면 (작은) 따옴표로 묶어야합니다.

<xsl:if test="Count != 'N/A'">

참고 URL : https://stackoverflow.com/questions/10534882/how-do-i-specify-not-equals-to-when-comparing-strings-in-an-xslt-xslif

반응형