В чем разница между targetNamespace и xmlns: target?
Что такое targetNamespace
функция?
<schema xmlns="http://www.w3.org/2001/SchemaXML"
targetNamespace="http://www.example.com/name"
xmlns:target="http://www.example.com/name">
Я понимаю, что xmlns="http://www.w3.org/2001/SchemaXML
определяет пространство имен XML Schema.
Я также понимаю, что xmlns:target="http://www.example.com/name"
определяет пространство имен для моего собственного словаря, если я создаю свою собственную схему, используя префикс "target"; это действует как прокси-сервер или заполнитель для URI http://www.example.com/name
.
Это кажется достаточным для определения необходимых ограничений и словарей участников пространства имен. Итак, для чего мне нужен атрибут targetNamespace
, который дублирует пространство имен http://www.example.com/name
?
Ответы
Ответ 1
Здесь хорошо сказано: targetNamespace и xmlns без префикса, в чем разница?
Повторить:
-
targetNamespace=""
- Поскольку текущий XML-документ представляет собой схему, этот атрибут определяет пространство имен, для которых эта схема предназначена для таргетинга или проверки.
-
xmlns=""
- Определяет пространство имен по умолчанию в текущем документе для всех не префиксных элементов (т.е. yada:
в <yada:elementName>
)
-
xmlns:target=""
- здесь вы просто определяете свое собственное пространство имен с префиксом target:
, это не связано с предыдущими двумя специальными случаями.
Ответ 2
Объект targetNamespace объявляет пространство имен для других документов xml и xsd для ссылки на эту схему. Целевой префикс в этом случае относится к одному и тому же пространству имен, и вы должны использовать его в этом определении схемы для ссылки на другие элементы, атрибуты, типы и т.д., Также определенные в этом же определении схемы.
Ответ 3
Префикс "target" в xmlns:target="http://www.example.com/name"
ничего особенного. Как процессор схемы знает, что вы хотите, чтобы это было пространство имен для вашей схемы? targetNamespace делает именно это - он объявляет пространство имен, принадлежащее компонентам вашей схемы.
N.B. Не все в документе схемы попадает в targetNamespace. Отметьте атрибуты "elementFormDefault" и "attributeFormDefault" в элементе "schema", а также атрибут "form" в элементах "element" и "attribute".