Ответ 1
Связанные с пространством имен атрибуты в XML и XML-схеме (XSD)
-
xmlns
является частью Пространства имен W3C в Рекомендации XML:Префикс xmlns используется только для объявления привязок пространства имен и по определению связано с именем пространства имен http://www.w3.org/2000/xmlns/.
В вашем примере он объявляет, что
http://maven.apache.org/POM/4.0.0
является пространством имен по умолчанию для элементов вашего проекта Maven. -
xmlns:xsi
объявляет стандартный префикс пространства имен (xsi
) для используемого основного пространства имен в XSD:http://www.w3.org/2001/XMLSchema-instance
Схема XML: Структуры также определяют несколько атрибутов для прямого использования в любых XML-документах. Эти атрибуты находятся в другом пространстве имен, который имеет имя пространства имен http://www.w3.org/2001/XMLSchema-instance. Для краткости текст и примеры в этой спецификации используют префикс xsi: для этого последнее пространство имен; на практике может использоваться любой префикс.
В вашем примере он объявляет обычную привязку префикса пространства имен
xsi
кhttp://www.w3.org/2001/XMLSchema-instance
, который правильно устанавливает следующие атрибуты:-
xsi:type
позволяет экземпляру XML напрямую связывать информацию типа элемента, а не через XSD, См. Как ограничить значение элемента XML с помощью xsi: type в XSD?В вашем примере,
xsi:type
не используется; включенный здесь для полноты относительноxsi
. -
xsi:nil
позволяет считать пустой элемент действительным, если XSD не может в противном случае разрешили его.В вашем примере,
xsi:nil
не используется; включенный здесь для полноты относительноxsi
. -
xsi:schemaLocation
иxsi:noNamespaceSchemaLocation
предоставляют подсказки для XML-процессор относительно того, как связать XSD с XML-документом. Используйтеxsi:schemaLocation
, когда есть пространство имен; используйтеxsi:noNamespaceSchemaLocation
, когда нет пространства имен.В вашем примере существует пространство имен, поэтому вы правильно используете
xsi:schemaLocation
, значения которого разделены пробелом пары пространства имен и XSD-location-URI. В вашем примере используется пространство имен,http://maven.apache.org/POM/4.0.0
, а пространства имен - это лексические конструкции именования, которые не должны быть восстановлены. В вашем примере также используется XSD-location-URI,http://maven.apache.org/xsd/maven-4.0.0.xsd
, который может быть восстановлен, как и должно быть.Если ваш пример не использовал пространство имен, вы должны использовать
xsi:noNamespaceSchemaLocation
, значение которого представляет собой единственный XSD-location-URI, который намекает на местоположение предполагаемого XSD и который должен быть извлечен.
-
-
targetNamespace
является атрибутом корняxs:schema
элемент XSD, который определяет пространство имен корневого элемента экземпляров XML-документа, которые XSD предназначен для управления. Это должно соответствие по умолчанию или явное пространство имен этих корней XML-документов элементы.