2009-08-10 1 views
1

Связанный узел здесь - XML Attributes vs Elements , но это был вопрос дизайна.Если для схемы требуется атрибут, и я отправляю его как элемент, недействителен ли он?

Мой вопрос касается действительности.

Если схема требует

<record name="foo" description="bar" /> 

и я поставляю

<record> 
    <name>foo</name> 
    <description>bar</description> 
</record> 

Будет ли XML будет считаться недействительным?

И наоборот: если элементы были указаны и я предоставляю атрибуты, это недействительно?

Есть ли ссылка в спецификации XML, которая должна анализировать XML-парсер в этом случае, где семантика одинакова, но буквальная структура XML отличается?

ответ

1

Атрибуты и элементы ни в коей мере не взаимозаменяемы. Если эта схема требует одного, использование другого недопустимо, и логика проверки схемы XML должна отклонить ее. Являются ли они семантически идентичными, также весьма сомнительны.

2

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

0

В XML, схема представляет собой строгий контракт: , если вы не согласны с этим, сделка завершена!

Если атрибуты были указаны как элементы, является ли XML действительным?

Ответ: недействительный.

Если элементы были указаны как атрибуты, является ли XML действительным?

Ответ: недействительный.

Что должен делать анализатор XML в этом случае?

сбой при разборе по причинам обоснованности схемы.

XML-читатель не будет адаптироваться к какой-либо ошибке внутри исходного документа. По этой теме мир XML противоположен миру HTML. Эта строгость является свойством XML, что позволяет легко анализировать, обрабатывать и генерировать.