본문 바로가기

Back/XML

XML 간단하게 알아보기 - 2 (구조)

XML 선언 방식과 내용을 적는 방식은 이전 1편에서 알아봤다. 그렇다면 그 구조가 어떻게 되는지 알아야 제대로 써먹지 않겠는가?

 

이것 역시 간단하다. Root Element, Element, Attribute, Text 이 네 가지로 XML을 대부분 설명할 수 있다.

Root Element는 다음과 같다.

 

<?xml version="1.0" encoding="UTF-8"?>
<game>
</game>

 

위 xml 문서를 해석하면 간단하다.

최상단에는 이 문서가 xml 문서고, 1.0 버전이니 초기 버전이라는 것을 알리고 있으며, 인코딩 타입은 utf-8이라는 것이다.

그리고 이 문서를 통해서 전하고자 하는 내용은 game에 관련된 내용이라는 것이다.

 

여기에서 결과적으로 이 문서가 전하고자 하는 내용, 그 자체인 <game> 태그가 root element가 된다.

이 문서의 포괄적인 범위를 정하는 것이다.

 

root element는 더 볼 것도 없다. 그렇다면 다음은 element를 보자.

 

<?xml version="1.1" encoding="utf-8"?>
<game>
    <player></player>
    <enemy></enemy>
</game>

 

달라진 점은 <game> 태그 안에 player, enemy 태그가 들어갔다는 점이다. 저렇게 root element 내부에서 말하고자 하는 대상을 추상화한 태그를 element라고 한다.

저게 무슨 내용인지 알 수는 없지만, 플레이어와 적이라는 개념이 존재한다는 것 정도는 알 수 있다.

 

element도 끝이다. 그렇다면 attribute는 뭘까? HTML에 대해서 공부했다면 살짝 감이 올 것이다. 동일하다. element를 설명하는 meta data가 attribute다.

다음을 보자.

 

<?xml version="1.2" encoding="UTF-8"?>
<game category="online-game">
	<player></player>
    <enemy></enemy>
</game>

 

 game 태그 내부의 category="~" 부분이 attribute다. game 태그를 구체적으로 설명하는 것을 담당한다. game 태그에 선언됐기 때문에 내부 태그인 player, enemy 태그 또한 해당 attribute에 영향을 받는다.

 

attribute로 필요하다 생각하는 내용을 더 넣을 수 있다. 그렇다면 다음은 text를 알아보자. 사실 여기까지 왔으면 감이 잡힐 것이다.

다음을 보자.

 

<?xml version="1.3" encoding="utf-8"?>
<game category="online-game">
	<player>Good-boy</player>
	<enemy>Bad-scientist</enemy>
</game>

 

player, enemy 태그 내부에 내용이 들어갔다. 해당 부분이 text 파트다. 유추가 가능하듯, text 파트는 실질적으로 전하고자 하는 내용을 담는다. 핵심이며, player, game, ?xml 부분은 해당 내용을 오해없이 정확하게 전달하기 위한 도구에 지나지 않는다.

 

해당 구조를 root element, element 이런 식으로 표현하는 것 외에도 parent, child를 사용한 표현 방식이 있다.

다음을 보자.

 

<XML Declaration>
<parent>
	<child>
    	<subchild>
        	......
        </subchild>
    </child>
</parent>

 

내용을 보다 추상화했다. 해당 내용에서 parent는 root element를, child와 subchild는 element를 뜻한다. parent, child라고 표현하면 딱 이 내용을 말하는구나~ 유추하면 된다.

또한, text를 포함한 element를 node라고 표현하기도 한다.

 

다음은 문법상 주의할 점이다.

 

  • XML Declaration은 XML 선언부, XML Prologue로 표현하기도 한다.
  • xml에서는 대소문자를 구분하여 대소문자가 다르면 서로 다른 태그로 인식한다는 점은 알아두자.
  • 값을 표현할 때는 반드시 quote (따옴표)를 이용해야 한다. attribute="~~", version="~" 이런 식이다.
  • text를 표현할 때, <, >는 에러를 유발하니 html에서 사용하는 표현식으로 대체하면 된다 (ex: &lt;)
  • 주석은 html 방식과 비슷하게 <!-- ~ --> 방식이다. 

 

끝!