Должен ли xml представлять набор или список? - PullRequest
3 голосов
/ 19 апреля 2010

Я всегда думаю о xml как о set структуре данных. То есть:

<class>
 <person>john</person>
 <person>sarah</person>
</class>

Эквивалентно:

<class>
 <person>sarah</person>
 <person>john</person>
</class>

Вопрос первый: Эти две вещи логически эквивалентны?


Вам разрешено делать такие вещи в XML?

<methodCall>
  <param>happy</param>
  <param>sad</param>
</methodCall>

Или вам нужно сделать это так:

<methodCall>
  <param arg="1">happy</param>
  <param arg="2">sad</param>
</methodCall>

Вопрос второй: Эти две вещи логически эквивалентны?


Вопрос третий: Обычно XML рассматривается как набор или список?

Ответы [ 3 ]

6 голосов
/ 20 апреля 2010
  1. Они логически эквивалентны, если вы не заботитесь о порядке сортировки.
  2. Оба являются допустимыми XML. Они не являются логически эквивалентными, так как второй образец имеет дополнительную информацию.
  3. XML рассматривается как иерархия, а не набор или список.

XML может представлять список, и он может представлять набор. Он тоже не структурирован. Наличие нескольких идентичных элементов не является ошибкой, поэтому в этом отношении оно не установлено на основе.

1 голос
/ 20 апреля 2010

Это может быть лучше разделить на три отдельных вопроса, но в любом случае:

1) Порядок элементов важен в XML, но может не относиться к вашему приложению. Рассмотрим XML, представляющий книгу: ясно, что порядок абзацев имеет первостепенное значение. Таким образом, XML в вашем втором примере в порядке.

2) Они не являются эквивалентными документами XML, но ваше приложение может рассматривать их как эквивалентные. Или нет. XML - это формат для описания вещей; это зависит от приложений, чтобы интерпретировать их. Возможно, вы захотите изучить схему XML для проверки документов.

3) Элементы могут дублироваться в XML, и их порядок важен. Однако данная схема документа может обеспечить соблюдение правил уникальности и / или порядка. Следовательно, могут быть представлены как наборы, так и списки. Я полагаю, что вы можете считать необработанный XML упорядоченным списком по умолчанию.

1 голос
/ 20 апреля 2010

Узлы XML представляют собой список, а не набор, хотя, если быть более точным, на самом деле они представляют собой древовидную структуру. Рассмотрим тот факт, что вы можете сделать это в XML:

<example>
  <foo/>
  <foo/>
</example>

Очевидно, что если бы это был набор, последний элемент /example/foo был бы недоступен, так как первый элемент /example/foo уже существует в наборе. Однако, независимо от того, кажутся ли они одинаковыми, они на самом деле являются разными узлами, что означает, что они не могут быть представлены с использованием набора без какой-либо дополнительной работы, тогда как список является естественной структурой для представления узлов документа XML (если так как они на одной и той же «высоте» в дереве).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...