위치 경로(XPath)
위치 경로란 컨텍스트 노드에 상대적인 노드 집합을 선택하는 데 사용되는 XPath 식입니다. 위치 경로 식을 계산하면 위치 경로로 지정된 노드가 포함된 노드 집합이 나옵니다. 위치 경로는 노드 집합을 필터링하는 데 사용되는 식을 재귀적으로 포함할 수 있습니다.
구문적으로 위치 경로는 하나 이상의 위치 단계로 구성되며 각 단계는 슬래시(/)로 구분됩니다.
locationstep/locationstep/locationstep
각 위치 단계는 컨텍스트 노드에 상대적인 노드 집합을 선택합니다. 즉, 이전 위치 단계에 의해 선택된 노드에 상대적인 노드 집합을 선택합니다. 이러한 방법으로 나타낸 위치 경로를 상대 위치 경로라고 합니다. 절대 위치 경로는 루트 요소에서 시작합니다.
/locationstep/locationstep/locationstep
위치 경로에서 위치 단계는 왼쪽에서 오른쪽으로 계산됩니다. 가장 왼쪽의 위치 단계는 컨텍스트 노드에 상대적인 노드 집합을 선택합니다. 그러면 이 노드가 다음 위치 단계를 처리하는 데 사용되는 컨텍스트가 됩니다. 모든 위치 단계가 처리될 때까지 이 단계 처리 및 컨텍스트 노드 업데이트가 반복됩니다.
위치 경로를 그대로 표시할 수도 있고 간략하게 표시할 수도 있습니다.
전체 위치 경로에서 위치 단계의 구문은 다음과 같습니다.
axis::node-test[predicate]
이 구문에서 axis는 위치 단계로 선택된 노드와 컨텍스트 노드의 관계를 지정하며 node-test는 위치 단계로 선택된 노드의 형식 및 확장 이름을 지정합니다. 또한 predicate는 위치 단계에서 노드 선택을 구체화하는 필터 식입니다. 조건자는 선택적입니다. 이 경우 위치 단계는 axis::와 node-test로만 구성됩니다. 다음 표에서는 몇 가지 예제를 제공합니다.
전체 위치 경로 |
설명 |
---|---|
child::para[last()] |
컨텍스트 노드의 마지막 <para> 요소를 선택합니다. |
parent::para |
컨텍스트 노드의 부모인 <para> 요소를 선택합니다. |
child::text() |
컨텍스트 노드의 모든 텍스트 노드 자식을 선택합니다. |
child::div/child::para |
컨텍스트 노드의 자식인 <div> 요소의 <para> 자식 요소를 선택합니다. |
간략화된 위치 경로에서 축 지정자 axis::는 위치 단계에서 명시적으로 나타나지 않지만 대신 바로 가기 집합에 의해 암시됩니다. 다음 표에서는 몇 가지 예제를 제공합니다.
간략화된 위치 경로 |
설명 |
---|---|
para |
컨텍스트 노드의 <para> 요소를 선택합니다. |
../para |
컨텍스트 노드의 부모인 <para> 요소를 선택합니다. |
text() |
컨텍스트 노드의 모든 텍스트 노드 자식을 선택합니다. |
./div/para |
컨텍스트 노드의 <div> 요소 자식의 <para> 요소 자식을 선택합니다. |
다음은 약어를 요약한 것입니다.
전체 |
간략화됨 |
---|---|
child::* |
* |
attribute::* |
@* |
/descendant-or-self::node() |
// |
self::node() |
. |
parent::node() |
.. |
단원 내용
다음 항목에서는 위치 경로의 구문과 사용에 대해 자세히 설명합니다.