본문 바로가기
IT 용어/XML

XML이란 무엇일까?

by HP_Factory 2021. 1. 11.

eXtensible Markup Language의 두문자어로, W3C 권고 확장성 있는 마크업 언어로, W3C가 인간과 응용프로그램간, 혹은 응용프로그램 간에 정보를 쉽게 교환하기 위해 만든 데이터 교환 포멧입니다. 즉, 확장될 수 있는 표시언어입니다.

* eXtensible : 데이터를 설명하는 태그(Tag)를 사용자 마음대로 정의할 수 있습니다. 물론 다른 마크업 언어도 생성이 가능합니다.

 

 

XML 특징

  • 표준성
    W3C에서 표준화를 주도하며, SGML과 HTML의 한계를 극복하기 위하여 만든 표준 인터넷 언어입니다.
  • 분리성
    표현과 내용이 완전히 분리, XML 문서는 데이터의 구조와 내용을 기술하고 있으며, 스타일 시트를 이용하여 다양한 방식으로 데이터를 표현하고 있습니다.
  • 단순성, 호환성
    XML 문서는 텍스트로 되어 있기 때문에 하드웨어나 소프트웨어에 의존하지 않고 읽어 들일 수 있다는 장점을 가지고 있으며, 이러한 특징은 다양한 시스템간에 상호 작용을 중계하는데 XML을 이용될 수 있게 합니다.
  • 수용성
    HTML과 같이 현재 인터넷에서 가장 많이 사용되는 HTTP 프로토콜을 이용하여 전달합니다.
  • 확장성
    XML은 확장성 있는 태그를 사용하고 있음으로써, 어떤 분야의 데이터도 정확하게 기술할 수 있습니다.
  • 정보검색의 정확성
    XML 문서의 경우 의미가 있는 태그를 사용함으로써 원하는 데이터를 쉽게 찾을 수 있습니다.

 

 

XML VS HTML

Markup Language의 대표격인 HTML과 XML을 비교 해보겠습니다. 같은 Markup Language이고 생긴것은 비슷하지만 큰 차이점이 존재합니다.

 

  • XMLData를 전달하는 데에 포커스를 맞춘 언어입니다.
  • HTMLData를 표현하는 데에 포커스를 맞춘 언어입니다.
  • HTML의 태그는 이미 약속한 태그들만 사용이 가능합니다. Ex) </br> , <p></p>
  • XML의 태그는 사용자가 임의로 만들어 사용이 가능합니다. 

 

왜? XML을 임의로 만들어 사용하게 했는가?

XML은 어떠한 데이터를 설명하기 위해 이름을 임의로 지은 태그로 데이터를 감싸고 있는 형태입니다. 즉, 태그로 데이터를 설명하는 것입니다. 이 부분에서 데이터의 표시(Markup)가 되고, 더 필요한 데이터가 생길시 태그를 추가하거나, 태그안의 내용을 추가할 수 있다는 특징이 있습니다.(eXtensible)

 

아래의 예를 들어보겠습니다.

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

<마트>

<과일류>사과</과일류>

<과일류>바나나</과일류>

<채소류>양배추</채소류>

<라면류>일품라면</라면류>

<문구>연필</문구>

<양념류>고추장</앙념류>

</마트>

 

마트라는 태그아래 과일류, 채소류, 라면류, 문구, 양념류 라는 태그가 있으며 각 태그에 맞는 메타 정보들이 배치되어 있습니다. 이런식으로 XML은 우리가 필요한 정보들을 받거나 줄 수 있는 데이터 형태를 제공해주고 있습니다.

만약, HTML로 저런한 정보를 작성하려 했다 하면 사과,바나나, 양배추 등 메타 정보들은 얻을 수 있겠지만 데이터를 설명해주는 정보는 없을것입니다.(마트, 과일류, 채소류, ...)

 

 

 

 

XML 구조

  • XML Tree Structure : XML 문서는 "root"에서 시작해서 "leaves"로 뻗어나가는 트리 구조입니다.
  • The XML Prolog : XML 버전과 문자 인코딩을 정의하는 Prolog입니다.
    <?xml version="1.0" encoding="UTF-8"?>
  • XML Namespaces - The xmlns Attribute : Name conflict (여러 개의 xml 파일을 사용할 때 각각의 XML 파일에서 정의하고 있는 tag 이름이 겹쳐 충돌하는 문제)를 해결하기 위해, XML 에서는 Prefix를 사용할 수 있습니다.

Prefix

* namespace URI는 단지 Unique name을 위한 용도일 뿐, parser에 의해 참조되지 않습니다. 하지만 실제로 namespace정보를 담고 있는 웹 페이지 주소를 활용하는 경우도 종종 있습니다.

 

  • DTD(Document Type Definition) : XML 문서의 구조(Structure)를 정의하기 위한 문서입니다.

 

XML Structure

  • XML Schema : DTD와 유사하게, XML 문서의 구조를 정의하기 위한 문서지만, 그 자체가 XML Syntax로 쓰여진 XML 문서입니다.(XML-based alternative to DTD)

XML Schema

* XML SchemaDTD보다 많은 면에서 파워풀하고 편리합니다. Data type을 지원하며, XML Syntax로 쓰여질 수 있기 때문에,(DTD 처럼) 문서 구조를 정의하기 위한 다른 언어를 배울 필요가 없습니다.

 

 

  • 확장성 연결 언어
    - XLink 방식으로 1대 다, 다 대 1 관계를 통해 마크업 언어를 링크시킬 수 있습니다. 또한 Xpointer를 이용해 문서의 특정 부분만 링크시킬 수 있습니다.
  • Parser
    -XML 문법을 읽고 정보를 추출하는 기능을 가진 프로그램 입니다.
    (프로그램이 직접 XML 문서에서 정보 데이터를 추출하는 것이 아니라 XML 문서에서의 정보 획득파서(Parser)를 통해서 이루어집니다.)
    -파서는 프로그램에 대해 전혀 알 필요가 없으며 그 프로그램에서 사용하는 XML 문서 형식에 대해서도 알 필요가 없습니다.
    -하나의 파서는 한 프로그램과 그와 전혀 관련이 없는 다른 프로그램에서 똑같이 사용할 수 있습니다.
    (플랫폼과 언어 그리고 프로그램에 상관없이 XML문서를 인식합니다.)
    -XML 문서에 사용된 언어는 파서와 전혀 관련이 없습니다.

 

 

정리

  1. 텍스트 기반이며 간결한 데이터형입니다.
  2. 웹에서 디스플레이 표준을 HTML로 한것처럼 데이터의 표준으로 만들기 위한 노력이 있습니다.
  3. 마크업 언어(HTML)가 아니라 마크업언어를 정의하기 위한 언어입니다.
  4. 자신의 어플리케이션이나 입맛에 맞게 적합하게 작성, 사용이 가능합니다.

 

 

 

참고

mommoo.tistory.com/17

helloworld-88.tistory.com/67

 

댓글