Поддержка привязки атрибута Name
Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.
Платформа .NET Framework обеспечивает поддержку привязки для атрибута name.
Значение атрибута name соответствует имени открытого класса или поля, в зависимости от того, к какому элементу относится атрибут. Чтобы переопределить имя, созданное программой Xsd.exe при генерировании документа XSD, можно использовать соответствующее свойство ***Name.
Генерирование исходного кода из документов XSD
При формировании исходного кода из документа схемы XML атрибут name используется следующим образом для элементов, для которых программа Xsd.exe обеспечивает привязку типов:
<attribute> предоставляет имя открытого поля класса, представляющего этот атрибут. Поле имеет атрибут System.Xml.Serialization.XmlAttributeAttribute.
<complexType> предоставляет имя класса, соответствующего сложному типу.
<element> предоставляет имя открытого поля класса, представляющего этот элемент. Если элемент <element> содержит анонимное определение <complexType>, это имя становится именем класса, соответствующего данному сложному типу.
<simpleType> предоставляет имя класса, соответствующего простому типу. Платформа .NET Framework позволяет наследование простых типов только через (а) перечисление строковых типов и (б) создание списков, которые используются как атрибуты.
Регистр символов не изменяется для соответствия соглашениям о написании кода. Например, если атрибут name элемента <complexType> имеет значение testInfo
, то результирующий класс получает имя testInfo, а не TestInfo (с заглавной буквы). Если имя совпадает с зарезервированным ключевым словом, в начало имени добавляется символ @.
Платформа .NET Framework не имеет привязки для следующих элементов определения схемы XML, обеспечивающих уникальность и ссылочную целостность: <key>, <keyref> и <unique>. Соответственно, атрибут name этих элементов пропускается. Аналогично отсутствуют привязки типов для элемента <notation>, его атрибут name также не обрабатывается.
Поскольку программа Xsd.exe не обеспечивает непосредственную поддержку элементов <group> и <attributeGroup> (а разворачивает содержимое каждой ссылки в класс, соответствующий каждому сложному типу, содержащему ссылку), имя группы или группы атрибутов пропускается.
Создание документов XSD из классов
При генерировании документа XSD из набора классов в сборке программа Xsd.exe использует описанные выше конструкции кода для получения значений соответствующих атрибутов name.
Кроме того, поскольку открытые свойства в дополнении к полям преобразуются в элементы <element> и <attribute>, имена свойств по умолчанию являются значениями атрибута name.
Альтернативное имя, т. е. значение атрибута name, можно указать с помощью следующих свойств атрибута.
System.Xml.Serialization.XmlAttributeAttribute.AttributeName
System.Xml.Serialization.XmlTypeAttribute.TypeName: изменяет имя типа данных XSD, соответствующего типу .NET Framework, к которому применен атрибут.
System.Xml.Serialization.XmlArrayAttribute.ElementName: изменяет имя родительского элемента XML массива.
System.Xml.Serialization.XmlArrayItemAttribute.ElementName: изменяет имя последовательных дочерних элементов, соответствующих записям массива.
Возможные содержащие элементы: <attribute>, <attributeGroup>, <complexType>, <element>, <group>, <key>, <keyref>, <notation>, <simpleType>, <unique>
См. также
Справочник
System.Xml.Schema.XmlSchemaAttribute.Name
System.Xml.Schema.XmlSchemaAttributeGroup.Name
System.Xml.Schema.XmlSchemaElement.Name
System.Xml.Schema.XmlSchemaGroup.Name
System.Xml.Schema.XmlSchemaType.Name
XmlSchemaComplexType
XmlSchemaSimpleType
System.Xml.Schema.XmlSchemaIdentityConstraint.Name
XmlSchemaKey
XmlSchemaKeyref
XmlSchemaUnique
System.Xml.Schema.XmlSchemaNotation.Name