XML

XML 은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어 입니다.
XML 은 eXtensible Markup Language 의 약자로, 수많은 응용 분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있습니다.

 

XML 이란?

XML 은 Extensible Markup Language 의 약자이며, 1998년 W3C 표준 권고안에 포함되었습니다.

XML 은 HTML 과 매우 비슷한 문자 기반의 마크업 언어입니다.

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

그러나 XML 은 HTML 처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌습니다.

또한, XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있습니다.

 

XML 의 특징과 목적

XML 은 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어로써, 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 해줍니다. 또한 XML 은 새로운 태그를 만들어 추가해도 계속해서 동작하므로, 확장성이 좋습니다.

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

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

하지만 XML 은 데이터를 텍스트 형식으로 저장하므로, 소프트웨어나 하드웨어에 독립적으로 데이터를 저장하고 전달할 수 있습니다. 따라서 XML 을 사용하면 새로운 운영체제나 프로그램, 브라우저 등에 상관없이 데이터를 안전하고 손쉽게 전달할 수 있습니다.

 

XML 의 구조

XML 문서는 HTML 문서와 마찬가지로 트리형태의 계층 구조를 가집니다.

이러한 XML 트리는 하나뿐인 루트(root) 요소로부터 시작하여, 각각의 자식(child) 요소에 차례대로 연결됩니다.

XML 트리 구조에 포함되는 모든 요소는 자신만의 자식(child) 요소를 가질 수 있습니다.

 

기본적인 XML 문서는 다음과 같이 구성됩니다.

<?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 version="1.0" encoding="UTF-8"?>

 

그 다음에는 XML 문서에 단 하나만 존재하는 루트 요소를 생성합니다.

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

 

위의 예제에서 루트 요소는 자식(child) 요소로 두개의 <food> 요소를 가집니다.

<food>

    <name>귤</name>

    <sort>과일</sort>

    <cost>3000</cost>

</food>

...

 

위에서 살펴본 XML 문서는 상점에서 판매하는 식품에 관한 정보를 담고 있는 문서임을 명확하게 알 수 있습니다.

이처럼 XML 문서에서 요소의 이름은 저장하고 있는 데이터의 내용을 명확하게 알려줍니다.

따라서 요소의 이름만으로도 데이터의 내용을 짐작할 수 있습니다.

 

XML 문법

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

이것을 XML 프롤로그 라고 하며, 이때 사용되는 <xml> 태그의 이름은 소문자 xml 로만 사용해야 합니다.

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

 

version 속성은 XML 문서에 사용된 XML 의 버전을 명시합니다.

encoding 속성은 XML 문서의 문자셋을 명시하며, 기본값은 UTF-8 입니다.

standalone 속성은 외부 소스의 데이터에 의존하고 있는 문서인지 아닌지를 XML 파서에 알려주는 역할을 합니다.

 

XML 문서는 매우 규칙적이고 예측할 수 있는 구조로 되어있습니다.

 

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

2.  XML 태그는 대소문자를 구분합니다.

3. XML 에서는 시작 태그와 종료 태그가 모두 대소문자까지 같아야 합니다.

4. XML 태그의 여닫는 순서는 반드시 지켜져야 합니다.

5. XML 에서 속성값은 반드시 따옴표로 감싸야 합니다.

6. XML 에서는 띄어쓰기를 인식합니다.

 

주의해야할 XML Entity

XML 에서는 예약되어 있는 다섯 개의 특별한 기호가 있습니다.

이렇게 예약되어 있는 기호를 XML 문서에서 사용하면 XML 파서는 그것을 전혀 다른 의미로 해석합니다.

따라서 이렇게 예약된 기호를 기존에 사용하던 의미 그대로 사용하기 위해서 만든 문자셋을 엔티티라고 합니다.

 

HTML 에서는 수많은 문자와 기호를 엔티티로 미리 정의해 놓고 사용하고 있습니다.

하지만 XML 에서는 제공하는 엔티티는 다섯 개뿐입니다.

 

 

XML 속성

XML 속성은 XML 요소에 대한 추가적인 정보를 제공해주며, 해당 요소의 특징을 정의합니다.

XMl 속성은 다음과 같은 문법으로 사용하여 정의할 수 있습니다.

<요소이름 속성1="속성값" 속성2="속성값"... >

 

요소와 속성의 차이점

예제 1
<student>

    <name>홍길동</name>

    <year>3</year>

    <major>컴퓨터공학</major>

</student>

 

예제 2
<student name="홍길동">

    <year>3</year>

    <major>컴퓨터공학</major>

</student>

 

위의 두 예제에서 이름이라는 데이터를 하나는 XML 요소로, 하나는 XML 속성으로 표한하고 있습니다.

 

결과적으로 이 두 예제는 완전히 같은 정보를 제공합니다.

정보의 전달이라는 측면에서 보면 XML 요소로 표현하는 방법과 XML 속성으로 표현하는 방법에 큰 차이는 없습니다.

 

하지만 속성은 여러개의 값을 가질 수 없으며, 요소처럼 손쉽게 확장할 수 없다는 단점을 가집니다.

또한, 속성은 XML 트리에 포함되지 않기 때문에 다양한 용도로 활용할 수가 없습니다.

 

 

'CS' 카테고리의 다른 글

Tomcat 이란  (2) 2025.01.03
Base64, Blob  (0) 2024.11.29
DLL 이란  (1) 2024.11.07
Docker 실습  (0) 2024.10.28
Docker  (1) 2024.10.26