Overview
XML은 사람이 읽을 수 있으면서 기계도 파싱할 수 있는 문서 인코딩 규칙을 정의하는 마크업 언어입니다. 구조와 자기 기술성에 초점을 맞춰 데이터를 전달하도록 설계되었습니다.
XML은 한때 데이터 교환, 설정, 웹 서비스에서 지배적인 형식이었습니다. 웹 API에서는 JSON에 자리를 내주었지만, 엔터프라이즈 시스템, 문서 형식(OOXML, ODF, SVG), 엄격한 데이터 검증이 필요한 산업에서는 여전히 필수적입니다.
History
XML은 W3C에서 개발되어 1998년 2월 권고안으로 공개되었습니다. 보다 단순하고 실용적인 SGML 부분 집합을 만든다는 목표에서 출발했습니다.
XML 1.0은 여러 차례 개정을 거쳐 2008년 5차 에디션이 발행되었고, XML 1.1은 추가 유니코드 문자를 지원하기 위해 2004년 발표되었습니다. XML 생태계에는 XPath, XSLT, XQuery, XML Schema(XSD) 등 수많은 관련 사양이 포함됩니다.
Technical Details
XML 문서는 프롤로그(선택적 XML 선언 및 DTD), 요소(중첩된 태그), 속성, 텍스트 콘텐츠, CDATA 섹션, 처리 명령, 주석으로 구성됩니다. 모든 XML 문서는 올바르게 중첩된 태그, 단일 루트 요소, 따옴표로 감싼 속성 값이라는 정형성(well-formedness) 조건을 충족해야 합니다.
유효성 검사는 DTD(Document Type Definition), XML Schema(XSD), RelaxNG, Schematron으로 수행할 수 있습니다. 네임스페이스를 사용하면 서로 다른 스키마의 어휘를 하나의 문서에서 혼합할 수 있습니다.
XML은 유니코드를 기본 지원하며, 특수 문자는 문자 참조로 처리합니다. 문서 파싱은 DOM(전체 트리), SAX(이벤트 기반), StAX(풀 기반) 또는 스트리밍 방식으로 가능합니다.
Pros & Cons
Pros
- 엄격한 구조 규칙을 갖춘 자기 기술적 형식
- 강력한 스키마 검증 (XSD, RelaxNG)
- 풍부한 생태계 (XPath, XSLT, XQuery)
- 서로 다른 어휘를 혼합할 수 있는 우수한 네임스페이스 지원
- 엔터프라이즈 통합의 확립된 표준
Cons
- JSON이나 YAML에 비해 장황한 문법
- 파싱이 무겁고 전송 속도가 느림
- 학습 곡선이 가파른 복잡한 스키마 언어
- 단순한 데이터 교환 작업에는 과도한 스펙
Common Use Cases
- 엔터프라이즈 통합 (SOAP, EDI, HL7)
- 문서 형식 (DOCX, SVG, XHTML, RSS, Atom)
- 설정 파일 (Maven pom.xml, Android 매니페스트)
- 스키마 검증이 필요한 데이터 직렬화
- 출판 및 콘텐츠 관리 (DITA, DocBook)