Thursday, July 02, 2009

XPath Expression (2)

 

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: