programing

부울 값을 만드는 방법은?

cafebook 2023. 10. 5. 23:32
반응형

부울 값을 만드는 방법은?

저는 XSLT를 완전히 처음 해보는데, 아래 코드로 어디가 잘못되었는지 알 수가 없습니다.

<xsl:variable name="var" select="boolean('false')"/>

<xsl:if test="$var'">variable is true</xsl:if>

거짓일 때는 언제나 참으로 되돌아갑니다. 왜죠?

$var 변수의 값은 다음에 정의됩니다.

   <xsl:variable name="var" select="boolean('false')"/>

   true()

왜냐하면 XPath에서"false" 일반적인 문자열입니다. 이와 반대됩니다.false(), 어느 쪽이 건설자인가요?boolean가치false()

XPath의 부울 값은 다음과 같습니다(구성된 값임에 유의하십시오!).

true() 그리고

값을 부울(boolean)로 변환하는 세부 정보는 XPath Spec.에 나와 있습니다.

"부울 함수는 다음과 같이 인수를 부울로 변환합니다.

  • 숫자가 양수 또는 음수가 아닌 경우에만 참입니다. 또는 NaN이 아닌 경우에만 참입니다.

  • 노드 집합은 비어 있지 않은 경우에만 참입니다.

  • 문자열의 길이가 0이 아닌 경우에만 참입니다.

  • 4가지 기본 유형 이외의 유형의 개체는 해당 유형에 종속되는 방식으로 부울로 변환됩니다."

당신의 경우 문자열 "false"는 숫자 0이 아니고 양의 길이를 가지므로 위의 세 번째 총알의 규칙이 적용되어 양보합니다.true().

따라서 XSLT 1.0에서 변수를 정의하려면 다음과 같이 정의를 작성해야 합니다.

   <xsl:variable name="vMyVar" select="false()"/>

이 내용을 정확히 기억하지 못하는 경우 언제든지 다음과 같이 쓸 수 있습니다.

   <xsl:variable name="vMyVar" select="1 = 0"/>

(specify할 때 다음과 같이 평가할 수 있습니다.false()XSLT 프로세서가 대신 작업을 수행합니다.

XSLT 2.0에서는 항상 변수의 유형을 명시적으로 지정하는 것이 좋습니다.

   <xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>

사용 중인 부울() 함수가 제대로 작동하고 있습니다.명시적 true 및 false 값을 사용하려면 다음 함수를 사용해야 합니다.

<xsl:variable name="var_false" select="false()"/>
<xsl:variable name="var_true" select="true()"/>

참고로, MSDN 문서에 따라 부울()은 다음을 반환합니다.

  • 인수가 음수 또는 양수이면 부울 값 true로 변환됩니다.
  • 인수가 0이거나 NaN 값이면 false로 변환됩니다.
  • 인수가 비어 있지 않은 노드 집합이면 true로 변환됩니다.빈 노드 집합은 false로 변환됩니다.
  • 인수가 비어 있지 않은 문자열이면 true로 변환됩니다.빈 문자열은 false로 변환됩니다.
  • 인수가 4가지 기본 유형이 아닌 다른 유형의 개체일 경우 해당 유형에 종속되는 방식으로 부울로 변환됩니다.

이 단계에서는 좀 늦었을지 모르지만 부엉이를 다루는 것은 노력할 가치가 없습니다.DB에서 돌아오는 부울(필수)을 어떻게 처리했는지는 다음과 같습니다.

<xsl:variable name="vTrue" select="true()"/>                     
    <xsl:choose>
      <xsl:when test="string(Mandatory) = string($vTrue)">
        <xsl:text>Mandatory</xsl:text>
      </xsl:when>
      <xsl:otherwise>           
      </xsl:otherwise>
    </xsl:choose>

이것이 누군가에게 도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/346226/how-to-create-a-boolean-value

반응형