XPath 식의 컨텍스트

XPath 식 평가는 식이 실행되는 컨텍스트에 따라 결정됩니다.컨텍스트는 식이 평가되는 노드 및 다음을 포함하는 관련 환경으로 구성됩니다.

  • 문서 순서에서 형제에 상대적인 컨텍스트 노드의 위치

  • 컨텍스트 크기. 즉, 컨텍스트 노드의 형제 수에 1을 더한 수

  • 변수 참조를 확인할 수 있는 가변 바인딩

  • 함수 라이브러리

  • 식 범위 내의 네임스페이스 선언

컨텍스트 개념을 보다 명확히 이해하려면 노드가 포함된 트리를 살펴봅니다.트리의 루트에서 X로 명명된 모든 노드를 요청한 경우와 트리의 분기에서 이 노드를 요청한 경우 각각 다른 결과 집합이 반환됩니다.그러므로 식의 결과는 식이 실행되는 컨텍스트에 따라 다릅니다.

XPath 식은 특정 컨텍스트에서 특정 패턴을 일치시키고 결과를 반환한 다음 반환된 노드의 컨텍스트에 대해 추가 연산을 수행할 수 있습니다.이렇게 하면 문서 트리 전체를 검색할 때 XPath 식을 매우 융통성 있게 실행할 수 있습니다.

기본 XPath 식

다음은 XPath 식의 기본 형식입니다.각 형식이 아래에 설명되어 있습니다.

  • 현재 컨텍스트

  • 문서 루트

  • 루트 요소

  • 재귀적 상속

  • 특정 요소

예제

다음 예제에서는 몇 가지 기본 XPath 식을 보여 줍니다.이 단순 식을 결합하고 다양한 XPath 연산자 및 특수 문자를 사용하여 보다 복잡한 식을 만들 수 있습니다.

  • 현재 컨텍스트
    마침표와 슬래시(./)가 접두사로 붙은 식은 명시적으로 현재 컨텍스트를 컨텍스트로 사용합니다.예를 들어, 다음 식은 현재 컨텍스트에 있는 모든 <author> 요소를 참조합니다.

    ./author
    

    이 식은 다음 식과 같습니다.

    author
    
  • 문서 루트
    슬래시(/)가 접두사로 붙은 식은 문서 트리의 루트를 컨텍스트로 사용합니다.예를 들어, 다음 식은 이 문서의 루트에 있는 <bookstore> 요소를 참조합니다.

    /bookstore
    
  • 루트 요소
    슬래시 다음에 별표(/*)를 사용하는 식은 루트 요소를 컨텍스트로 사용합니다.예를 들어, 다음 식은 문서의 루트 요소를 찾습니다.

    /*
    
  • 재귀적 상속
    이중 슬래시(//)를 사용하는 식은 계층 구조에서 0개 이상의 수준을 포함할 수 있는 검색을 나타냅니다.이 연산자가 패턴 시작 부분에 표시된 경우 컨텍스트는 문서 루트에 상대적입니다.예를 들어, 다음 식은 현재 문서에 있는 모든 <author> 요소를 참조합니다.

    //author
    

    .// 접두사는 컨텍스트가 현재 컨텍스트에 지정된 계층 구조의 수준에서 시작되는 것을 나타냅니다.

  • 특정 요소
    요소 이름으로 시작하는 식은 현재 컨텍스트 노드에서 시작하여 특정 요소의 쿼리를 참조합니다.예를 들어, 다음 식은 현재 컨텍스트 노드의 <images> 요소 내에 있는 <background.jpg> 요소를 참조합니다.

    images/background.jpg
    

    다음 식은 현재 컨텍스트 노드의 <bookstore> 요소 내에 있는 <book> 요소 컬렉션을 참조합니다.

    bookstore/book
    

    다음 식은 현재 컨텍스트 노드에 있는 모든 <first.name> 요소를 참조합니다.

    first.name
    

    참고

    요소 이름에 마침표(.)를 포함할 수 있습니다.이 이름은 다른 이름과 똑같이 사용할 수 있습니다.

DOM의 컨텍스트

Microsoft XML DOM과 함께 XPath 식을 사용할 경우 컨텍스트는 selectNodes 메서드 또는 selectSingleNode 메서드를 호출하는 Node 개체입니다.

DOM에서 직접 XPath를 사용할 경우 특정 노드에서 컨텍스트를 정의합니다.

XSLT의 컨텍스트

XSLT에서 직접 XPath를 사용할 경우 현재 노드로 컨텍스트를 정의합니다.

관련 자료

자세한 내용은 www.w3.org/TR/xpath에 있는 XML Path Language (XPath) Version 1.0(W3C Recommendation 16 November 1999)을 참조하십시오.