XML
XML(eXtensible Markup Language)
- tree 구조 ( hierarchical )
- 반드시 단 하나의 root만 가져야 한다
- DTD(Document Type Definition)는 문서 당 하나여야 한다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<TCPIP>
<ip addr="loopback">127.0.0.1</ip>
.
.
.
검색
1
2
3
4
일반적으로는 /
문서 전체에서 검색 // 계층은 상관없음
attribute를 검색 @ /ip/@addr 하면 loopback이 나온다.
attribute로 검색 [] /ip[addr="loopback"]
xpath에서 namespace 때문에 tag가 검색이 잘 안되는데, 그럴 땐 //*[local-name()=’ip’]를 이용한다. 또는 NameSpaceContext를 만들어서 xpath에 붙여도 된다.
namespace
다른 parent 아래에 있지만 이름이 같은 tag 들은 //tag
로 검색시 구분이 안되기 때문에, namespace를 지원한다.
1
2
<video:TCPIP xmlns:video="URL">
<video:ip>
alias같은 개념 으로 video == "URL"
이며 이를 이용해 중복을 회피할 수 있다.
Note ) namespace는 해당 element가 어느 group에 속해 있는지를 나타내는 것 이외에 어떤 의미도 가지지 않는다. 즉 element 이름이 video:ip
가 되는 것이 아니라, ip가 video group이라는 것만 나타낸다.
This post is licensed under CC BY 4.0 by the author.