2013-02-05 2 views
0

나는 XML - 네임 스페이스에 관한 개념적인 질문이 있습니다 :구분 기호 - 네임 스페이스의 상대 가져 오기

fileA.xsd 
folder/ 
    fileB.xsd 

과 두의 각 : 나는 폴더 계층 구조에 두 개의 서로 다른 XSD - 파일이있는 경우

이 fileA.xsd에서

targetNamespace="http://www.anurlofmine.com/myproject/A" 

및 fileB.xsd에 ㄱ 것이 될 것이라고 : 파일, 나는에 targetNamespace 속성에 의해 별도의 네임 스페이스를 정의 e :

targetNamespace="http://www.anurlofmine.com/myproject/folder/B" 

상대적 가져 오기를 수행하는 데 경로를 사용할 수 있습니까?

예를 들어 나는 fileB.xsd에서

<xs:schema xmlns:relativeA="../A"> 

를 사용할 수 있을까요?

나는 그것을하는 방법에 정말로 관심이 없다. 나는 스키마 정의의 위치를 ​​지정하는 모든 종류의 방법이 있다는 것을 알고있다. 나는 단지 URL의 경로의 의미에 관심이있다.

필자가 아는 한 url은 xsd 파일에서 유형을 고유하게 식별하는 데 사용되는 문자열입니다 (정의 파일의 경우 일 수도 있고 일 수도 있음 - 제외). 나 맞아 ? XSD 스키마 문서의

잘하면 내 질문이 너무 이상한 사전에 :) 미샤

답변

0

가져 오기의 schemaLocation 속성의 스키마 위치 힌트를

덕분에 많은 답변과 포함되는되지 않는 요소이다 xs : anyURI 유형으로 지정되며, 그렇다는 의미입니다. 상대 참조 일 수 있습니다. 당신의 fileB.xsd에 따라서

, 당신은

<xs:import namespace="http://www.anurlofmine.com/myproject/A" 
      schemaLocation="../fileA.xsd"/> 

가 (예 : 예 xmlns:relativeA 등) 네임 스페이스 선언의 값은, 다른 한편으로는, 예상되는 형태의 import 문을 가질 수 있습니다 상대 URI가 아닌 절대 URI 여야합니다. 많은 프로그램들이 실제로 합법성을위한 네임 스페이스 이름을 URI로 검사하지 않기 때문에 "../A"를 네임 스페이스 이름으로 사용한다고해서 반드시 오류가 발생하는 것은 아닙니다. 그러나 XML 기술 스택을 정의하는 기본 W3C 사양은 상대 URI를 네임 스페이스 이름으로 사용하는 문서에 설정된 정보가 정의되지 않았 음을 지정합니다.

어떤 경우에도 xs : schema 요소에 네임 스페이스 선언을 추가해도 해당 네임 스페이스를 가져 오거나 표시된 위치에있을 수있는 스키마 문서를 참조하는 효과가 없습니다.

+0

답변 해 주셔서 감사합니다. 현재 프로젝트에서 schemaLocation 속성을 사용하지 않습니다. 대신 catalog.xml 파일이 사용되고 모든 스키마 정의가 사용자 시스템에 로컬로 보관됩니다. 따라서 schemaDefinition attr을 사용하여 상대적으로 가져옵니다. 의문의 여지가있다. –