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.