Каковы преимущества и недостатки использования XML-схем?

StackOverflow https://stackoverflow.com/questions/140355

  •  02-07-2019
  •  | 
  •  

Вопрос

Мы используем тип данных 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 является то, что он позволяет использовать данные из большего количества источников и разными способами, поскольку он стал широко принятым стандартом для обмена данными между любым количеством компьютерных систем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top