Есть ли семантическая разница между <tag /> и <tag> </tag> в XML?

avatar
Marcel
14 августа 2019 в 12:41
3699
1
7

У нас есть какая-то проблема с клиентом, который утверждает, что существует семантическая разница между двумя версиями пустого тега в отправляемом XML-файле (чистый XML без HTML ..).

Они ожидают:

 <our-xml>
    <some-tag></some-tag>
 </our-xml>

Отправляем:

 <our-xml>
    <some-tag />
 </our-xml>

Мы придерживаемся мнения, что это точно то же самое, но мы не смогли доказать аргументы фактами. Единственное, что мы нашли, было в https://www.w3.org/TR/REC-xml/#sec-starttags, где написано

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

Есть ли какие-нибудь обсуждения или более четкие документы, на которые мы можем положиться, или мы ошибаемся?

Источник
William Walseth
14 августа 2019 в 13:15
0

См. coderhelper.com/questions/7231902/…

Ответы (1)

avatar
kjhughes
14 августа 2019 в 15:15
9

Нет

Формы начального тега / конечного тега (<tag></tag>) и тега пустого элемента (<tag/>) семантически эквивалентны. Ни один соответствующий синтаксический анализатор XML не будет обрабатывать их по-другому.


Ссылка : Extensible Markup Language (XML) 1.0 (пятое издание)


Историческое примечание: Существует также устаревшая ссылка на совместимость SGML, которую я включил для полноты:

Для взаимодействия следует использовать тег пустого элемента, и его следует использовать только для элементов, которые объявлены ПУСТОЙ.

  • 1.2 Терминология

    для взаимодействия

    [Определение: помечает предложение, описывающее необязательную рекомендацию, включенную для увеличения шансов, что XML-документы могут обрабатываться существующей установленной базой процессоров SGML, которые предшествовали приложению WebSGML Adaptations к ISO 8879.]


Связанные вопросы / ответы:

Pancho
25 марта 2020 в 14:03
1

Спасибо! Я буквально поражен тем, что у вас нет "миллиона" голосов за этот ответ ... возможно, это иллюстрация того, как мало людей на самом деле внимательно изучают наборы инструментов, которые они используют ??

Michael Stum
22 июня 2021 в 15:14
1

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