Поделиться через


Поддержка привязки атрибута 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, можно указать с помощью следующих свойств атрибута.

Возможные содержащие элементы: <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