다음을 통해 공유


이름 테스트

이름 테스트는 선택하려는 노드의 이름을 명시적으로 지정할 수 있기 때문에 노드 테스트의 가장 일반적인 형식으로 사용됩니다. 그러나 문서 트리에 이름이 같은 다른 노드 형식이 있을 수 있으므로 노드 이름만 지정한다고 해서 적합한 노드가 자동으로 선택되는 것은 아닙니다. 적합한 노드를 선택하기 위해 이름 테스트는 지정한 이름과 이름이 일치하고 지정한 축의 주 노드 형식과 노드 형식이 일치하는 노드만 선택합니다.

다음 표에서는 다양한 축의 주 노드 형식 목록을 보여 줍니다.

주 노드 형식

attribute:: 축 또는 namespace:: 축(즉, 요소를 포함할 수 있는 축) 이외의 모든 축

요소

특성

특성

namespace

namespace

이름 테스트에서 지정한 이름은 별표(*), QName, 또는 NCName:* 식 중 하나일 수 있습니다. 다음 표에서는 이러한 이름 형식을 각각 지정한 축과 함께 사용하여 특정 노드 집합을 찾는 방법을 보여 줍니다.

이름

반환 값

예제

*(별표)

주 노드 형식의 모든 노드에 대해 True를 반환합니다.

ancestor::*는 컨텍스트 노드의 모든 상위 노드를 선택합니다.

attribute::*는 컨텍스트 노드의 모든 특성을 선택합니다.

namespace::*는 컨텍스트 노드의 모든 네임스페이스를 선택합니다.

QName

확장 이름이 QName으로 지정된 확장 이름과 같은 주 노드 형식의 모든 노드에 대해 True를 반환합니다.

child::para는 컨텍스트 노드의 자식인 <para> 요소 노드를 모두 선택합니다. 컨텍스트 노드에 <para> 자식이 없을 경우 빈 노드 집합을 선택합니다.

NCName:*

로컬 이름과 상관없이 확장 이름에 NCName이 확장하는 네임스페이스 URI가 있는 주 노드 형식의 모든 노드에 대해 True를 반환합니다.

child::ns:* 는 ns 접두사를 가진 네임스페이스에 있는 자식 요소 노드를 모두 선택합니다.

설명

노드 테스트가 QName일 경우 XPath는 먼저 XML 파일에서 컨텍스트 네임스페이스 선언을 기반으로 QName을 확장해야 합니다. 이 확장 프로세스는 시작 태그와 끝 태그 안에 있는 요소 이름의 확장 프로세스와 같습니다. 단, xmlns로 선언한 기본 네임스페이스를 사용하지 않는다는 점이 다릅니다. QName에 접두사가 없을 경우 XPath는 로컬 이름이 지정된 QName과 일치하고 네임스페이스 URI가 null인 노드를 찾습니다. QName의 접두사가 파일의 컨텍스트 네임스페이스 선언과 일치하지 않으면 QName에서 오류가 발생합니다.

노드 테스트가 NCName:*인 경우 XPath는 QName의 접두사를 확장하는 것과 같은 방법으로 NCName을 확장합니다. 마찬가지로 NCName 부분이 파일의 컨텍스트 네임스페이스 선언에 포함된 접두사와 일치하지 않으면 NCName:*에서 오류가 발생합니다.

참고 항목

참조

노드 테스트

노드 형식 테스트

대상 처리 명령 테스트