XML ( eXtensible Markup Language )

 

정의

HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)이며 데이터를 설명하는 태그(tag)를 사용자 마음대로 정의할 수 있는 확정성 있는 마크업 언어이다.

저장되는 데이터의 구조를 기술하기 위한 언어로 사람과 기계가 동시에 읽기 편한 구조로 구성되어 있다. 

 

 

<cats>
    <cat>
        <name>루루</name>
        <family>먼치킨<family>
        <age>5</age>
        <weight>2.7</weight>
    </cat>
    <cat>
        <name>야통이</name>
        <family>코리안숏헤어<family>
        <age>4</age>
        <weight>5</weight>
    </cat>
</cats>

 

XML문서는 HTML문서처럼 트리(tree) 형태의 계층 구조를 갖는다.

문서당 하나뿐인 루트에서 시작하여 자식 요소에 연결되며 모든 요소는 자신만의 자식 요소를 가질 수 있다.

부모 요소는 여러 개의 자식 요소를 가질 수 있으나 자식 요소에게 부모는 하나 뿐이다.

같은 부모에서 뻗어져 나와 같은 트리 레벨에 존재하면 형제 요소라고 한다. 

 

트리 형태

 

 

 

HTML과 뭐가 다를까?

- HTML이 Data를 "표현"하는데 포커스를 맞추고 있다면 XML은 Data를  "전달"하는데 포커스를 맞추고 있다. 

- HTML은 약속된 태그를 사용하지만 XML은 tag가 정의 되어 있지 않아 확장성이 좋다.

 

 

 

그외의 XML 특징들

- XML은 데이터를 텍스트 형식으로 저장하여, 소프트웨어나 하드웨어에 독립적으로 데이터를 저장, 전달 가능하다.

- 텍스트 형식이기 때문에 운영체제, 프로그램, 브라우저 할 것 없이 모두에게 데이터 전달이 가능하다.

- XML은 데이터를 보여주지 않고, 오로지 데이터를 전달, 저장하는 것만을 목적으로 한다.

 

 

 

데이터를 보낼 때 사용하는 수단?

XML도 나름 HTML등의 언어를 극복하는 수단으로서 등장했으나 헤더와 태그등의 여러 요소들로 인해 가독성이 떨어지고 용량도 효율적이지 않다는 평가를 받게되어 이 문제점을 해결하고 보완하는 것이 나오게 된다.

그게 무엇일까?

 

현재의 우리가 프로젝트를 하면서 데이터를 보낼 때 사용하는 수단으로 무엇을 이용하고 있는가를 생각해보면 답이 나온다.

맞다. JSON을 이용하고 있다.

 

 

 

JSON은 XML과 뭐가 다를까?

- JSON은 종료 태그가 없다

- JSON의 구문이 XML 구문보다 짧다

- JSON 데이터가 XML 데이터보다 더 빨리 읽고 쓸 수 있다.

XML 문서는 XML DOM이라는 Document Object Model을 이용해 해당 문서에 접근하지만 JSON은 문자열을 전송 받은 후 해당 문자열을 바로 파싱하므로, XML보다 속도 처리가 빠르다. 

- XML은 배열을 사용할 수 없지만, JSON은 배열을 사용할 수 있다.

 

 

{
    "name": "야통이",
    "family": "코리안숏헤어",
    "age": 4,
    "weight": 5
}

 

 

 

그럼 이제 XML 안 쓰나?

그렇지 않다. JSON은 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다.

그래서 경우에 따라 데이터의 무결성을 검증을 미리 정해놔야할 필요가 있는 경우가 있는데 이때 스키마를 사용해 무결성을 검증할 수 있는 XML을 많이 사용하고 있고 아직도 W3C (World Wide Web Consortium) 에서의 권고안으로 XML이 정해져있기에 다양하게 사용되고 있고, 이를 기반으로 한 또 다른 기술들도 많다.

 

XHTML, MathML, SVG, XUL, RDF 등

 

 

RSS ( Rich Site Summary ) : 블로그처럼 컨텐츠 업데이트가 자주 일어나는 웹사이트에서 업데이트 정보를 쉽게 구독자에게 제공하기 위해 XML을 기초로 만들어진 데이터 형식

 

 

'Computer Science > Web' 카테고리의 다른 글

HTTP 웹 지식 - URI와 웹 브라우저 요청 흐름  (0) 2023.03.06
HTTP 웹 지식 - 인터넷 네트워크  (0) 2023.03.06
HTTPS  (0) 2023.01.14
OAuth 2.0  (2) 2022.12.15
인증 / 인가 / 쿠키-세션 인증 / JWT 인증 간단개념  (0) 2022.12.03

+ Recent posts