Было много подобных вопросов, которые фокусировались на одном аспекте оптимизации, но каждое решение имело неприятный недостаток.
Предположим, я хочу разработать XML-схему (XSD), которая позволяет использовать следующие документы и генерировать классы с использованием XJC:
...
...
...
...
Схема должна моделировать иерархию типов ( Book
и Journal
являются подклассами публикации
). Естественно, это также должно
быть случай для сгенерированных классов Java.
Я попробовал следующие подходы, у всех из которых есть одна серьезная проблема:
1.) моделирование Каталога, содержащего xsd:choice
всех возможных подтипов.
...
Проблема здесь в том, что я должен упомянуть все возможные подтипы в элементе selection
, которых может быть много в реальном приложении.
Незначительная проблема заключается в том, что хотя атрибут Catalogue
имеет правильный тип List
, он имеет уродливое имя bookAndMagazine
.
Из-за избыточного определения схемы это не вариант!
2.) моделирование Каталога, содержащего xsd:sequence
родительского класса
Это работает, только если XML-документы сформулированы как
. Так что не вариант!
3.) Используйте substitutionGroup, как указано здесь http://www.xfront.com/ElementHierarchy.html
...
Здесь генерация кода является проблемой, поскольку внутренний элемент Каталога
сопоставляется с List
, а не
Список
. Следовательно, и это не вариант.
Как объединить все мои цели?:
И если нет решения, отвечающего всем этим целям, какое из них вы бы предпочли?