From 32455a64b108b066a6595eda0f2559faabac7bed Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 26 Jul 2026 16:33:27 +0300 Subject: [PATCH] =?UTF-8?q?docs(xdto-guide):=20=D1=80=D0=B5=D1=86=D0=B5?= =?UTF-8?q?=D0=BF=D1=82=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=BE=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=BA=D0=BE=D0=BF=D0=B8=D0=B8=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=BA=D0=B5=D1=82=D0=B0=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Раздел «Новая версия пакета» описывал, что получается, но не как это сделать, и из-за этого выглядел местом, требующим отдельного флага компилятора. Рутины там на самом деле немного: выгрузить схему, поменять в шапке targetNamespace и связанное объявление xmlns, собрать под новым именем — имя и синоним задаются флагами, править их внутри схемы не нужно. Названа острая кромка: заменять все вхождения URI строкой нельзя — пострадает импорт пространства имён, для которого старый URI является префиксом. Co-Authored-By: Claude Opus 5 (1M context) --- docs/xdto-guide.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/docs/xdto-guide.md b/docs/xdto-guide.md index 4ce8193b..7801c688 100644 --- a/docs/xdto-guide.md +++ b/docs/xdto-guide.md @@ -113,11 +113,24 @@ Типовой приём: рядом со старым пакетом появляется новый с другим пространством имён (`EnterpriseData_1_19` → `_1_20`), а старые потребители продолжают смотреть -на прежний namespace. +на прежний namespace. Копия делается через выгрузку схемы и сборку под новым именем: -Если же надо сменить namespace **у существующего** пакета, агент перепишет все -внутренние ссылки и перечислит пакеты, которые импортируют старый — но менять -их не станет, потому что при версионировании это было бы ошибкой. +1. `/xdto-decompile` исходного пакета в файл схемы; +2. в схеме поменять `targetNamespace` — **и связанное с ним объявление `xmlns`**, + которым внутренние ссылки пользуются как префиксом; +3. `/xdto-compile` этой схемы с `-Name` нового пакета (имя и синоним задаются + флагами, править их внутри схемы не нужно). + +Внутренние ссылки при этом переводятся на новый namespace целиком, импорты чужих +пакетов сохраняются, исходный пакет не меняется. + +Менять `targetNamespace` **заменой всех вхождений строки** — плохая идея: если пакет +импортирует пространство имён, у которого старый URI является префиксом +(`urn:example:exchange` и `urn:example:exchange:legacy`), заменится и оно. + +Если же надо сменить namespace **у существующего** пакета, а не сделать копию, агент +перепишет все внутренние ссылки и перечислит пакеты, которые импортируют старый — но +менять их не станет, потому что при версионировании это было бы ошибкой. ### Отдать схему контрагенту