위키득계정 ↗
기술

XML

전체 이름
Extensible Markup Language
주요 구성
요소, 속성, 텍스트
대표 특성
계층 구조와 확장 가능한 어휘
표준화 주체
W3C
관련 개념
이름공간과 스키마
XML은 요소와 속성으로 계층적인 문서와 데이터를 표현하는 마크업 언어다. 사용자가 어휘를 정의할 수 있으며 문법적으로 올바른 문서인지와 스키마에 맞는지는 별도로 검사한다.

이름을 정해 구조를 표현하기

XML에서는 목적에 맞는 요소 이름을 정해 데이터를 중첩할 수 있다. 시작과 종료 태그가 대응하고 요소가 올바르게 포함되어야 하는 등 문법 규칙이 있다.

이름을 자유롭게 정할 수 있다고 아무 문법이나 허용되는 것은 아니다. 문서의 계층과 속성 값, 특수 문자의 표현에는 일관된 규칙이 필요하다.

문법과 스키마

문법에 맞는 XML은 well-formed라고 부른다. 여기에 특정 스키마가 요구하는 요소 순서와 타입, 필수 값까지 만족하는지는 별도의 유효성 문제다.

파싱이 된다는 사실만으로 발주서나 설정 파일의 의미까지 올바르다고 판단할 수 없다. 사용하는 어휘와 응용 규칙을 함께 확인해야 한다.

이름공간이 필요한 이유

서로 다른 문서 체계에서 같은 요소 이름을 사용할 수 있다. 이름공간은 이름이 어떤 어휘에 속하는지 구별하는 데 쓰인다. 접두사가 같아 보이는지만으로 의미가 같다고 할 수는 없다.

이름공간 식별자는 이름을 구분하는 역할을 하며, 그 주소를 열었을 때 반드시 사용 설명서나 파일이 내려와야 하는 것은 아니다. 식별과 조회를 구분해야 한다.

파서 설정과 데이터 교환

XML에는 엔터티 등 다양한 기능이 있다. 신뢰하지 않는 문서를 처리할 때 외부 자원 참조와 과도한 확장을 제한하지 않으면 의도하지 않은 접근과 자원 소비가 생길 수 있다.

JSON과 XML 중 어느 것이 항상 더 낫다는 결론은 없다. 혼합 문서 구조와 이름공간, 사용하는 도구와 교환 규칙 등 요구 조건에 따라 선택한다.

관련 문서

HTML / JSON / API