2010-04-19 4 views
3

Я всегда думаю о xml как набор структура данных. То есть:Должен ли xml представлять набор или список?

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

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

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

Вопрос один: ли эти две вещи logicly equivalant?


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

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

Или вам нужно сделать это следующим образом:

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

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


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

ответ

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

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

+1

+1 @sixtyfootersdude Сторона примечания: XML имеет что-то, называемое «порядок документов». Порядок узлов имеет значение в XML, поэтому даже если в образцах 1.1 и 1.2 существует «логическая эквивалентность» (что является вопросом интерпретации), документы не эквивалентны * эквивалентно (точка @ Oded's № 1). – Tomalak

1

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

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

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

1

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

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

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

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