From 5fd952a796931225e3a6d1dd0f70e6269bf6d8e2 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 26 Jul 2026 14:00:25 +0300 Subject: [PATCH] =?UTF-8?q?docs(xdto-dsl-spec):=20=D1=81=D0=B8=D0=BD=D1=85?= =?UTF-8?q?=D1=80=D0=BE=D0=BD=D0=B8=D0=B7=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D1=81=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=BE?= =?UTF-8?q?=D0=B9=20=D1=83=D0=BF=D0=BB=D0=BE=D1=89=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20xs:choice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Спека описывала уплощение как «вложенный выбор варианта не сохраняется», не упоминая, что ветки теперь становятся необязательными — а это и есть суть правки: иначе «одно из двух» превращалось в «оба обязательны» и тип нельзя было заполнить. Заодно в таблицу аннотаций добавлен xdto:declareNs, который был реализован и описан в справочнике навыка, но в спеку не попал. Co-Authored-By: Claude Opus 5 (1M context) --- docs/xdto-dsl-spec.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/xdto-dsl-spec.md b/docs/xdto-dsl-spec.md index 91bf8ad7..ebd91953 100644 --- a/docs/xdto-dsl-spec.md +++ b/docs/xdto-dsl-spec.md @@ -117,6 +117,7 @@ | `xdto:elementFormQualified`, `xdto:attributeFormQualified` | `xs:schema` | записать флаги явно | | `xdto:type` | `xs:enumeration` | `xsi:type` литерала перечисления | | `xdto:prefix` | объявление | осмысленный префикс пространства имён вместо генерируемого `dNpM` (например `dcsset`) | +| `xdto:declareNs` | `xs:union` | объявить префикс пространства имён на узле (при нотации Кларка платформа иногда его пишет, иногда нет) | ### Что выводится само @@ -181,7 +182,8 @@ XML Schema выразительнее модели XDTO. Перечисленн | Конструкция | Что происходит | |---|---| -| вложенные `xs:sequence` / `xs:choice` | уплощаются в плоский список свойств; вложенный выбор варианта не сохраняется | +| вложенная `xs:sequence` | уплощается в плоский список свойств | +| вложенная `xs:choice` | уплощается, и **ветки становятся необязательными**: иначе «одно из двух» превратилось бы в «оба обязательны» и тип нельзя было бы заполнить. Запрет «ровно один из» не сохраняется | | `xs:all` | трактуется как последовательность | | `minOccurs`/`maxOccurs` на самой частице | не выражается, отбрасывается | | `substitutionGroup` | объявление сохраняется как обычное |