Каковы преимущества и недостатки использования XML-схем?
Вопрос
Мы используем тип данных XML в Microsoft SQL Server 2005 для проекта.Некоторые члены команды и я считаем, что нам также следует использовать XSD, в то время как члены другого лагеря считают, что нам следует использовать специальные XML-файлы и не рассматривать их как «типы».
XML-файлы представляют собой попытку придать структуру и центральность ряду текстовых файлов конфигурации, обслуживание которых является кошмаром.
Мы используем .NET 3.5/C#, и наши таблицы разработаны с использованием соответствующих типов данных.Мой аргумент заключается в том, что мы уже «ориентированы на типы» в нашем мышлении, зачем нарушать этот подход, потому что это XML.Исходная проблема возникла именно из-за отсутствия типов текстовых файлов.Неиспользование подхода «типов» оставляет нас открытыми для той же проблемы.
Возможно, мое понимание преимуществ XML-схем неверно.Так каковы преимущества и недостатки использования XML-схем?
Решение
К сожалению, даже авторы XSD (W3C) понимают, что XSD — довольно плохая технология.Тем не менее, это намерение не обязательно плохое.Одним из основных преимуществ C# является то, что он статически типизирован.Статическая типизация XML-документов дает им те же преимущества.Что, вероятно, лучше всего здесь, так это реверс-инжиниринг ваших классов для создания схемы с использованием атрибутов сериализации XML.Когда вы это сделаете, C# создаст собственное средство чтения данных для вашего XML-файла, что значительно повысит производительность.
Одна из самых больших затрат XML заключается в том, что его необходимо анализировать по строкам.Чем больше предположений вы можете сделать о своих XML-файлах (например,их структуру), тем лучше будет ваша производительность.
Таким образом, в конечном итоге, как и во многих других вещах, потребность в повышении производительности достаточна, чтобы оправдать затраты времени разработчиков.Или существует достаточно сильное желание использовать статически типизированные системы, чтобы оправдать затраты на написание XSD.
В конечном итоге потребности вашего проекта будут определять, что вам следует делать, но статическая типизация и производительность являются основными преимуществами, которые следует учитывать.
Другие советы
Хранение репозитория XML-файлов без XSD похоже (на мой взгляд) на наличие базы данных, в которой все типы объявлены как VARCHAR(n).Вам не важно, какую информацию вы получите, вам просто нужна информация.
XSD гарантируют, что ваши XML-файлы будут иметь тот тип входных данных, который вы ожидаете.Они придают структуру вашей модели, то есть именно то, что вы ищете.
Что ж, как сказано в других сообщениях и в вопросе, XSD гарантирует, что вы используете правильный тип в нужном месте вашего XML, и что вам придется дважды подумать, прежде чем менять его структуру.
Но XSD действительно слишком многословен, если можно так сказать.И иногда это действительно путаница, т. е. описывать сложную структуру с условным содержанием.
Будем надеяться, что XSD — не единственный способ проверки XML. Гораздо более простой подход — использовать РасслабьсяНГ, и особенно его компактный синтаксис, который действительно более читабелен, чем вы могли бы себе представить с помощью XSD.
Одним из больших преимуществ использования схем является то, что они помогают убедиться в том, что все участники проекта согласны с тем, как следует располагать XML-документ.Кроме того, используя схемы, вы можете включить проверку в своем синтаксическом анализаторе XML, что упрощает определение того, когда какой-то фрагмент кода дает сбой из-за неправильного XML.
С другой стороны, поддержка схем может быть утомительной и может не стоить затраченных усилий в зависимости от вашего проекта.
Если у вас нет схемы, вам придется заново реализовать всю проверку самостоятельно (или вообще не выполнять проверку и произойдет сбой при недопустимом вводе).Синтаксические анализаторы/валидаторы XSD выполняют всю эту работу за вас и оптимизируются и отлаживаются экспертами в своей области.Зачем вам переделывать всю эту работу самостоятельно?
XSD — не единственная доступная схема XML.Вместо этого используйте http://relaxng.org/.RelaxNG позволяет выразить схему в XML, вместо необходимости изучать еще один «язык» данных, как это делает XSD.
Важной причиной развития XML является то, что он позволяет использовать данные из большего количества источников и разными способами, поскольку он стал широко принятым стандартом для обмена данными между любым количеством компьютерных систем.