비교

XPath에서 두 개체를 비교하려면 일치 여부를 확인할 경우 = 부호를 사용하고 불일치 여부를 확인할 경우 != 부호를 사용합니다.

비교 연산을 수행하려면 정확히 피연산자 두 개를 제공해야 합니다.그러면 각 피연산자를 계산하여 비교한 다음 형식이 다른 경우 같은 형식이 되도록 변환합니다.이 작업은 아래의 "비교 우선 순위"에 설명된 프로세스에 따라 수행됩니다.

모든 요소와 특성은 문자열이지만 숫자 비교를 하는 경우 자동으로 정수 값으로 캐스팅됩니다.다음 표에서와 같이 비교 연산을 실행하는 동안 리터럴 숫자 값은 long 또는 double 형식으로 캐스팅됩니다.

< 및 기타 이진 비교 연산자에 대한 자세한 내용은 아래의 "이진 비교 연산자"를 참조하십시오.

리터럴 형식

비교

예제

String

text(lvalue) op text(rvalue)

a < GGG

Integer

(long) lvalue op (long) rvalue

a < 3

Real

(double) lvalue op (double) rvalue

a < 3.1

식에서 문자열 구분 기호로 작은따옴표 또는 큰따옴표를 사용할 수 있습니다.그러면 스크립트 언어 내에서 더욱 쉽게 패턴을 생성하고 전달할 수 있습니다.

XPath를 사용하여 비교를 수행하는 방법에 대해서는 www.w3.org/TR/xpath에서 XPath(XML Path Language) Version 1.0(W3C Recommendation 16 November 1999)의 3.4단원("Booleans")을 참조하십시오.

예제

참조 항목

author[last-name = "Bob"]

값이 Bob인 <last-name> 요소가 하나 이상 포함된 모든 <author> 요소

author[last-name[1] = "Bob"]

첫 번째 <last-name> 자식 요소의 값이 Bob인 모든 <author> 요소

author/degree[@from != "Harvard"]

from 특성이 "Harvard"가 아닌 <degree> 요소가 포함된 모든 <author> 요소

author[last-name = /editor/last-name]

루트 요소 아래의 <editor> 내에 있는 <last-name> 요소와 같은 <last-name> 요소가 포함된 모든 <author> 요소

author[.= "Matthew Bob"]

문자열 값이 Matthew Bob인 모든 <author> 요소

비교 우선 순위

데이터 형식에 대해 비교할 때 다음 우선 순위 규칙을 따릅니다.

  • 피연산자 하나 이상이 부울인 경우 먼저 각 피연산자가 부울로 변환됩니다.

  • 그렇지 않을 경우 피연산자 하나 이상이 숫자이면 먼저 각 피연산자가 숫자로 변환됩니다.

  • 그렇지 않을 경우 피연산자 하나 이상이 날짜이면 먼저 각 피연산자가 날짜로 변환됩니다.

  • 그렇지 않을 경우 먼저 두 피연산자가 문자열로 변환됩니다.

이진 비교 연산자

이진 비교 연산자는 숫자를 비교한 후 부울 결과를 반환합니다.보다 작음, 보다 작거나 같음, 보다 큼, 보다 크거나 같음에 대해 각각 &lt;, &lt;=, &gt; 및 &gt;= 연산자가 사용됩니다.식에서 문자열 구분 기호로 작은따옴표 또는 큰따옴표를 사용할 수 있습니다.그러면 스크립트 언어 내에서 더욱 쉽게 패턴을 생성하고 전달할 수 있습니다.

이러한 비교 연산자는 숫자와만 사용할 수 있습니다.같음 여부를 판별하기 위해 문자열을 비교할 수 있지만 정렬 순서에서 어떤 문자열이 앞에 위치하는지 확인하기 위해 문자열을 비교하려면 Microsoft XPath 확장 함수를 사용해야 합니다.

예제

참조 항목

author[last-name = "Bob" and price &gt; 50]

값이 Bob인 <last-name> 요소와 값이 50보다 큰 <price> 요소가 포함된 모든 <author> 요소

degree[@from != "Harvard"]

from 특성이 "Harvard"가 아닌 모든 <degree> 요소

book[position() &lt;= 3]

XML 파일에서 처음 세 <book> 요소(1, 2, 3)

예제

XML 파일(test.xml)

<?xml version="1.0"?>
<test>

    <x a="1">
      <x a="2" b="B">
        <x>
          <y>y31</y>
          <y>y32</y>
        </x>
      </x>
    </x>

    <x a="2">
      <y>y2</y>
    </x>

    <x a="3">
      <y>y3</y>
    </x>

</test>

XSLT 파일(test.xsl)

다음 XSLT 스타일시트에서는 문서 순서에서 해당 형제 중 첫 번째인 <x> 요소를 모두 선택합니다.

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>

<!-- Suppress text nodes not covered in subsequent template rule. -->
<xsl:template match="text()"/>

<xsl:template match="*">
   <xsl:element name="{name()}">
      <xsl:apply-templates select="*|@*"/>
      <xsl:if test="text()">
         <xsl:value-of select="."/>
      </xsl:if>
   </xsl:element>
</xsl:template>

<xsl:template match="@*">
   <xsl:attribute name="{name()}">
      <xsl:value-of select="."/>
   </xsl:attribute>
</xsl:template>

<xsl:template match="/test">
  <xsl:apply-templates select="//x[position() = 1 ] "/>
</xsl:template>

</xsl:stylesheet>

서식이 지정된 출력

위의 XML 파일에 변환을 적용하면 다음 결과가 나타납니다.

<x a="1">
  <x a="2" b="B">
     <x>
        <y>y31</y>
        <y>y32</y>
     </x>
   </x>
</x>
<x a="2" b="B">
   <x>
      <y>y31</y>
      <y>y32</y>
   </x>
</x>
<x>
   <y>y31</y>
   <y>y32</y>
</x>

참고 항목

참조

XPath 예제

개념

XPath 구문에 대한 샘플 XML 파일(inventory.xml)