Что такое xmlns: mstns в XSD?

Что делает 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.