Что делает xml: mstns выразить в следующем xsd-заголовке?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="config"
targetNamespace="http:/tempuri.org/config.xsd"
elementFormDefault="qualified"
xmlns=""
xmlns:mstns="http://tempuri.org/config.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="config">
...
Ответ 1
Это объявление пространства имен XML.
пространства имен XML действительно определяются URI, поэтому квалифицированное имя состоит из пространства имен (произвольного URI) и локального имени (короткая простая строка, следующая за правилами NCName). Тем не менее, это не может быть выписано полностью каждый раз, поэтому пространства имен сопоставляются с префиксами объявлением пространства имен, которое всегда принимает форму атрибута, начинающегося с xmlns
и определяющего префикс для содержащего его элемента и всех его дочерние элементы.
В качестве примера рассмотрим ваш пример.
У нас есть атрибут xmlns:mstns="http://tempuri.org/config.xsd"
, и это просто говорит, что префикс mstns
сопоставляется с URI пространства имен http://tempuri.org/config.xsd
; это означает, что все элементы и атрибуты, имена которых начинаются с mstns:
(обратите внимание на двоеточие), находятся в этом пространстве имен. В вашем примере мы также видим xmlns=""
, который отображает все элементы (сложная точка: не атрибуты!) Без префикса в пустой URI.
Очевидно, что вы не можете использовать xmlns
как префикс (он магический), и на самом деле все префиксы, начинающиеся с xml
, зарезервированы. Существует обычная привычка использовать префикс tns
в схемах, чтобы указать Target NameSpace.
Ответ 2
Это просто пространство имен XML. Он используется как префикс перед тегами. Я предполагаю, что mstns добавлен Microsoft XML Serializer.