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

적용 대상: SQL Server Azure SQL 데이터베이스

조건자는 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는 노드 테스트입니다(가 요소 노드>인< 경우 Customer TRUE입니다. 요소는> 축의 주 노드 형식이므로).<child 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, OrderSalesOrderID는 노드 테스트이고, attribute::OrderID="1"는 조건자입니다.

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

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

선택 조건자: 예제 3

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

child::Customer[child::ContactName]  

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

이 XPath 식에서 child는 축 이름이고, Customer는 노드 테스트입니다(가 요소> 노드인< 경우 Customer TRUE입니다. 요소는> 축의 주 노드 형식이기 때문<).child 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)