mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-27 07:01:02 +03:00
fix(xdto-compile,xdto-validate): не терять конструкции молча; вычитать инструкции
xdto-compile терял свойства без единого слова: на реалистичной чужой схеме из шести объявленных доезжало одно. Вложенные xs:sequence/xs:choice теперь уплощаются (модель хранит плоский список), xs:all трактуется как последовательность, xs:group и xs:attributeGroup раскрываются по ссылке — и о каждом приближении навык пишет предупреждение. Молчаливая потеря — тот же класс дефекта, что мы ловим у платформы, лечится так же: сообщением, не отказом. xdto-validate получил проверки на грабли, найденные при разработке: порядок элементов верхнего уровня (платформа отвергает пакет, не называя причины), конфликты объявлений (name+ref, type+вложенный тип, тип без разновидности), несовпадение рода базового типа, дубли имён свойств. Новые правила прогнаны по всем 760 пакетам выгрузок: всё, что породила платформа, валидно по определению, поэтому каждая ошибка там — ошибка правила. Первый прогон дал 7, и все три класса оказались реальным поведением платформы: length вместе с minLength/maxLength встречается, два пакета делят один targetNamespace (Envelope и SOAP_Envelope_1_1 в БП), form="Text" называется не только __content. Правила понижены до предупреждений либо сняты. Заодно убран шум: предупреждение о неиспользуемом import срабатывало на четверти корпуса — теперь только вместе с anyType, где оно и означает проблему. Итог: 0 ошибок на корпусе, предупреждений 53 вместо 242. Инструкции переписаны под читателя-исполнителя: убраны детали реализации и наши мерки, каталог проверок валидатора (его вывод самодостаточен), локальные пути в примерах заменены нейтральными. Таблица соответствий XSD и справочник аннотаций вынесены в xdto-compile/xsd-reference.md. Round-trip 760/760 сохранён, паритет PS/PY сохранён. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d05aef54b4
commit
7ca6dfa6b2
+22
-2
@@ -169,5 +169,25 @@
|
||||
- **`form="qualified"` на глобальном объявлении** — так экспортирует XML-схему сам
|
||||
Конфигуратор, хотя спецификация XSD допускает `form` только у локальных объявлений.
|
||||
Такие файлы читаются; сам навык пишет корректно.
|
||||
- **`xs:include`** игнорируется (в модели XDTO соответствия нет).
|
||||
- Порядок объявлений верхнего уровня произвольный и сохраняется как есть.
|
||||
- **Порядок объявлений верхнего уровня произвольный** — компилятор расставляет их
|
||||
в требуемом моделью порядке `import → property → valueType → objectType`.
|
||||
- **`xs:group` и `xs:attributeGroup`** раскрываются по ссылке: содержимое группы
|
||||
подставляется в тип.
|
||||
|
||||
## 5. Конструкции без точного соответствия
|
||||
|
||||
XML Schema выразительнее модели XDTO. Перечисленное ниже переносится приближённо,
|
||||
и компилятор об этом **предупреждает** — молча терять свойства нельзя.
|
||||
|
||||
| Конструкция | Что происходит |
|
||||
|---|---|
|
||||
| вложенные `xs:sequence` / `xs:choice` | уплощаются в плоский список свойств; вложенный выбор варианта не сохраняется |
|
||||
| `xs:all` | трактуется как последовательность |
|
||||
| `minOccurs`/`maxOccurs` на самой частице | не выражается, отбрасывается |
|
||||
| `substitutionGroup` | объявление сохраняется как обычное |
|
||||
| `xs:key`, `xs:keyref`, `xs:unique` | отбрасываются |
|
||||
| `xs:redefine` | игнорируется |
|
||||
| `xs:include` | игнорируется: зависимости разрешаются только по namespace — включаемую схему нужно собрать отдельным пакетом и заменить на `xs:import` |
|
||||
|
||||
`ordered="false"` (выбор одного из вариантов) выводится только из **корневой** `xs:choice`
|
||||
типа: модель хранит признак на типе целиком, а не на вложенной частице.
|
||||
|
||||
Reference in New Issue
Block a user