Инструмент для рефакторинга .xsd схемы? - PullRequest
0 голосов
/ 18 января 2012

Я получил схему .xsd, которая имеет несколько корневых элементов, несколько сложных и простых типов, сложные типы ссылаются на эти корневые элементы.Я не могу генерировать .xml так, как мне хочется, из-за этих корневых элементов.Поэтому я думаю, что мне нужно добавить элемент, который будет служить корневым элементом, и добавить все другие элементы в качестве его дочерних элементов, или я ошибаюсь?

Есть ли инструмент, который может помочь мне создать корневой элемент и схему рефакторинга?Что я получил: enter image description here

Я подумал, может быть, мне просто нужно создать еще один xsd с 1 элементом и сделать так, чтобы все элементы формировали первый xsd, но я точно не знаю, как это сделать.Это хорошая идея?

Ответы [ 2 ]

2 голосов
/ 22 января 2012

Ответ на ваши изменения действительно, как сказал Пангея, НЕТ. И это потому, что для ссылки на другой элемент (как в ) указанный элемент должен быть объявлен глобально.

Другим сценарием, который требует глобальных элементов, является использование групп замещения. Я пытаюсь предположить, что не всегда возможно реорганизовать XSD таким образом, чтобы оставить глобальными только те элементы, которые вы хотите использовать в качестве корневого в экземпляре XML.

Что должно заставить вас думать, что для решения вашей проблемы лучше выбрать причину, по которой вы не можете генерировать .xml так, как вам хочется. Если вы можете описать это немного, вы можете получить лучший ответ здесь ...

Другая причина, по которой я хотел добавить этот ответ, заключалась в том, что я заметил использование XML в качестве имени тега. Хотя это может показаться нормальным, я могу вам сказать, что я видел несколько довольно «громких» приложений, которые просто подавились бы этим именем тега . XML на самом деле «зарезервирован», пожалуйста, посмотрите на этот раздел Спецификации XML. Процитирую: " Имена, начинающиеся со строки" xml "или любой строки, которая будет соответствовать (('X' | 'x') ('M' | 'm') ('L' | 'l' )), зарезервированы для стандартизации в этой или будущих версиях данной спецификации."

Всегда хорошо играй со спецификациями ....

1 голос
/ 18 января 2012

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

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