Post

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
16
<?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
5
일반적으로는         /
문서 전체에서 검색   //       계층은 상관없음
attribute를 검색    @        /ip/@addr 하면 loopback이 나온다.
attribute로 검색    []       /ip[addr="loopback"]

xpath에서 namespace 때문에 tag가 검색이 잘 안되는데, 그럴 땐 //*[local-name()=’ip’]를 이용한다. 또는 NameSpaceContext를 만들어서 xpath에 붙여도 된다.

namespace

다른 parent 아래에 있지만 이름이 같은 tag 들은 //tag로 검색시 구분이 안되기 때문에, namespace를 지원한다.

1
2
3
<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.