이름을 정해 구조를 표현하기
XML에서는 목적에 맞는 요소 이름을 정해 데이터를 중첩할 수 있다. 시작과 종료 태그가 대응하고 요소가 올바르게 포함되어야 하는 등 문법 규칙이 있다.
이름을 자유롭게 정할 수 있다고 아무 문법이나 허용되는 것은 아니다. 문서의 계층과 속성 값, 특수 문자의 표현에는 일관된 규칙이 필요하다.
문법과 스키마
문법에 맞는 XML은 well-formed라고 부른다. 여기에 특정 스키마가 요구하는 요소 순서와 타입, 필수 값까지 만족하는지는 별도의 유효성 문제다.
파싱이 된다는 사실만으로 발주서나 설정 파일의 의미까지 올바르다고 판단할 수 없다. 사용하는 어휘와 응용 규칙을 함께 확인해야 한다.
이름공간이 필요한 이유
서로 다른 문서 체계에서 같은 요소 이름을 사용할 수 있다. 이름공간은 이름이 어떤 어휘에 속하는지 구별하는 데 쓰인다. 접두사가 같아 보이는지만으로 의미가 같다고 할 수는 없다.
이름공간 식별자는 이름을 구분하는 역할을 하며, 그 주소를 열었을 때 반드시 사용 설명서나 파일이 내려와야 하는 것은 아니다. 식별과 조회를 구분해야 한다.
파서 설정과 데이터 교환
XML에는 엔터티 등 다양한 기능이 있다. 신뢰하지 않는 문서를 처리할 때 외부 자원 참조와 과도한 확장을 제한하지 않으면 의도하지 않은 접근과 자원 소비가 생길 수 있다.
JSON과 XML 중 어느 것이 항상 더 낫다는 결론은 없다. 혼합 문서 구조와 이름공간, 사용하는 도구와 교환 규칙 등 요구 조건에 따라 선택한다.