XPath 3
XPath 3XPath 3은 XML 문서에서 노드를 선택하기 위한 쿼리 언어인 XML 경로 언어의 최신 버전이다. 그것은 XPath 1.0과 XPath 2.0을 대체한다.
XPath 3.0은 2014년 4월 8일에 W3C 권장사항이 되었고, XPath 3.1은 2017년 3월 21일에 W3C 권장사항이 되었다.
XPath 3.0의 새로운 기능
XPath 2.0과 비교하여 XPath 3.0에는 다음과 같은 새로운 기능이 추가된다.
- 인라인 함수 식
- 익명 함수는 표현 컨텍스트에서 생성될 수 있다. 예를 들어, 표현은
function($a as xs:double, $b as xs:double) as xs:double { $a * $b }
두 개의 인수의 곱을 반환하는 함수를 만든다. 그 표현collection()/(let $a := . return function() { $a })
각 기능이 컬렉션에서 다른 노드를 반환하는 일련의 기능을 생성한다. - 동적 함수 호출
- 함수 값은 이름으로 참조되지 않고 호출할 수 있다. 예를 들어,
$f[2]("Hi there")
순서에서 두 번째 항목을 가져오다.$f
, 그리고 그것을 함수로 호출하여 문자열들을 전달"Hi there"
논거로서 - 조합형식
- XML 스키마에서 정의한 조합 유형은 유형 변환 및 함수 유형 서명에 사용될 수 있다.
- 네임스페이스 리터럴
- XML 네임스페이스는 가새 URILATE를 사용하여 참조할 수 있다. 예를 들어, 정규화된 이름
math:pi
로 확대될 수도 있다.Q{http://www.w3.org/2005/xpath-functions/math}pi
, 접두사 안에 네임스페이스 URI 포함. - 문자열 연결 연산자
- 새로운
$a $b
와 같다fn:concat($a, $b)
. - 매핑 연산자
- 새로운
!
연산자가 단순 매핑 수행:E1 ! E2
평가하다E2
순서의 각 항목마다E1
, 그리고 결과 항목을 연결한다. 이는 경로 연산자와 유사하다./
, 그러나 .!
운영자는 중복 제거 또는 결과 문서 순서를 수행하지 않는다.
XPath 3.1의 새로운 기능
XPath 3.1은 주로 어레이 및 맵(관련 어레이) 데이터 유형에 대한 지원을 추가한다. 이러한 유형과 관련 기능들은 JSON 데이터와의 작업을 용이하게 하기 위한 것이다.
또 다른 혁신은 화살표 연산자다. =>
함수 체인으로 예를 들어, XPath 2.0 식
contains(upper-case(substring-before($in, ' ')), 'X')
이제 쓸 수 있다
$in => substring-before(' ') => upper-case() => contains('X')
참조
- "XML Path Language (XPath) 3.0". World Wide Web Consortium. 8 April 2014.
- "XML Path Language (XPath) 3.1". World Wide Web Consortium. 21 March 2017.