Соответствует ли порядок тегов действительному XML? - PullRequest
10 голосов
/ 05 ноября 2010

другими словами:

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <tag1>
  <tag1.1></tag1.1>
 </tag1>
 <tag2 />
<root>

совпадает с:

<?xml version="1.0" encoding="UTF-8"?>
    <root>
     <tag2 />
     <tag1>
      <tag1.1></tag1.1>
     </tag1>     
    <root>

Ответы [ 5 ]

12 голосов
/ 05 ноября 2010

Как бы подробно они ни показывались, ваши два примера семантически совпадают.

Это распространенное заблуждение XML, что в правильно сформированном XML-документе порядок родственных элементов является значительным.Спецификация XML 1.0 указывает, что атрибуты неупорядочены, однако ничего не говорит об элементах.Следовательно, процессор XML может сообщать об элементах-родителях в любом порядке.

Тем не менее, я не думаю, что какие-либо обычно используемые процессоры XML сообщают об элементах в другом порядке, в котором они появляются в документе.

Вы спрашиваете о «действительном» документе - это подразумевает, что используется DTD или схема, и, следовательно, это может (или не может) иметь место, когда заказ является релевантным.Существуют механизмы для DTD или схемы, чтобы указать, что порядок элемента релевантен в документе.Однако в ваших примерах не показано использование DTD или схемы.

5 голосов
/ 05 ноября 2010

Это не важно для самого XML. Оба документа, конечно, правильно сформированные XML-документы. Однако они не могут быть действительными ; при проверке с использованием XML-схемы можно указать порядок, а отсутствие элементов в этом порядке сделает документ недействительным в соответствии со схемой. Это можно сделать с помощью элемента xsd:sequence, как описано здесь

1 голос
/ 05 ноября 2010

Это зависит от того, что потребляет XML. Порядок элементов может быть не важен с точки зрения правильности формирования XML-документа (в зависимости от XSD), но некоторые программы / API ожидают чтения XML в алфавитном порядке (например, DataContractSerializer в .NET).

Кроме того, порядок может быть семантически важным (например, если XML представляет документ, порядок очень важен).

1 голос
/ 05 ноября 2010

Это зависит от DTD (или схемы) вашего определения языка.

0 голосов
/ 05 ноября 2010

XML поддерживает порядок документов - они считаются двумя разными документами.

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

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

...