Следующие вопросы касаются сериализации / десериализации XML и проверки схемы для библиотеки типов .net, которые должны использоваться для обмена данными.
Первый вопрос, если у меня есть собственное пространство имен xml, скажите «http://mydomain/mynamespace" нужно ли добавить
[XmlRoot(Namespace = "http://mydomain/mynamespace")]
каждому классу в моей библиотеке. Или есть способ определить это пространство имен по умолчанию для всей сборки?
Второй вопрос, есть ли причина всегда добавляемых пространств имен
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
даже если нет фактической ссылки на какое-либо из пространств имен? Я просто чувствую, что они добавляют шум к полученному XML. Есть ли способ удалить их, если в полученном XML-файле есть только пользовательское пространство имен?
Третий вопрос, существуют ли инструменты для поддержки генерации определений схем (например, для всех открытых [Serializable] классов сборки) и проверки xml на соответствие конкретным схемам?
Если есть, порекомендуете ли вы XML-схему от W3C или RELAX NG?