XML의 뜻
XML은 Extensible Markup Language의 약자입니다. 1998년 W3C 권고안이 되었으며, 사용자가 직접 이름을 붙인 태그로 데이터를 기술합니다 – 이것이 바로 “확장 가능(extensible)”의 의미입니다. HTML과 달리 XML에는 미리 정해진 태그가 없습니다. 상품 카탈로그라면 <product>, <price> 태그를, 인보이스라면 <item>, <total> 태그를 쓸 수 있습니다.
아주 작은 XML 문서는 다음과 같습니다: <book id="1"><title>XML Basics</title><year>2026</year></book>. XML은 일반 텍스트라서 사람이 읽을 수 있고 모든 프로그래밍 언어에서 처리할 수 있습니다. XML은 데이터를 저장하고 구조화할 뿐 스스로는 아무 일도 하지 않습니다. 데이터의 의미와 표시 방법은 프로그램이 결정합니다.
XML 문법 규칙
모든 XML 문서는 몇 가지 엄격한 규칙을 따라야 합니다. 이 규칙을 지킨 문서를 well-formed(올바른 형식의) 문서라고 합니다.
- 다른 모든 요소를 포함하는 루트 요소가 정확히 하나 있어야 합니다.
- 모든 요소는 닫혀야 합니다:
<name>…</name>형태 또는<br/>처럼 스스로 닫는 형태. - 요소는 올바르게 중첩되어야 합니다:
<b><i>…</i></b>형태는 되지만<b><i>…</b></i>형태는 안 됩니다. - 이름은 대소문자를 구분합니다:
<Item>요소와<item>요소는 서로 다른 요소입니다. - 속성 값은 항상 작은따옴표나 큰따옴표로 감쌉니다.
- 텍스트 안의
&,<문자는 각각&,<형태로 이스케이프합니다. - XML 선언(
<?xml version="1.0" encoding="UTF-8"?>)은 선택 사항이지만, 쓴다면 문서 맨 처음에 와야 합니다.
주석은 <!-- … --> 형태로 씁니다. XML 검증기는 이 모든 규칙을 순식간에 검사하고 오류가 있는 줄을 알려 줍니다.
요소와 속성
요소(element)는 시작 태그, 내용, 종료 태그로 이루어집니다: <price>19.90</price>. 요소에는 텍스트, 다른 요소 또는 둘 다 들어갈 수 있습니다. 속성(attribute)은 시작 태그 안에 있는 이름–값 쌍입니다: <price currency="EUR">.
| 요소 | 속성 | |
|---|---|---|
| 예시 | <color>red</color> | color="red" |
| 반복 가능 | 예 | 아니요, 요소당 한 번 |
| 하위 요소 포함 가능 | 예 | 아니요, 텍스트만 |
| 순서가 의미 있음 | 예 | 아니요 |
흔히 쓰는 관례: 데이터 자체와 반복되거나 구조를 가질 수 있는 정보는 요소로, ID·단위·유형 같은 메타데이터는 속성으로 표현합니다.
Well-formed XML과 Valid XML의 차이
Well-formed XML은 문법 규칙을 지킨 XML이며, 파서는 그렇지 않은 문서를 거부합니다. Valid(유효한) XML은 well-formed이면서, 어떤 요소와 속성을 어떤 순서와 데이터 형식으로 쓸 수 있는지 정의한 스키마와도 일치하는 XML입니다.
- DTD(Document Type Definition)는 XML 1.0에 내장된 원래의 스키마 언어입니다.
같은 엔티티를 선언할 수도 있습니다. - XSD(XML Schema Definition)는 그 자체가 XML로 작성되며 날짜, 소수 같은 데이터 형식을 지원합니다. CFDI, NF-e, UBL 같은 전자 인보이스 형식은 XSD 스키마를 공개합니다.
XML 네임스페이스
누구나 태그 이름을 만들 수 있기 때문에 서로 다른 어휘가 같은 이름을 쓸 수 있습니다 – 책의 제목 <title>, 사람의 직함 <title>처럼요. 네임스페이스는 이름을 URI에 연결해 둘을 구분합니다. xmlns:cfdi="http://www.sat.gob.mx/cfd/4" 선언은 cfdi 접두사를 정의하므로, <cfdi:Comprobante> 요소는 멕시코 CFDI 4.0 어휘에 속합니다. 접두사 없는 기본 네임스페이스(xmlns="…")는 그 안에서 접두사가 없는 모든 요소에 적용됩니다. URI는 식별자일 뿐이며, 그 주소에서 아무것도 내려받지 않습니다.
XML vs JSON vs HTML 차이
| XML | JSON | HTML | |
|---|---|---|---|
| 용도 | 구조화된 데이터와 문서의 저장·교환 | 데이터 교환, 특히 웹 API | 웹 페이지 표시 |
| 태그·키 이름 | 직접 정의 | 직접 정의 | HTML 표준으로 고정 |
| 데이터 형식 | 텍스트(스키마로 형식을 정의하지 않는 한) | 문자열, 숫자, 불리언, null, 배열, 객체 | 텍스트 |
| 속성 | 있음 | 없음 | 있음 |
| 주석 | 있음 | 없음 | 있음 |
| 스키마 | DTD, XSD | JSON Schema | – |
| 문법 오류 | 파서가 거부 | 파서가 거부 | 브라우저가 보정 |
JSON은 더 짧고 JavaScript 객체에 바로 대응되기 때문에 대부분의 웹 API가 JSON으로 옮겨 갔습니다. 반면 XML은 텍스트와 마크업이 섞인 문서, 네임스페이스가 필요한 데이터, 스키마로 엄격하게 검증해야 하는 데이터에서 여전히 강세입니다 – 세무 당국, 출판사, 오피스 파일 형식이 아직도 XML을 사용하는 이유입니다.
XML 파일이란? XML 파일 여는 방법
.xml 파일은 XML 문서가 담긴 일반 텍스트 파일로, 보통 UTF-8로 인코딩됩니다. 텍스트 파일이므로 어떤 텍스트 편집기로도 열 수 있습니다 – Windows의 메모장, Mac의 텍스트 편집기(TextEdit), 또는 VS Code 같은 코드 편집기. Chrome과 Firefox는 XML 파일을 브라우저 창으로 끌어다 놓으면 트리 형태로 보여 주며, 엑셀은 XML 데이터를 스프레드시트로 가져올 수 있습니다.
확장자가 .xml이 아니어도 XML을 쓰는 파일이 많습니다: .svg 이미지, .rss 피드, .xsd 스키마, .xsl 스타일시트, .NET의 .config 파일, 그리고 XML로 저장될 수 있는 macOS의 .plist 파일 등이 있습니다. 워드, 엑셀, 파워포인트 파일(.docx, .xlsx, .pptx)은 XML 파일이 가득 든 ZIP 압축 파일입니다.
XML 활용 사례
- 사이트맵:
sitemap.xml파일은 웹사이트에 어떤 페이지가 있는지 검색엔진에 알려 줍니다. - RSS·Atom 피드: 뉴스 사이트, 블로그, 팟캐스트가 업데이트를 XML로 게시합니다.
- SVG: 웹의 벡터 그래픽은 XML 문서입니다.
- 오피스 파일: Office Open XML(DOCX, XLSX, PPTX)과 OpenDocument(ODT, ODS)는 XML을 묶은 ZIP 패키지입니다.
- 전자 인보이스: 멕시코의 CFDI와 브라질의 NF-e는 디지털 서명과 승인을 거쳐야 법적 효력이 생기는 XML 파일이며, UBL은 유럽 등에서 쓰이는 Peppol 전자 인보이스의 기반이 되는 XML 형식입니다.
- SOAP 웹 서비스: 은행, 결제 대행사, 정부 시스템이 WSDL 파일로 정의된 XML 메시지를 주고받습니다.
- Android 앱: 레이아웃, 문자열 리소스,
AndroidManifest.xml파일이 XML로 작성됩니다. - 설정 파일: Maven의
pom.xml, .NET의web.config등 수많은 빌드·서버 설정이 XML을 사용합니다.
자주 묻는 질문
XML은 무엇의 약자인가요?
Extensible Markup Language(확장 가능한 마크업 언어)의 약자입니다. “Extensible(확장 가능)”은 태그를 직접 정의할 수 있다는 뜻이고, “Markup(마크업)”은 데이터를 태그로 감싸 구조를 표현한다는 뜻입니다.
XML은 프로그래밍 언어인가요?
아니요. XML은 데이터 형식입니다. 정보를 기술하고 구조화할 뿐 아무것도 계산할 수 없습니다. XPath, XSLT 같은 관련 기술로 XML을 조회하고 변환합니다.
XML은 지금도 쓰이나요?
네. 많은 웹 API에서 JSON이 XML을 대체했지만, 사이트맵, RSS 피드, SVG, 오피스 문서, Android 레이아웃, SOAP 서비스, 그리고 여러 나라의 전자 인보이스에서는 여전히 XML이 표준입니다.
최종 업데이트: