У меня есть иерархия объектов, которые передаются через XML. Правила иерархии легко выразить в XML-схеме, указав, какой элемент может содержать какие дочерние элементы. Упрощенным примером данных XML будет (фактические данные объекта содержатся в атрибутах и для краткости опущены):
<root>
<channel>
<router>
<message />
<message />
<message />
</router>
<router>
<message />
<message />
</router>
</channel>
<channel></channel>
</root>
Теперь я хотел бы представить «папки», т.е. е. узлы, которые просто служат для структурирования длинных списков детей для более удобного использования. Если я сделаю общий элемент <folder>
, он не будет навязывать свои собственные правила, а наследует их от следующего элемента, не являющегося папкой, вверх по дереву.
Мне кажется, что я не могу выразить это в XSD, или я могу?
Я могу придумать альтернативы, например, иметь определенные элементы папки для каждого возможного правила (безобразно), просто игнорировать правила в XSD и применять их в коде (хорошо для меня) или как-то разделять иерархию объектов и промежуточные узлы в XML ( не совсем уверен, как). Буду признателен за ваши комментарии, если у вас есть какие-либо комментарии.