Пометить элемент как устаревший в XSD - PullRequest
24 голосов
/ 23 декабря 2009

У меня есть XSD, который проходит переход от одного набора элементов к другому. Во время перехода будет код, ожидающий новые элементы, и код, ожидающий старые элементы. Поэтому мне нужно сохранить старые элементы в XSD; Я документирую их как устаревшие (используя свободный текст в элементе xs: documentation).

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

1 Ответ

20 голосов
/ 23 декабря 2009

Создать новую схему с новым пространством имен. Назовите это «версия 2». Если вы решите поддерживать XSD версии 1 и версии 2 в своем приложении, это нормально, но держите их отдельно и не пытайтесь накладывать два слоя друг на друга - особенно если вы собираетесь помешать людям использовать версия 1.

Это стоит посмотреть, поскольку описывает некоторые из того, с чем вы имеете дело: архив http://www.pluralsight.com/community/blogs/tewald/archive/2006/04/19/22111.aspx

Однако я понимаю, что это не решает ваш вопрос. Что касается "есть ли способ сделать это?" ответ «нет - не общепринятым образом». Я видел, как люди добавляли свои собственные аннотации к документам, чтобы дать подсказки, но это не будет универсально понято инструментами.

Ваша лучшая ставка в долгосрочной перспективе - создать историю версий для ваших схем и сохранить версию 2 отдельно от версии 1.

...