Я новичок в Дите, поэтому я прошу прощения за любое незнание.Почему схема Dita разделена на тему и карту?
Я использую XJC для компиляции базы (и только базы) схемы Dita 1.3 в классы Java. Когда я попытался скомпилировать все файлы XSD, я получил ошибки с переопределением элементов и групп. Ни одно из привязок XJC, которое я попытался написать, не исправит.
После обработки схемы я обнаружил, что mapGrp.xsd/mapMod.xsd и topicGrp.xsd/topicMod.xsd содержат те же определения групп и элементов. Это объясняет, почему XJC завершился с ошибкой при включении всех файлов XSD. Сам анализатор XSD не может обрабатывать эти повторяющиеся записи.
Поэтому я сгенерировал basemap.xsd и basetopic.xsd отдельно и очистил сгенерированный код, чтобы я мог запускать diff в отношении двух каталогов.
Я обнаружил, что две схемы имеют некоторые элементы, характерные для карт и тем. Например, схема карты имеет DitavalmetaClass и DvrKeyscopePrefixClass, а схема темы - нет. И схема темы содержит AbstractClass и BodyClass, а схема карты - нет. Но большинство классов разделяются между двумя схемами.
Что касается классов, которые являются общими, есть только три, которые имеют некоторые отличия между двумя схемами (LinktextClass, MetadataClass и SearchtitleClass). Даже тогда, они не большие изменения, просто некоторые различия в том, что они могут содержать.
Вопрос в том, почему общие классы не могут находиться под одной общей схемой Grp/Mod, которая разделена между темами и картами и переопределяет эти три класса? Могу ли я изменить две схемы, чтобы они делили одни и те же элементы и группы, не нарушая никаких других схем, расширяющих базовую схему?