JavaTM Platform
Standard Ed. 6

패키지 javax.xml.xpath

이 패키지는, XPath 식을 평가하기 위한 「객체 모델에 의존하지 않는다」API 를 제공해, 평가 환경에 액세스 합니다.

참조처:
          설명

인터페이스의 개요
XPath XPath 는 XPath 평가 환경 및 식에의 액세스를 제공합니다.
XPathExpression XPathExpression 는 컴파일 된 XPath 식에의 액세스를 제공합니다.
XPathFunction XPathFunction 는 XPath 함수에의 액세스를 제공합니다.
XPathFunctionResolver XPathFunctionResolver 는 일련의 사용자 정의의 XPathFunction 에의 액세스를 제공합니다.
XPathVariableResolver XPathVariableResolver 는 일련의 사용자 정의의 XPath 변수에의 액세스를 제공합니다.
 

클래스의 개요
XPathConstants XPath 정수입니다.
XPathFactory XPathFactory 인스턴스를 사용해,XPath 객체를 작성할 수 있습니다.
 

예외의 개요
XPathException XPathException 는 총칭 XPath 예외를 나타냅니다.
XPathExpressionException XPathExpressionException 는 XPath 식의 에러를 나타냅니다.
XPathFactoryConfigurationException XPathFactoryConfigurationExceptionXPathFactory 환경의 구성 에러를 나타냅니다.
XPathFunctionException XPathFunctionException 는 XPath 함수의 에러를 나타냅니다.
 

패키지 javax.xml.xpath 의 설명

이 패키지는, XPath 식을 평가하기 위한 「객체 모델에 의존하지 않는다」API 를 제공해, 평가 환경에 액세스 합니다.

다음의 XML 표준이 적용됩니다.


XPath 의 개요

XPath 언어는, XML 문서로부터 노드를 선택하기 위한 단순하고 간결한 구문을 제공합니다. 또, XML 문서 객체 모델 (DOM) 트리의 노드를 boolean, double, 또는 string 치로 변환하기 위한 규칙도 제공합니다. XPath 는 W3C 에 의해 정의된 언어이며, 공식의 W3C 권고입니다. W3C 는 XML Path Language (XPath) Version 1.0 스펙을 호스트 하고 있습니다.

XPath 는 1999 년에 XSLT 및 XPointer 언어의 추가으로서 탄생했습니다만, 최근에는 독립한 언어로서 또 많은 DOM API 코드 대신에 사용할 수 있는 단일의 XPath 식으로서 보급해 왔습니다.

XPath 식

XPath 식은, 1 개(살)의 「로케이션 패스」, 및 1 개(살) 또는 복수의 「프레디케이트」로 구성됩니다. 식에는 XPath 변수가 포함되는 경우도 있습니다.

간단한 XPath 식의 예를 다음에 나타냅니다.

/foo/bar

이 예는, 다음과 같은 XML 문서의 <bar> 요소를 선택합니다.

<foo>
<bar/>
</foo>

/foo/bar 는, 로케이션 패스의 예입니다. XPath 의 로케이션 패스는 Unix 스타일의 파일 시스템 패스를 닮아 있습니다만, XPath 식에서는 식에 매치 하는 「모든」노드를 돌려준다고 하는 점이 중요한 상위입니다. 따라서,/foo/bar 식에 의해 다음의 문서의 3 개 모든 <bar> 요소가 선택됩니다.

<foo>
<bar/>
<bar/>
<bar/>
</foo>

특별한 로케이션 패스 연산자,// 는, 깊이에 관계없이 XML 문서의 노드를 선택합니다. 문서내의 위치에 관계없이, 모든 <bar> 요소를 선택하는 경우의 예를 다음에 나타냅니다.

//bar

와일드 카드 연산자 * 를 사용하면(자), 모든 요소 노드가 선택됩니다. < foo> 요소의 모든 아이 요소를 선택하는 예를 다음에 나타냅니다.

/foo/*

XPath 로케이션 패스는, 요소 노드 뿐만이 아니라, 속성 노드, 텍스트 노드, 코멘트 노드, 및 처리의 지시 노드를 주소 지정할 수도 있습니다. 이러한 각 노드형에 대한 로케이션 패스의 예를 다음의 겉(표)에 나타냅니다.

로케이션 패스 설명
/foo/bar/@id <bar> 요소의 속성 id 를 선택
/foo/bar/text() <bar> 요소의 텍스트 노드를 선택. 이스케이프 된 문자 데이터와 이스케이프되어 있지 않은 문자 데이터에 차이는 없다
/foo/bar/comment() <bar> 요소에 포함되는 모든 코멘트 노드를 선택
/foo/bar/processing-instruction() <bar> 요소에 포함되는 모든 처리의 지시 노드를 선택

프레디케이트에서는, XPath 의 로케이션 패스로 선택된 노드를 세련 하는 것이 가능합니다. 프레디케이트는,[expression] 의 형식을 취합니다. true 의 값을 가지는 include 속성을 포함한 모든 <foo> 요소를 선택하는 예를 다음에 나타냅니다.

//foo[@include='true']

프레디케이트를 다음과 같이 추가해, 식을 한층 더 세련 할 수도 있습니다.

//foo[@include='true'][@mode='bar']

XPath API 의 사용

XPath API 를 사용해, XML 문서로부터 1 개 또는 복수의 노드를 선택하는 경우의 예를 다음에 나타냅니다.

XPath xpath = XPathFactory.newInstance(). newXPath();
String expression = "/widgets/widget";
InputSource inputSource = new InputSource("widgets.xml");
NodeList nodes = (NodeList) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);

XPath 식 및 형태

XPath 식은 XML 문서의 노드를 선택합니다만, XPath API 는 선택된 노드를 다음에 나타내는 것 외의 데이터형의 어느 쪽인가에 합체 시킬 수가 있습니다.

바람직한 반환값의 형태는, 식을 평가하기 위해서 사용된 메소드 호출 QName 파라미터로 지정되고 있습니다. 이것은,XPathExpression.evalute(...) 의 호출인가,XPath.evaluate(...) 편리한 메소드의 1 개가 됩니다. 허가되는 QName 치는, 다음과 같이 XPathConstants 클래스의 정수로서 지정되고 있습니다.

Boolean 형 반환값이 요구되면(자), 1 개(살) 또는 복수의 노드가 선택되고 있는 경우는 Boolean.TRUE 가 돌려주어져 그렇지 않은 경우는 Boolean.FALSE 가 돌려주어집니다.

String 반환값형은, 텍스트 노드, 속성 노드, 코멘트 노드, 또는 처리의 지시 노드로부터 문자 데이터를 취득하는 경우에 편리합니다. 요소 노드에 사용하면(자), 아이 텍스트 노드의 값이 돌려주어집니다.

Number 반환값형은, 노드의 텍스트를 double 데이터형에 합체 시킵니다.

XPath 문맥

XPath 로케이션 패스는,context 로 불리는 문서안의 특정의 노드에 관련하는 경우가 있습니다. 다음의 XML 문서를 생각합니다.

<widgets>
<widget>
<manufacturer/>
<dimensions/>
</widget>
</widgets>

다음의 XPath API 코드로 <widget> 요소를 선택할 수가 있습니다.

// parse the XML as a W3C Document
DocumentBuilder builder = DocumentBuilderFactory.newInstance(). newDocumentBuilder();
Document document = builder.parse(new File("/widgets.xml"));

XPath xpath = XPathFactory.newInstance(). newXPath();
String expression = "/widgets/widget";
Node widgetNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);

<widget> 요소에의 참조가 있으면, 관련하는 XPath 식을 다음과 같이 써,<manufacturer> 자 요소를 선택하도록 할 수 있습니다.

XPath xpath = XPathFactory.newInstance(). newXPath();
String expression = "manufacturer";
Node manufacturerNode = (Node) xpath.evaluate(expression, widgetNode, XPathConstants.NODE);


JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.