XPath를 가끔 쓰다보니 매일 까묵는다..;;;
예전에 훔쳐온 내용도 링크가 끊어져서 날라가 버리고 ㅠㅠ
1. XPath란 무엇인가?
- XPath는 XML 문서의 part를 정의하기 위한 syntax이다.
- XPath는 XML 문서 내부를 검색하기 위한 path expression을 사용한다.
- XPath는 표준함수의 라이브러리를 갖고 있다.
- XPath는 W3C 표준이다.
2. Xpath의 노드
- Xpath에는 7가지 종류의 Node가 존재한다.
- element, attribute, text, namespace, processing-instruction, comment, document(root)Node간의 관계
parent, children, sibling, ancestor, descendant
3. Xpath Syntax
- Xpath는 Xml 문서내에서 노드와 노드셋을 선택하기 위해 path expression을 사용한다.
- 노드는 path 또는 step에 의해 선택된다.
Path Expression desc
Nodename 모든 child node 선택
/ Root node로부터 선택
// 문서내의 mathc괸 모든 노드 선택
. 현재 node 선택
.. 현재 node의 parent node 선택
@ Attribute 선택
* 모든 element node
@* 모든 attribute node
Node() 종류에 상관없이 모든 node
| 다수의(복수) element 선택
/bookstore/book[1] Bookstore의 자식중 첫번째 book을 선택
/bookstore/book[last()] Bookstore의 자식중 마지막 book을 선택
/bookstore/book[last()-1] Bookstore의 자식중 마지막에서 두번째 book을 선택
/bookstore/book[position()<3] Bookstore의 자식중 첫 두개의 book을 선택
//title[@lang] lang이라는 속성을 가진 모든 title 선택
//title[@lang='eng'] lang이라는 속성값이 eng인 모든 title을 선택
/bookstore/book[price>35.00] bookstore의 자식중 price 속성값이 35.00보다 큰 book을 선택
/bookstore/book[price>35.00]/title bookstore의 자식중 price 속성값이 35.00보다 큰 book중에서 그 자식은 title을 선택
//book/title | //book/price Book의 자식인 모든 title과 price
/bookstore/* bookstore의 모든 자식 node 선택
//title[@*] attribute 상관없이 모든 title 선택
//* 문서내의 모든 자식 node 선택
4. Xpath Axis
- Xpath는 Axis는 현재 노드와 노드셋과의 관계를 정의 한다.
Path Expression desc
Ancestor 현재 node의 모든 Ancestor 선택
Ancestor-or-self 현재 node의 모든 Ancestor와 자신을 선택
Attribute 현재 node의 모든 attribute를 선택
child 현재 node의 모든 child를 선택
Descendant 현재 node의 모든 Descendant를 선택
Descendant-or-self 현재 node의 모든 Descendant와 자신을 선택
Following 현재 node 후의 문서 내 모든 node를 선택
Following-sibilling 현재 node 후의 모든 sibilling을 선택
Namespace 현재 node의 모든 namespace node를 선택
Parent 현재 node의 parent를 선택
Preceding 현재 node 이전의 문서내 모든 node를 선택
Preceding-sibilling 현재 node 이전의 모든 sibilling을 선택
5. Axis(축) 표현
- Axisname::nodeset[predicate]
Path Expression desc
Child::book 현재 node의 child인 모든 book node를 선택
Attribute:lang 현재 node의 lang attribute 를 선택
Child::* 현재 node의 모든 child를 선택
Attribute::* 현재 node의 모든 Attribute 선택
Child::text() 현재 node의 child node의 모든 text를 선택
Child::node() 현재 node의 모든 child node를 선택
Descendant::book 현재 node의 Descendant인 모든 book을 선택
Ancestor::book 현재 node의 Ancestor인 모든 book을 선택
Ancestor-or-self::book 현재 node의 Ancestor인 모든 book과 현재 node가 book일 경우 자신을 선택
Child::*/child::price 현재 node의 Grandchild인 모든 price node를 선택
No comments:
Post a Comment