캐노니컬 XML

캐노니컬 XML(Canonical XML)은 XML 문서 쌍의 동등성을 상대적으로 간단하게 비교할 수 있도록 고안된 XML의 표준 형식이다. 이를 위해 캐노니컬 XML 변환은 문서 간의 의미 없는 차이점을 제거한다. 모든 XML 문서는 캐노니컬 XML로 변환될 수 있다.

예를 들어, XML은 시작 태그 내의 다양한 지점에 공백이 발생하는 것을 허용하고 속성이 임의의 순서로 지정되도록 허용한다. 이러한 차이는 의미를 전달하는 데 거의 사용되지 않으므로 일반적으로 다음 형식은 동일한 것으로 간주된다.

    <p class="a" secure="1">

    <p     secure   = "1"
              class='a'   >

임의의 XML 문서를 캐노니컬 XML로 변환할 때 속성은 규범적인 순서(이름순 알파벳순)와 규범적인 간격 및 인용으로 인코딩된다(단, 모든 네임스페이스 선언은 일반 속성보다 앞에 배치되고 네임스페이스 속성은 접두사가 아닌 네임스페이스를 기준으로 정렬됨). 따라서 위의 두 번째 형식은 첫 번째 형식으로 변환된다.

캐노니컬 XML은 기타 여러 세부 정보를 지정하며 그 중 일부는 다음과 같다.

 UTF-8 인코딩이 사용된다.
 줄 끝은 개행 문자 0x0A를 사용하여 표현된다.
 속성 값의 공백은 정규화되었다.
 엔터티 참조 및 비특수 문자 참조가 확장된다.
 CDATA 섹션은 해당 문자 콘텐츠로 대체된다.
 빈 요소는 특별한 빈 요소 구문을 사용하지 않고 시작/끝 쌍으로 인코딩된다.
 기본 속성은 명시적으로 지정된다.
 불필요한 네임스페이스 선언은 삭제된다.

W3C에 따르면 두 개의 XML 문서가 동일한 표준 형식을 갖는 경우 두 문서는 주어진 애플리케이션 컨텍스트 내에서 논리적으로 동일하다(몇 가지 특이한 경우에 대한 제한 제외).

그러나 특별한 상황에서 사용자는 정식 XML과 관련된 일반적인 논리적 동등성 이상의 특별한 의미에 관심을 가질 수 있다. 예를 들어 스테가노그래피 시스템은 공백, 속성 인용 및 순서, 16진수 대 10진수 문자 참조 사용 등을 변경하여 XML 문서의 정보를 숨길 수 있다. 분명히 그러한 파일을 캐노니컬 XML로 변환하면 이러한 특수한 의미가 손실된다. 반면에 대문자와 소문자 사용이 다르거나 고대 철자와 현대 철자를 사용하는 등의 XML 파일은 특정 목적에 대해 동등한 것으로 간주될 수 있다. 이러한 컨텍스트는 캐노니컬 XML의 범위를 벗어난다.

 같이 보기 
 XML 서명

 외부 링크 
 W3C Recommendation, Canonical XML Version 1.0, 15 March 2001
 W3C Recommendation, Exclusive XML Canonicalization Version 1.0, 18 July 2002

분류:암호 표준
분류:XML 기반 표준