다음을 통해 공유


위치 경로에서 선택 조건자 지정(SQLXML 4.0)

적용 대상: SQL ServerAzure SQL Database

조건자는 축과 관련하여 노드 집합을 필터링합니다(SELECT 문의 WHERE 절과 유사). 조건자는 대괄호 사이에 지정됩니다. 노드 집합의 각 노드를 필터링하기 위해 해당 노드가 컨텍스트 노드로 사용되고 노드 집합의 노드 수가 컨텍스트 크기로 사용되어 조건자 식이 평가됩니다. 조건자 식이 해당 노드에 대해 TRUE로 평가되면 노드가 결과 노드 집합에 포함됩니다.

XPath는 위치 기반 필터링도 허용합니다. 숫자를 계산하는 조건자 식은 해당 서수 노드를 선택합니다. 예를 들어 위치 경로 Customer[3] 는 세 번째 고객을 반환합니다. 이러한 숫자 조건자는 지원되지 않습니다. 부울 결과를 반환하는 조건자 식만 지원됩니다.

참고 항목

이 XPath 구현의 제한 사항과 XPath 구현과 W3C 사양 간의 차이점에 대한 자세한 내용은 XPath 쿼리 사용 소개(SQLXML 4.0)를 참조하세요.

선택 조건자: 예제 1

다음 XPath 식(위치 경로)은 현재 컨텍스트 노드에서 ALFKI 값을 가진 CustomerID 특성이 있는 모든< Customer> 요소 자식을 선택합니다.

/child::Customer[attribute::CustomerID="ALFKI"]  

이 XPath 쿼리에서 childattribute는 축 이름이고, Customer는 노드 테스트(요소가 축의 주 노드 형식 child 이므로 요소 노드><>인 경우 Customer TRUE)입니다.< attribute::CustomerID="ALFKI" 는 조건자입니다. 조건자 attribute 에서 축이며 CustomerID 노드 테스트입니다(특성이 특성 축의 주 노드 형식이므로 CustomerID가 컨텍스트 노드<>의 특성인 경우 TRUE).

축약형 구문을 사용하여 XPath 쿼리를 다음과 같이 지정할 수도 있습니다.

/Customer[@CustomerID="ALFKI"]  

선택 조건자: 예제 2

다음 XPath 식(위치 경로)은 현재 컨텍스트 노드에서 SalesOrderID 특성이 값 1인 Order> 손자를 모두 <선택합니다.

/child::Customer/child::Order[attribute::SalesOrderID="1"]  

이 XPath 식에서 childattribute는 축 이름입니다. Customer, Order노드 SalesOrderID 테스트입니다. attribute::OrderID="1" 는 조건자입니다.

축약형 구문을 사용하여 XPath 쿼리를 다음과 같이 지정할 수도 있습니다.

/Customer/Order[@SalesOrderID="1"]  

선택 조건자: 예제 3

다음 XPath 식(위치 경로)은 현재 컨텍스트 노드에서 하나 이상의 <ContactName 자식이 있는 모든 <Customer> 자식을> 선택합니다.

child::Customer[child::ContactName]  

이 예제에서는 ContactName이 주석이 <추가된 XSD 스키마에서< 요소 중심 매핑이라고 하는 XML 문서에서 Customer> 요소의 자식 요소라고 가정합니다.>

이 XPath 식 child 에서 축 이름입니다. Customer는 노드 테스트입니다(요소가 축의< 주 노드 형식 child 이기 때문에 <요소>> 노드인 경우 Customer TRUE). child::ContactName 는 조건자입니다. 조건자 child 에서 축이며 ContactName 노드 테스트(요소> 노드인 경우 ContactName TRUE)입니다<.

이 식은 ContactName 요소 자식이 있는< 컨텍스트 노드의 Customer> 요소 자식만< 반환합니다.>

축약형 구문을 사용하여 XPath 쿼리를 다음과 같이 지정할 수도 있습니다.

Customer[ContactName]  

선택 조건자: 예제 4

다음 XPath 식은 ContactName 요소 자식이 없는< 컨텍스트 노드의 Customer> 요소 자식을> 선택합니다.<

child::Customer[not(child::ContactName)]  

이 예제에서는 ContactName>이< XML 문서에서 Customer> 요소의 <자식 요소이며 데이터베이스에 ContactName 필드가 필요하지 않다고 가정합니다.

이 예제에서는 child 축입니다. Customer는 노드 테스트(요소> 노드인 <경우 Customer TRUE)입니다. not(child::ContactName) 는 조건자입니다. 조건자 child 에서 축이며 ContactName 노드 테스트(요소> 노드인 경우 ContactName TRUE)입니다<.

축약형 구문을 사용하여 XPath 쿼리를 다음과 같이 지정할 수도 있습니다.

Customer[not(ContactName)]  

선택 조건자: 예제 5

다음 XPath 식은 현재 컨텍스트 노드에서 CustomerID 특성이 있는 모든< Customer> 자식을 선택합니다.

child::Customer[attribute::CustomerID]  

이 예제 child 에서는 축이며 Customer 노드 테스트입니다(요소> 노드인 <경우 Customer TRUE). attribute::CustomerID 는 조건자입니다. 조건자 attribute 에서 축이며 CustomerID 조건자입니다(특성> 노드인 경우 CustomerID <TRUE).

축약형 구문을 사용하여 XPath 쿼리를 다음과 같이 지정할 수도 있습니다.

Customer[@CustomerID]  

선택 조건자: 예제 6

Microsoft SQLXML 4.0에는 다음 예제와 같이 조건자의 교차 제품을 포함하는 XPath 쿼리에 대한 지원이 포함되어 있습니다.

Customer[Order/@OrderDate=Order/@ShipDate]  

이 쿼리는 OrderOrderDate 중 하나의 ShipDate와 동일한 Order가 있는 모든 고객을 선택합니다.

참고 항목

주석이 추가된 XSD 스키마 소개(SQLXML 4.0)
클라이언트 쪽 XML 서식 지정(SQLXML 4.0)