본문 바로가기
IT/기본개념

XML이란?

by 머스타드 가오리 2020. 6. 24.

XML이란?

EXtensible Markup Language, 1998년에 W3C 표준 권고안에 포함되었다고 합니다.

HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)입니다.

이 언어는 사람과 기계가 동시에 읽기 편한 구조로 되어있습니다.

HTML은 데이터를 보여주는 것이 목적이지만, XML은 데이터를 저장하고 전달할 목적으로 만들어졌습니다.

HTML의 태그는 미리 정의되어 있지만, XML의 태그는 사용자가 직접 정의할 수 있습니다.

( W3C : World Wide Web Consortium, www을 위한 웹표준을 개발하고 장려하는 조직 )

 

 

Markup Language란?

태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어의 한 가지입니다.

문서가 화면에 표시되는 형식을 나타내거나 데이터의 논리적인 구조를 명시하기 위한 규칙들을 정의한 언어의 일종입니다.

데이터를 기술한 언어라는 점에서 프로그래밍 언어와는 차이가 있습니다.

 

 

XML의 목적?

서로 호환되지 않는 데이터 타입을 사용하는 시스템 간의 데이터 교환에는 많은 시간과 노력이 발생합니다.

또, 이렇게 데이터를 변환하는 과정에서 데이터의 손실이 발생하는 경우도 종종 있습니다.

 

하지만, XML은 데이터를 텍스트 형식으로 저장하기 때문에 SW/HW에 독립적으로 데이터를 저장하고 전달할 수 있습니다.

따라서 XML을 사용하면 새로운 OS나 프로그램, 브라우저 등에 상관없이 데이터를 안전하고 손쉽게 전달할 수 있습니다.

 

 

XML의 구조?

XML은 트리(tree) 형태의 계층 구조입니다.

그러므로 하나 뿐인 루트(root) 요소부터 시작해 각각의 자식(child) 요소에 단계적으로 연결됩니다.

예제는 아래와 같습니다.

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

<shop city="서울" type="마트">

    <food>

        <name>귤</name>

        <sort>과일</sort>

        <cost>3000</cost>

    </food>

    <food>

        <name>상추</name>

        <sort>야채</sort>

        <cost>2000</cost>

    </food>

</shop>

XML 문서는 맨 첫줄에 <xml> 태그를 사용하여 XML 문서임을 명시합니다.

이것을 XML 프롤로그(prolog)라고 합니다.

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

그 다음에는 root 요소를 생성합니다.

이 루트 요소는 XML 문서에 존재하는 모든 요소의 조상(ancestor) 요소가 됩니다.

<shop city="서울" type="마트">

 

위의 root 요소는 자식(child) 요소로 두 개의 <food>요소를 가집니다.

그리고 <food> 요소는 <name>, <sort>, <cost> 총 세 개의 자식 요소를 가집니다.

 

 

XML 기본 문법?

 

- 프롤로그 문법

<?xml version="XML문서버전" encoding="문자셋" standalone="yes|no"?>

여기서 standalone 속성은 XML 문서가 외부 DTD(document type definition)와 같은 외부 소스의 데이터에 의존하고 있는 문서인지 아닌지를 XML 파서(parser)에 알려주는 역할을 합니다.

(default : no)

(yes로 설정하면, 이 문서를 파싱할 때 참조해야 할 외부 소스가 없다는 것 입니다.)

 

- 모든 XML 요소는 종료 태그를 가져야 합니다. 빈 태그라도 슬래시를 추가해주어야 오류가 나지 않습니다.

<h1></h1>
<hr/>

 

- XML 태그는 대소문자를 구분합니다. (HTML은 이를 구분하지 않습니다.)

 

- XML은 띄어쓰기를 인식합니다. (HTML은 인식하지 않습니다.)

 

- 주석은 다음과 같이 사용합니다 : <!-- 주석 -->

 

 

XML의 세부 문법?

 

- XML 네임스페이스 : 서로 다른 xml이 하나로 합쳐질 때, 같은 이름을 지닌 요소가 충돌하는 것을 방지합니다.

<요소이름 xmlns:prefix="URI">

(URI : Uniform Resource Indentifiers : 통합 자원 식별자를 의미하며, 인터넷에 있는 자원을 나타내는 유일한 주소)

 

예제1)

<body>

    <h1>html에서의 제목</h1>

    <p>html에서의 단락</p>

</body>

 

예제2)

<body>

    <arm>70</arm>

    <leg>110</leg>

</body>

 

병합 샘플1)

<root>

    <a:body xmlns:a="https://www.w3.org/TR/html5/">

        <a:h1>html에서의 제목</a:h1>

        <a:p>html에서의 단락</a:p>

    </a:body>

    <b:body xmlns:b="http://codingsam.com/xml/physical/">

        <b:arm>70</b:arm>

        <b:leg>110</b:leg>

    </b:body>

</root>

 

병합 샘플2)

<root

    xmlns:a="https://www.w3.org/TR/html5/"

    xmlns:b="http://codingsam.com/xml/physical/">

    <a:body>

        <a:h1>html에서의 제목</a:h1>

        <a:p>html에서의 단락</a:p>

    </a:body>

    <b:body>

        <b:arm>70</b:arm>

        <b:leg>110</b:leg>

    </b:body>

</root>

 

 

XML 문서의 종류?

W3C의 XML 표준 권고안은 문법적인 측면에서 두 가지 종류의 XML 문서를 정의하고 있습니다.

 

1. 문법에 맞는(well-formed) XML 문서

XML 문서로서 가져야 하는 최소한의 필수 요건을 충족한 XML 문서입니다.

XML의 모든 구문을 허용하지만, DTD(document type definition)이나 스키마를 사용하지는 않습니다.

(HTML 문서와 달리) XML 문서는 오류가 발생하면, 해당 응용 프로그램의 모든 동작을 중지시킵니다.

well-formed XML 문서가 되기 위한 필수 요건은 아래와 같습니다.

     1) 루트(root) 요소를 하나만 가져야 합니다.

     2) 모든 XML 요소는 종료 태그를 가져야 합니다.

     3) 시작 태그와 종료 태그에 사용된 태그 이름이 대소문자까지 완벽하게 일치해야 합니다.

     4) 모든 XML 요소의 여닫는 순서가 반드시 정확하게 지켜져야 합니다.

     5) 모든 속성의 속성값이 따옴표로 둘러싸여 있어야 합니다.

 

2. 유효한(valid) XML 문서

well-formed XML 문서보다 더 엄격하게 검증한 문서입니다.

그러므로 당연히 well-formed XML 문서이며, DTD를 가지고 있습니다.

DTD는 XML 문서의 구조 및 해당 문서에서 사용할 수 있는 적법한 요소와 속성을 정의합니다.

XML에서 사용하는 DTD에는 다음과 같이 두 가지 종류가 있습니다.

     1) DTD : 일반적인 문서 타입 정의 (document type definition)

     2) XML 스키마 (XSD)

 

 

XML 파서(parser)?

응용 프로그램이 XML 문서를 읽을 수 있도록 인터페이스를 제공해주는 라이브러리(library)나 패키지(package)를 의미합니다.

XML 파서는 XML 문서가 적합한 형식을 갖추고 있는지와 문법상의 오류는 없는지를 검사합니다.

현재 대부분의 주요 웹 브라우저는 모두 XML 파서를 내장하고 있습니다.

XML 파서의 최종 목적은 XML 문서를 응용 프로그램이 읽을 수 있는 코드로 변환하는 것입니다.

ex) Java built-in parser / MSXML(Microsoft Core XML Services) / System.Xml.XmlDocument / Saxon / Xerces

 

 

[참고]

https://ko.wikipedia.org/wiki/%EB%A7%88%ED%81%AC%EC%97%85_%EC%96%B8%EC%96%B4

https://namu.wiki/w/%EB%A7%88%ED%81%AC%EC%97%85%20%EC%96%B8%EC%96%B4

http://tcpschool.com/xml/xml_intro_basic

'IT > 기본개념' 카테고리의 다른 글

틀렸던 문제를 정리해보자~  (0) 2020.10.14