# XSD ↔ XDTO — справочник ## Соответствия | XML Schema | Модель XDTO | |---|---| | `xs:schema/@targetNamespace` | пространство имён пакета | | `elementFormDefault` / `attributeFormDefault` | `elementFormQualified` / `attributeFormQualified` | | `xs:import/@namespace` | зависимость от другого пакета (разрешается по namespace) | | `xs:complexType` | объектный тип | | `xs:simpleType` | тип значения | | `xs:element` / `xs:attribute` на верхнем уровне | глобальное свойство пакета | | `xs:element` / `xs:attribute` внутри типа | свойство типа | | `@minOccurs` / `@maxOccurs="unbounded"` | `lowerBound` / `upperBound="-1"` | | `@nillable`, `@default`, `@fixed`, `@ref` | те же по смыслу | | анонимный `xs:simpleType`/`xs:complexType` в объявлении | встроенный тип свойства | | `xs:complexContent/xs:extension/@base` | наследование типа | | `@abstract`, `@mixed` | те же | | `xs:choice` | тип-выбор одного из вариантов | | `xs:any` + `xs:anyAttribute` | открытый тип | | `xs:simpleContent/xs:extension/@base` | свойство собственного значения элемента | | `xs:restriction` + фасеты | базовый тип + ограничения | | `xs:pattern`, `xs:enumeration` | те же | | `xs:list/@itemType` | список | | `xs:union/@memberTypes` | объединение | Порядок объявлений верхнего уровня в XSD произвольный — навык сам расставит их в порядке, который требует модель. ## Аннотации `xdto:` Пространство имён — `http://v8.1c.ru/8.1/xdto`. Нужны только там, где XML Schema не может выразить то, что умеет модель. В большинстве схем не нужны вовсе. Правило: **чего XSD сказать не может — пиши атрибутом `xdto:` с тем же именем, что и в модели**. | Аннотация | Где | Назначение | |---|---|---| | `xdto:nillable` | `xs:attribute` | `nillable` у свойства-атрибута (XSD допускает только у элементов) | | `xdto:lowerBound`, `xdto:upperBound` | `xs:attribute` | кратность свойства-атрибута | | `xdto:qualified` | объявление | переопределение `*FormQualified` для одного свойства | | `xdto:name` | объявление | имя свойства, если XML-имя не годится как идентификатор 1С; XML-имя уйдёт в `localName` | | `xdto:form` | `xs:element` | записать `form` явно | | `xdto:variety` | `xs:restriction`, `xs:list`, `xs:union` | записать разновидность типа явно | | `xdto:open`, `xdto:abstract`, `xdto:mixed`, `xdto:ordered`, `xdto:sequenced` | `xs:complexType` | флаги типа, не выводимые из модели содержимого | | `xdto:order` | `xs:complexType` | исходный порядок свойств, если он не «атрибуты первыми»; имена через `\|` | | `xdto:textName`, `xdto:textlowerBound`, `xdto:textupperBound`, `xdto:textnillable` | `xs:extension` в `xs:simpleContent` | параметры свойства собственного значения | | `xdto:type` | `xs:enumeration` | тип литерала перечисления | | `xdto:prefix` | объявление | осмысленный префикс пространства имён вместо генерируемого | | `xdto:memberTypesForm="prefixed"` | `xs:union` | записать состав объединения префиксами, а не `{ns}имя` | | `xdto:declareNs` | `xs:union` | объявить префикс пространства имён на узле | | `xdto:elementFormQualified`, `xdto:attributeFormQualified` | `xs:schema` | записать флаги явно | Пример: ```xml ``` Аннотации, которые проставляет `/xdto-decompile` при выгрузке существующего пакета, писать вручную не нужно — они нужны, чтобы обратная сборка вернула ровно тот же файл. ## Свойства объекта метаданных ```xml ОбменСБанком Обмен с банком Bank exchange Формат 1С:Предприятие — Клиент банка ``` Пространство имён пакета берётся из `targetNamespace` и здесь не дублируется. Параметры `-Name`, `-Synonym`, `-Comment` имеют приоритет над этим блоком.