Я вижу, что у нас есть несколько 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?
An
xmlns
- это уникальный идентификатор в документе - он не обязательно должен быть URI схемы:xsi:schemaLocation
должен давать подсказку относительно фактического расположения схемы:источник
Согласно спецификации для размещения схем
(спасибо за недвусмысленность, спец!)
и
Таким образом, в основном с указанием только пространства имен, ваш XML «может» быть попытаться проверить на xsd в этом месте (даже если у него нет
schemaLocation
атрибута), в зависимости от вашего «сообщества». Если вы указываете конкретноеschemaLocation
, то в основном это означает, что XML-документ «должен» соответствовать указанному xsd, поэтому «пожалуйста, подтвердите его» (как я его читал). Я предполагаю, что если вы не выполняете атрибутschemaLocation
илиnoNamespaceSchemaLocation
атрибут, он просто «не проверяется» большую часть времени (судя по другим ответам, Java делает это таким образом).Еще одна проблема заключается в том, что обычно при проверке xsd в java-библиотеках [например, XML-файлы конфигурации Spring], если ваши XML-файлы указывают конкретный
schemaLocation
URL-адрес xsd в XML-файле, какxsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
обычно в одном из ваших jar-файлов зависимостей, он будет содержать копию этот xsd-файл в разделе ресурсов, а spring имеет возможность «сопоставления», говоря, что этот xsd-файл обрабатывается так, как если бы он сопоставлялся с URL-адресомhttp://somewhere/something.xsd
(так что вы никогда не заходите в Интернет и не загружаете файл, он просто существует локально). См. Также https://stackoverflow.com/a/41225329/32453 для получения дополнительной информации.источник
Если вы войдете в любое из этих мест, вы найдете то, что определено в этой схеме. Например, он сообщает вам, каков тип данных значения ключевых слов ini-метода.
источник