표준 XML

Canonical XML

표준 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의 범위를 벗어난다.

참고 항목

외부 링크