캐노니컬 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의 범위를 벗어난다.

같이 보기[편집]

외부 링크[편집]