Когда мы используем пространство имен, мы должны также указать, где его связанный XSD расположен в, как видно в следующем примере:
<?xml version="1.0"?>
<Artist BirthYear="1958"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.webucator.com/Artist"
xsi:schemaLocation="http://www.webucator.com/Artist Artist.xsd">
<Name>
<Title>Mr.</Title>
<FirstName>Michael</FirstName>
<LastName>Jackson</LastName>
</Name>
</Artist>
Здесь, мы указали, что Artist.xsd должен использоваться для проверки http://www.webucator.com/Artist
пространство имен. Однако мы также используем http://www.w3.org/2001/XMLSchema-instance
пространство имен, но мы не указали, где его XSD расположен в. Как синтаксические анализаторы XML знают, как обработать это пространство имен?
Обновление (в ответ на первого комментатора)
Так, можем мы вместо использования:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ehcache="http://www.springmodules.org/schema/ehcache"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springmodules.org/schema/ehcache
http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd">
...
</beans>
использовать
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ehcache="http://www.springmodules.org/schema/ehcache">
...
</beans>
?
Есть четыре встроенных объявления для схем Xml; type
, nil
, schemaLocation
и noNamespaceSchemaLocation
как «присутствуют в каждой схеме по определению». Вы можете прочитать о них в рекомендации по схеме XML .
Нет требования указывать, где находится схема. Вы можете сделать это, если хотите, но не обязаны.
В этом примере все платформы, скорее всего, поймут, где расположены схемы для xsi
, xml
, xsd
и soap
.
EDIT: Как я уже сказал, все платформы, скорее всего, знают, где находятся схемы для этих известных пространств имен. Вполне вероятно, что все они имеют копии схем. Я использую Visual Studio, и она хранит копии этих схем в Интернете и обращается к ним по мере необходимости.