Переопределение XML-элемента - PullRequest
0 голосов
/ 23 марта 2011

Я не придумал хорошего, чистого способа сделать это, поэтому я принесу вам свои беды!

Я хочу представить конфигурацию в XML. У меня есть несколько полей, некоторые обязательные, некоторые нет, большинство со строгими ограничениями. У меня есть базовая конфигурация, которую я буду представлять как config.xml, который может иметь некоторое содержимое, подобное этому:

...
<config>
  <element-a value="3.2" />
  <element-b value="hello world" />
</config>
...

Есть связанная схема, которая говорит, что оба из этих полей являются обязательными. Один - это поплавок, а другой - строка. Теперь у меня есть другая конфигурация, которая похожа на первую с одним небольшим изменением. Я хотел бы представить это так:

...
<include base-config="config.xml">
<config>
  <element-a value="1.5" />
</config>
...

По сути, эта новая конфигурация извлекает все элементы из базового файла конфигурации и указывает только то, что она переопределяет. Я не могу использовать одну и ту же схему для этого, потому что теперь все элементы являются необязательными, но я хочу сохранить те же ограничения на данные (желательно без необходимости создания новой схемы с теми же элементами, которые все сделали «необязательными»).

Есть ли XML-совместимый способ сделать это? Или кто-нибудь сделал это с какой-либо удачей? Может быть, у вас есть шаблон дизайна, которым вы хотели бы поделиться?

В настоящее время я ожидаю иметь две копии каждой схемы, и на этапе обработки я буду загружать базу, а затем перегружать обновленные элементы. Это громоздкий метод, так что, надеюсь, есть что-то лучшее.

1 Ответ

0 голосов
/ 23 марта 2011

Если вы модулируете свою схему так, что определяете ограничения с использованием глобальных типов, то вы можете повторно использовать эти типы при определении базовой схемы конфигурации (где требуется каждый элемент / большинство элементов) и необязательной схемы конфигурации (где каждыйэлемент не является обязательным).Этот подход, вероятно, также будет работать с использованием глобальных элементов и последующим обращением к ним в последовательностях.

Однако XML-схема не может помочь вам с чтением реальных файлов конфигурации и выполнением перегрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...