XML이란?

  • xml은 데이터 공유를 목적으로 제작된 Markup Language이다.
  • html처럼 태그 단위로 이루어져 가독성이 좋다.
  • W3C에 의해서 개발되었다.

XML의 특징

  1. 다른 목적의 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어이다.
  2. 서로 다른 시스템끼리 다양한 종류의 데이터를 손쉽게 교환할 수 있도록 도와준다.
  3. 계속해서 새로운 태그를 만들고 확장해도 잘 동작하므로 확장성이 좋다.
  4. 데이터를 보여주지 않고, 데이터를 전달하고 저장하는 것만을 목적으로 한다.
  5. XML은 텍스트 데이터 형식의 언어로 모든 XML 문서는 유니코드 문자로만 이루어진다.

XML의 목적

1. XML은 인터넷상에서 명확하게 사용할 수 있어야 합니다.

2. XML은 다양한 응용 프로그램을 지원해야 합니다.

3. XML은 SGML과 호환되어야 합니다.

4. XML 문서를 처리하는 프로그램은 손쉽게 작성될 수 있어야 합니다.

5. XML에서 제공하는 옵션의 수는 최소한으로 유지되어야 합니다.

6. XML 문서는 인간이 읽을 수 있어야 하며, 의미가 명확해야 합니다.

7. XML의 설계는 빠르게 이루어져야 합니다.

8. XML의 설계는 공식적이면서 간결해야 합니다.

9. XML 문서는 작성하기 쉬워야 합니다.

10. XML 마크업의 간결성은 그다지 중요하지 않습니다

W3C에 의하면 기존엔 위와 같은 목적을 가지고 설계 되었다. (읽으면 좋긴 한데 굳이 전부 읽을 필요는 없다.)

위 내용을 요약하면

XML은 데이터를 텍스트 형식으로 저장하기 떄문에 운영체제, 프로그램, 브라우저에 제약 없이 데이터를 독립적이고 안전하게 전달 할 수 있다.

XML 트리(Tree)

XML은 트리(Tree) 형태의 계층 구조를 가진다.

위 그림은 XML 트리 구조를 설명하고 있다.

기본적으로 Root 요소를 기준으로 가지 처럼 뻗어 나간다.
특정 요소 아래에 있는 요소를 자식(Child) 요소라고 부르고

자식 요소 바로 위에 있는 요소를 부모(peent) 요소라고 부른다.
부모 요소는 여러개의 자식 요소를 가질 수 있다.

하지만 자식 요소는 단 하나의 부모(parent) 요소만을 가진다.

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="XML문서버전" encoding="문자셋">
 
<?xml version="1.0" encoding="UTF-8"?>

<xml> 태그의 속성은 다음과 같다.

  • version : XML 문서에 사용된 XML의 버전
  • encoding : XML 문서의 문자셋을 명시 (기본값 : UTF-8)

그 다음엔 XML 문서에 단 하나만 존재하는 루트(root) 요소를 생성한다.

이 루트 요소는 모든 요소의 조상(ancestoir) 요소가 된다

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

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

<?xml version="1.0" encoding="UTF-8"?>
​<shop city="서울" type="마트">
    <food>
		...
    </food>
    <food>
		...
    </food>
</shop>

여기서 <food>요소는 각각 <name>, <sort>, <cost>를 자식 요소로 가집니다.

XML 문서는 위 예시처럼 각각의 요소들에 무슨 정보를 저장하는지 한 눈에 알 수 있습니다.

XML 문법

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

html에서는 종종 종료 태그를 생략하거나, 빈 태그를 사용해도 문제가 생기지 않는다.

하지만 XML은 종료 태그를 생략하면 오류가 발생함

단일 태그 사용시에도 반드시 / (슬래시)를 사용한 self-closing(스스로 닫기)를 해야만 오류가 발생하지 않음

<!-- HTML에서는 가능하지만 XML에선 불가능함-->
<h1>XML
<hr>
 
<!-- 옳바른 XML 작성법 -->
<h1>XML</h1>
<hr />
 

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

html에서 태그는 대소문자를 구분하지 않지만

XML에서는 대소문자를 구분한다.

<lecture>이 요소는 lecture 요소입니다.</lecture>
<!-- 위와 아래는 서로 다른 요소 -->
<Lecture>이 요소는 Lecture 요소입니다.</Lecture>

3. XML 태그의 여닫는 순서는 반드시 지켜져야 한다.

<p><strong>이 구문은 오류를 발생합니다.</p></strong>
 
<p><strong>이 구문이 정확한 순서입니다.</strong></p>

자식 요소의 태그가 닫히지 않았는데, 부모 요소의 태그를 닫아버린다면 에러가 발생한다.

4. XML에서 속성값은 반드시 따옴표(“)로 감싸야한다.

HTML에선 속성값을 따옴표로 감싸지 않아도 큰 문제가 발생하지 않는다.

하지만 XML에서는 속성값을 따옴표로 감싸지 않으면 에러가 발생한다.

<student name=홍길동>   <!--오류가 발생함-->
<student name="이순신"> <!--정상적으로 동작함.-->

5. XML에서는 띄어쓰기를 인식한다.

HTML에서는 태그 안에서 띄어쓰기를 해도 인식이 안되지만

XML에서는 띄어쓰기가 그대로 들어간다.

<!--html의 경우-->
<h1>띄 어 쓰 기<h1/>
<!--결과 : 띄어쓰기-->
 
<!--XML의 경우-->
<text>띄 어 쓰 기<text/>
<!--결과 : 띄 어 쓰 기-->

XML 엔티티(Entity)

XML에는 예약되어 있는 다섯 가지 기호가 존재합니다.

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

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

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

기호엔티티 이름16진수 엔티티설명
<&lt;&#60;보다 작은
>&gt;&#62;보다 큰
&&amp;&#38;and 기호
”&quot;&#34;큰따옴표
’&apos;&#39;작은따옴표

참고 자료:

📑 XML 기초 문법 정리

XML 기초 - TCP School

XML이란 무엇일까요? - AWS