최종 업데이트: 2025년 3월 25일

제목 - XML이란 무엇인가: 포괄적인 가이드

XML이란 무엇인가?

XML(Extensible Markup Language)은 데이터를 저장, 전송 및 재구성하는 데 사용되는 마크업 언어 및 파일 형식입니다. 정보 인코딩에 구조화된 접근 방식을 제공하여 사람이 읽을 수 있고 기계가 읽을 수 있습니다.

XML의 주요 특징

1. 오픈 스탠다드에 의해 정의됨

  • 1998년 **월드 와이드 웹 컨소시엄(W3C)**에 의해 XML 1.0 사양에 따라 수립되었습니다.
  • 데이터가 구조화되어 있으며 해석하기 쉽도록 엄격한 규칙을 따릅니다.

2. 설계 목표

  • XML은 단순성, 범용성, 사용성을 목표로 설계되었습니다.
  • 텍스트 기반 형식을 사용하여 읽고 편집하기 쉽습니다.

3. 유니코드 지원

  • XML은 유니코드를 지원하여 여러 언어의 텍스트를 저장하고 처리할 수 있습니다.

4. 다재다능성

  • 처음에는 문서를 위해 만들어졌으나, XML은 현재 다양한 도메인에서 웹 서비스, API, 설정 파일 등 데이터 표현에 광범위하게 사용됩니다.

5. 스키마 및 API

  • XML 구조는 문서 유형 정의(DTD), XML 스키마(XSD) 또는 Relax NG를 사용하여 정의할 수 있습니다.
  • DOM(Document Object Model) 및 **SAX(Simple API for XML)**와 같은 다양한 API가 XML 처리를 가능하게 합니다.

6. XML의 일반적인 사용

  • 다른 시스템 간 데이터 교환 (예: 웹 서비스, API).
  • 소프트웨어 응용 프로그램에서의 설정 파일.
  • 구조화된 정보 저장 (예: RSS 피드, SVG 그래픽, DOCX와 같은 문서 형식).
  • 웹 개발 (예: XHTML, SOAP, AJAX 기반 응용 프로그램).

XML 개요

1. XML의 주요 목적: 직렬화

XML의 직렬화는:

  • 구조화된 형식으로 데이터 저장.
  • 다양한 시스템 간 데이터 전송.
  • 사용 가능한 형식으로 데이터 재구성.

두 시스템이 정보를 교환해야 할 때, XML은 상호 운용성을 위한 표준화된 파일 형식을 제공합니다. 그것은 구조화된 데이터 교환을 위한 **“링구아 프랑카”**로 작용합니다.

2. 마크업 언어로서의 XML

XML은 마크업 언어로써:

  • 데이터를 태그로 레이블링하여 명확한 구조 제공합니다.
  • 정보를 계층적으로 조직합니다.
  • 데이터를 메타데이터로 분류합니다.

예:

<book>
    <title>XML Basics</title>
    <author>John Doe</author>
</book>

여기서 <book>, <title>, 및 <author>는 데이터 요소를 정의하는 태그입니다.

3. XML 스키마(XSD)와 검증

**XML 스키마(XSD)**는 XML 문서의 구조적 규칙을 정의합니다.

XML 문서는:

  • 잘 형성됨 → 기본 구문 규칙을 따름(올바른 중첩, 적절한 닫는 태그).
  • 유효함 → 스키마 규칙을 따름(필수 요소, 올바른 데이터 유형).

XSD 규칙 예:

<xs:element name="title" type="xs:string"/>

이것은 <title>이 반드시 문자열 값을 포함해야 함을 보장합니다.

4. XML 미디어 타입 (RFC 7303)

IETF RFC 7303는 데이터 전송을 위한 XML 미디어 유형을 정의합니다:

  • application/xml → 표준 XML 데이터.
  • application/xml-external-parsed-entity → 파싱된 XML 엔티티.
  • application/xml-dtd → XML DTD 문서.

XML 기반 형식의 경우 +xml 접미사를 사용합니다 (예: SVG 이미지에 대한 image/svg+xml).

5. 네트워크 응용 프로그램의 XML (RFC 3470 / IETF BCP 70)

**IETF BCP 70 (RFC 3470)**는 네트워크 기반 응용 프로그램에서 XML 사용을 위한 모범 사례를 설명하여 시스템 간의 데이터 상호 운용성을 보장합니다.


1. XML의 응용

XML은 인터넷을 통한 데이터 교환을 위해 설계된 유연한 마크업 언어입니다. 그 구문은 다양한 문서 형식과 통신 프로토콜에 영향을 미치며, 많은 산업에서 기초 기술로 자리 잡고 있습니다.

일반적인 XML 기반 형식:

  • 웹 피드: RSS, Atom
  • 오피스 문서: Office Open XML, OpenDocument
  • 그래픽 및 3D 모델: SVG, COLLADA
  • 웹 기술: XHTML
  • 데이터 교환 프로토콜: SOAP, XMPP
  • AJAX: 비동기 데이터 교환을 위해 XML 사용

XML을 사용하는 산업 표준:

  • 의료: HL7 (Health Level 7)
  • 여행 산업: OpenTravel Alliance
  • 금융: FpML (금융 제품 마크업 언어)
  • 부동산 및 모기지: MISMO
  • 정부 데이터 교환: National Information Exchange Model

과학에서의 XML:

기상학에서 XML은 IWXXM 표준을 따르는 운영 기상 데이터 표현에 사용됩니다. 유사하게, **Darwin Information Typing Architecture (DITA)**는 출판 업계에서 널리 사용되는 XML 표준입니다.


2. XML의 핵심 용어

XML 문서를 효과적으로 다루기 위해서는 XML의 핵심 용어를 이해하는 것이 중요합니다.

문자

XML 문서는 유니코드 문자의 시퀀스입니다. XML 1.1은 거의 모든 유니코드 문자를 허용하지만, **Null 문자 (U+0000)**는 엄격히 금지됩니다.

프로세서와 애플리케이션

  • **XML 프로세서 (또는 파서)**는 XML 마크업을 읽고 분석합니다.
  • 애플리케이션은 프로세서로부터 구조화된 데이터를 받아 작업을 수행합니다.

마크업과 콘텐츠

XML은 문자를 마크업과 콘텐츠로 나눕니다:

  • 마크업: 요소, 속성 및 엔티티를 포함합니다 (예: <tag>&amp;).
  • 콘텐츠: 요소 내의 실제 데이터.
  • CDATA 섹션: 마크업으로 파싱되지 않아야 할 텍스트는 <![CDATA[ ... ]]>로 둘러쌉니다.

태그와 요소

  • 태그: < >로 둘러싸인 마크업 구성입니다.
    • <section> (시작 태그)
    • </section> (종료 태그)
    • <line-break /> (빈 요소 태그)
  • 요소: 태그에 의해 정의된 논리적 구성 요소입니다.
    • 예: <greeting>Hello, world!</greeting>

속성

속성은 요소에 대해 메타데이터를 제공하며 이름-값 쌍을 사용합니다. 예:

<img src="image.jpg" alt="Description" />
  • src="image.jpg"alt="Description"<img> 요소의 속성입니다.

3. XML에서의 문자 및 이스케이핑

XML의 허용 유니코드 문자

XML 문서는 적절한 파싱을 위해 특정 유니코드 문자만 허용합니다.

XML 1.0에서 허용되는 문자:

  • 제어 문자:
    • U+0009 (탭)
    • U+000A (라인 피드)
    • U+000D (캐리지 리턴)
  • 텍스트 문자:
    • U+0020–U+D7FF
    • U+E000–U+FFFD
    • U+10000–U+10FFFF

XML 1.1 개선 사항:

  • 모든 U+0001–U+001F 제어 문자를 허용하지만 이스케이핑해야 합니다.
  • U+0000(Null 문자)는 여전히 금지됩니다.

4. XML에서의 인코딩

일반적인 XML 인코딩:

XML은 유니코드 기반 인코딩을 지원하며, 포함:

  • UTF-8 (권장 기본값)
  • UTF-16 (모든 XML 파서에서 지원해야 함)
  • ASCII, ISO-8859-X (레거시 인코딩)

XML에서의 인코딩 선언:

XML 헤더에서 인코딩을 지정할 수 있습니다:

<?xml version="1.0" encoding="UTF-8"?>
  • 인코딩이 지정되지 않으면 UTF-8이 기본으로 사용됩니다.
  • UTF-16은 올바른 감지를 위해 BOM(Byte Order Mark)이 필요합니다.

5. XML에서 특수 문자 이스케이프

XML 구문은 특정 문자를 예약하므로 충돌을 피하기 위해 이스케이프 처리해야 합니다.

사전 정의된 XML 엔티티:

문자이스케이프 형태
< (작다)&lt;I &lt;3 XMLI <3 XML
> (크다)&gt;x &gt; yx > y
& (앰퍼샌드)&amp;AT&amp;TAT&T
' (작은 따옴표)&apos;"O&apos;Reilly"O’Reilly
" (큰 따옴표)&quot;She said &quot;hello&quot;She said “hello”

숫자 문자 참조:

입력할 수 없는 특수 문자의 경우, 숫자 참조를 사용하십시오:

  • 십진수:
    &#20013;  <!-- 중국어 문자 "中" -->
    
  • 16진수:
    &#x4E2D;  <!-- 중국어 문자 "中" -->
    
  • 예:
    <message>I &lt;3 J&#xF6;rg</message>
    
    표시 결과: I <3 Jörg

이진 데이터 처리:

XML은 원시 이진 데이터를 지원하지 않습니다. 대신 Base64 인코딩을 사용하십시오.


6. XML에서의 주석

XML 주석 구문:

<!-- 이 주석은 유효한 XML 주석입니다 -->

XML 주석에 대한 규칙:

  • XML 선언 앞에 주석이 나타날 수 없습니다.
  • 주석 안에 -- (더블 하이픈)을 포함할 수 없습니다.
  • 주석에서는 엔티티 참조가 무시됩니다.

예:

<!-- < 및 & 기호가 있는 주석입니다 -->

결론

XML은 웹 피드, 오피스 문서, 과학 데이터, 산업 표준을 가능케 하는 구조화된 데이터 교환의 필수 기술입니다. 주요 XML 용어, 인코딩 규칙, 이스케이프 메커니즘을 이해하면 다양한 시스템에서 제대로 작동하는 잘 형성된 XML 문서를 보장할 수 있습니다.

문자 인코딩 및 이스케이핑의 모범 사례를 따르면, 개발자는 파싱 오류를 피하고 XML 기반 응용 프로그램의 호환성을 보장할 수 있습니다.