삽질의 현장/- ETC

[삽잡이] XML

shovelman 2015. 11. 11. 01:00


XML에 대해서 알아볼 기회가 있어서 간략하게(?) 알아봤습니다.


XML이란, Mark Up 언어입니다.

해당 언어는 확장 가능한 Mark Up Language라는 뜻으로써,

대표적인 언어로는 HTML이 있습니다.

이 Mark Up 언어의 장점은 말 그대로 Mark Up을 갖는 언어라는것입니다.


일반적으로 파일은 크게 두 가지로 분류를 할 수 있습니다.

바로, '텍스트 파일' 과 '바이너리 파일'입니다.


이 둘은 서로 다른 장,단점을 가지고 있습니다.

텍스트 파일의 경우 '읽기가 편하다.'는 장점이 있습니다.

그리고 바이너리 파일의 경우 '정확한 정보를 찾아내기 쉽다.'는 장점을 가지고 있습니다.



이처럼 텍스트를 사용하면 읽기에는 편하지만 정보를 뽑아오기는 매우 어렵습니다.

형식이 없기 때문이지요...

즉, 정형화 된 데이터로 나와있지 않기 때문에 정보를 뽑아내기 힘들다 이겁니다.

텍스트로 어떤 데이터를 보관하면 읽을 때는 구분하기 어렵다는 것입니다.

텍스트는 읽기 위해서만 쓰는 경우가 많다 이거지요.


데이터를 읽고 복원하기 위해서 쓴 언어가 

텍스트 파일이라고 하기에는 부족함이 다소 있기에

ML 언어를 만들어 보완하게 된 것입니다.


XML 언어는 Mark Up언어라고 했는데,

그러면 Mark Up 언어는 뭐냐?



이와 같은 것을 '본문'이라고 합니다.

이때 Mark Up은 우리 말로 '표식'인데요,



표식을 다는데 이 때 시작 태그와 끝 태그를 통해 달게 됩니다.

본문은 그대로 두되 이 본문들이 각각 뭔지에 대해 표식을 다는 것입니다.


이러한 결과로

데이터를 찾기 편하고, 텍스트이기 때문에 읽기도 편하게 됬습니다.

즉, 정확한 포멧으로써 Mark Up으로 다루니 이전의 단점을 보완하게 된 것입니다.


HTML은 Mark Up들이 딱 정해져있습니다.

정해져있는 Mark Up에 입각해서 코드를 작성하게 되지요.

그런데, XML은 Mark Up 언어를 만들어내는

즉, MarkUp을 정의할 수 있는 Mark Up언어라고 할 수 있습니다.


XML 언어는 뭐하는지 다 보이고 읽혀지는 선언 언어로써 사용됩니다.


선언 언어란,

미리 언어를 만들어 놓으면, 모든 것들이 동작하는게 명확하게 보인다 이겁니다.

즉, UI를 정의할 때 많이 사용되게 됩니다.


로직을 작성하는데에는 

즉, 내가 하고자하는 수행, 기능, 일을 작성하는 경우에는

보통 C#, Java와 같은 컴파일 언어가 사용되는 것이구요,

 

참고로, 

XML은 스크립트 언어, 인터프리티 언어라고 부르고

C#과 같은 언어는 컴파일 언어라고 부르지요...


UI와 로직...


어플리케이션을 개발할 때 크게 두 가지로 나뉠 수 있습니다.


예쁘고, 사용자에게 쉽게 보이고 동작하도록 그래픽 디자이너가 꾸미는 UI 영역과,

알고리즘, 동작을 나타내는 프로그래머가 만드는 로직 부분으로 말입니다.

협업을 위한 요즘 시대의 대부분의 언어는 다 이와 같이 나뉩니다.


정리하자면,

UI를 XML이라는 표준 언어를 사용해서 Mark Up으로 사용하는 것입니다.

그리고 이는 협업을 쉽게 하기 위해서 XML을 사용하는 것이구요.



우선 <Person>, <Name>, <Age>와 같은 표식들을 Mark Up이라고 부릅니다.

Mark Up의 시작을 '시작 태그'라고 부르고, 끝을 '끝 태그'라고 부릅니다.


XML에서 단위는 Element 즉, 요소입니다.

시작 태그와 끝 태그로 이루어진 하나의 단위를 Element라고 하는 것입니다.

물론, Element 내에는 자식(서브) Element들이 존재할 수 있게 됩니다.

이 요소란, Root Element로 부터 시작됩니다.


해당 태그 안에서 들어있는 Element와 

 외 데이터들을 포함해서 'Contents'라고 부릅니다.

이 컨텐츠란 내용물을 뜻하는 용어입니다.


위의 그림을 보면 Person의 컨텐츠로는 name, age가 있습니다.

그리고 name의 컨텐츠는 '데이터 삽잡이'라고 할 수 있습니다.


 


컨텐츠 즉, 내용물은 이처럼 다르게 표현할 수 있습니다.


태그는 '태그의 이름'과 특성(attribute)을 사용할 수 있게 되는 것입니다.

name, age가 요소의 특성(attribute)이 되겠군요.

name을 특성의 이름, '삽잡이'가 값이 되는 것입니다.


또한, 만약 내용물이 없다면 우측과 같이 끝태그를 한꺼번에 끝내버릴 수도 있습니다.