Какая структура XML имеет больше смысла?

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

  •  21-08-2019
  •  | 
  •  

Вопрос

Не вдаваясь в подробности, мы хотим использовать XML в качестве метаданных для описания ограничений на свойства (это сокращенный пример, и XSD не поддерживает предложенную нами сложную модель), рассматриваются два варианта, какая из следующих структур XML имеет больший смысл?

Вариант 1)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quanitity</name>
      <contraints>
         <contraint type="isRequired">
            <value>true</value>
         </contraint>
         <contraint type="regex">
            <value>^[0-9]$</value>
         </contraint>
         <contraint type="regex">
            <value>^[a-zA-Z]$</value>
         </contraint>
      </contraints>
   </Property>
</Properties>

Вариант 2)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quantity</name>
      <IsRequired>true</IsRequired>
      <Regex>^[0-9]$</Regex>
      <Regex>^[a-zA-Z]$</Regex>
   </Property>
</Properties>
Это было полезно?

Решение

Я бы, вероятно, выбрал вариант № 2, поскольку задание XML лучше описывает данные (что, в конце концов, и должен делать XML), и поэтому его легче читать и он менее подробный.Вариант № 1 немного близок к тому, чтобы иметь <name> и <value> теги на мой вкус.

Другие советы

Для большей гибкости я бы выбрал вариант № 1.Это позволит вам добавлять множество различных типов ограничений и пользовательских правил.

Это зависит от того, как вы хотите проанализировать / обработать XML и хотите ли вы иметь возможность его проверить.

С точки зрения проверки (если вы рассматриваете автоматическую проверку с помощью XSD во время компиляции) Вариант 2 является лучшим выбором, поскольку содержимое тегов будет иметь определенный тип (например, регулярное выражение), в то время как <value> не удалось проверить правильность содержимого тега.

Кроме того, я бы, вероятно, выбрал вариант 2, касающийся синтаксического анализа и обработки, если вы используете анализатор SAX, поскольку вы могли бы переключать состояния на основе тегов.

Лично я бы выбрал первый вариант, я подозреваю, что было бы проще написать код для синтаксического анализа и выполнить проверку ошибок.К тому же это имеет больше смысла семантически для моего мозга.

Тем не менее, я думаю, вы обнаружите, что это "личный выбор", подойдет и то, и другое.

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