xsi : schemaLocation의 사용법은 무엇입니까?


131

봄과 같이이 속성의 값으로 여러 개의 URL이 있음을 알았습니다.

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

왜 필요하고 무엇을 위해 사용됩니까? Spring은 URL로 이동하여 유효성을 검사합니까? xmlns와 xsi : schemaLocation의 차이점은 무엇입니까?

답변:


87

Spring이 사용하는 Java XML 파서는 schemaLocation 는 XML 파일의 유효성을 검사하기 위해 값 인터넷에서로드하려고 시도합니다. Spring은 이러한로드 요청을 차단하고 자체 JAR 파일 내부에서 버전을 제공합니다.

를 생략하면 schemaLocationXML 파서는 구성을 확인하기 위해 스키마를 가져올 위치를 알 수 없습니다.


XML 파서는 클래스 경로를 검색하지 않습니까?
HDave

1
@skaffman, -o (오프라인) 플래그로 스프링 기반 projhect의 maven 빌드를 실행하면 로컬 저장소에서 모든 종속성을 사용할 수 있음에도 불구하고 빌드가 실패한다는 의미입니까?
aviad

XML 파서를 찾고있을 것입니다 무슨 @HDave하지만, 스키마는 이름을 가질 수
르지 Krasoń

기술적으로 XML 구문 분석기는 먼저 인터넷에서 스키마를로드하려고 시도합니다. 찾을 수 없거나 인터넷에 액세스 할 수없는 경우 클래스 경로에서 로컬로 * .xsd 파일을 검색합니다. 여전히 찾지 못하면 생략됩니다.
Frank Zhang

봄 차단 층에 대한 추가 정보를 참조 stackoverflow.com/a/10768972/32453
rogerdpack

68

xmlns: 그것은 스키마에 URI가 될 필요가 없습니다 - 문서 내에서 고유 한 식별자

XML 네임 스페이스는 Extensible Markup Language 문서에서 사용되는 요소 및 속성 이름을 URI 참조로 식별 된 네임 스페이스와 연관시켜 한정하는 간단한 방법을 제공합니다.

xsi:schemaLocation 실제 스키마 위치에 대한 힌트를 제공해야합니다.

는 문서에 사용되어 평가에 사용될 수있는 스키마 문서의 물리적 위치에 대한 힌트를 제공 할 수 있습니다.


22

스키마 찾기 사양에 따르면

네임 스페이스 이름을 통해 검색 할 수있는 스키마가있을 수도 있고 없을 수도 있습니다.

(분명하지 않은 스펙 감사합니다!)

문서 작성자 (인간 또는 비인간)가 특정 스키마를 사용하여 문서를 작성하고 일부 또는 모든 문서가 해당 스키마를 준수 함을 보증하는 경우 schemaLocation 및 noNamespaceSchemaLocation [attributes]가 제공됩니다.

따라서 기본적으로 네임 스페이스 만 지정하면 schemaLocation"커뮤니티"에 따라 XML " 속성" 이 해당 위치의 xsd ( 속성 이없는 경우에도)에 대해 유효성 검사를 시도 할 수 있습니다. specific을 지정 schemaLocation하면 기본적으로 xml 문서가 "xsd"를 준수해야 함을 의미하므로 "확인하십시오"(읽을 때). 내 생각 엔 당신이 schemaLocation또는noNamespaceSchemaLocation 속성 그것은 단지 대부분의 시간에 "유효하지 않은"것입니다 (다른 답변에 따르면, 자바가 이런 식으로 나타납니다).

여기서 또 다른 주름은 일반적으로 Java 라이브러리 [예 : spring config xml files]에서 xsd 유효성 검사를 사용하여 XML 파일이 XML 파일에서 특정 schemaLocationxsd url을 지정하는 경우 xsi:schemaLocation="http://somewhere http://somewhere/something.xsd"일반적으로 종속성 jar 중 하나 와 같은 사본을 포함 한다는 것 입니다. 해당 xsd 파일의 리소스 섹션에 스프링에는 xsd 파일을 URL에 매핑하는 것처럼 취급하는 "매핑"기능이 있습니다 http://somewhere/something.xsd(따라서 웹에 들어가거나 파일을 다운로드하지 않아도 파일은 로컬에 존재합니다). 약간 더 자세한 정보 는 https://stackoverflow.com/a/41225329/32453 을 참조하십시오 .


0

해당 위치로 이동하면 해당 스키마에 정의 된 내용을 찾을 수 있습니다. 예를 들어, ini-method 키워드 값의 데이터 유형이 무엇인지 알려줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.