2010-03-10 4 views
2

xml-schema와 namespace를 사용하여 xml 문서의 유효성을 검사 할 때 인스턴스 문서의 전역 요소 접두어는 네임 스페이스 자체를 선언하는 것 외에 네임 스페이스를 정규화해야합니다.인스턴스 문서에서 전역 요소를 정규화해야하는 이유는 무엇입니까?

이 경우 요소를 한정하기 위해 기본 네임 스페이스로 충분할 것이라고 생각하지만 xml-Schema에는 분명히 다른 의견이 있습니다.

왜 그럴까요? xml-schema가 처리 할 수없는 기본 네임 스페이스는 무엇입니까?

답변

1

저는 카멜레온 네임 스페이스를 지원하고 카멜레온 구성 요소의 이름 충돌을 피하기 위해 설계된 것 같습니다. 그 말은 기본적으로 카멜레온 디자인을 기본으로하는 namsepace를 제공하지 않음을 의미합니다. 그러나 targetNamspace를 기본 namspace로 제공하지 않으면 문제와 오류가 발생합니다.

참고 : 일부 콘텐츠 XFront.com 집합 여기

이 규칙은 일반적으로있는 스키마 디자인 가이드 라인의 설정 개발

A로부터 발췌 : 노 네임 스페이스 스키마를 제외하고 , 모든 XML 스키마는 적어도 두 개의 네임 스페이스, 즉 targetNamespace와 XMLSchema 네임 스페이스를 사용합니다.

  1. 가 된 XMLSchema 기본 네임 스페이스 확인하고 명시 적으로 targetNamespace를 구성 요소에 대한 모든 참조 자격 :이 두 네임 스페이스 처리에 관해서는, 당신의 스키마를 설계하는 방법은 세 가지가 있습니다.

  2. 반대로 targetNamespace를 기본 네임 스페이스로 만들고 XMLSchema 네임 스페이스에서 모든 구성 요소를 명시 적으로 한정합니다.

  3. 기본 네임 스페이스를 사용하지 마십시오. targetNamespace의 구성 요소에 대한 참조를 명시 적으로 한정하고 XMLSchema 네임 스페이스의 모든 구성 요소를 명시 적으로 한정합니다.

실제로 어떤 접근 방식이 올바른지에 대한 모범 사례는 없습니다. 주로 디자이너에게 달려 있습니다. - 스키마 (스키마, 요소, complexType, 시퀀스 등)를 구성하는 데 사용되는 구성 요소를 한정하는 것은 일반적으로 한정자가 항상 동일하기 때문에 일반적으로 혼란의 원인이되지 않습니다. . 즉, 사람들은 xsd : schema, xsd : element 등을 보는데 익숙해집니다.

  • 반면에 targetNamespaces는 스키마간에 크게 다를 수 있습니다. 결과적으로 생성 할 수있는 네임 스페이스 접두어는 매우 다양 할 수 있습니다. 예 : lib : Book, boston : 지하철. 이 가변성은 때때로 혼란의 원인이되기도합니다.

이 질문에 대한 답변입니다.

+0

Nica answer Joe. 이것이 (Oskar에 의한) 올바른 것으로 승인되면 화요일에 현상금을 받게됩니다. 나는 떠나서 4 일 동안 인터넷에서 연결을 끊을 것이다. BR - –

관련 문제