Самозакрывающиеся tags в файлах XML

Я заметил, что они работают с PHP SimpleXML.

Но все XML-примеры, которые я нашел в Интернете, закрывают их по-старому:

Есть ли причина, почему я должен использовать старый метод?

Solutions Collecting From Web of "Самозакрывающиеся tags в файлах XML"

См. Спецификации W3C для XML и XHTML:

Это зависит от объявления типа элемента

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

но также

Теги с пустыми элементами могут использоваться для любого элемента, у которого нет содержимого, независимо от того, объявлено ли оно с помощью ключевого слова EMPTY. Для интероперабельности тег с пустым элементом ДОЛЖЕН использоваться и ДОЛЖЕН использоваться только для элементов, объявленных ПУСТОЙ.

Это означает, что когда ваш DTD содержит что-то вроде

 < !ELEMENT img EMPTY> 

вы должны использовать

  

если у вас нет оснований для использования

  

Обратите внимание, что СЛЕДУЕТ определено в RFC2119 как

Это слово или прилагательное «РЕКОМЕНДОВАНО» означает, что в определенных обстоятельствах могут существовать веские причины, чтобы игнорировать определенный предмет, но все последствия должны быть поняты и тщательно взвешены перед выбором другого курса.

Если вы работаете с XML, который не имеет DTD или Schema, вы также можете влиять на то, как XML сериализуется с предопределенной константой libxml :

LIBXML_NOEMPTYTAG (целое число): развернуть пустые tags (например,
до
).

Но обратите внимание, что этот параметр в настоящее время доступен только в функциях DOMDocument::save и DOMDocument::saveXML , поэтому вы не можете использовать его с SimpleXml.

Когда вы хотите использовать PHP- анализатор xml , вы можете указать действия по стартовому тегу, тегу close или полному тегу. Основываясь на ваших пожеланиях, вы можете захотеть иметь действие специально для тега close.

В некоторых случаях необходимы отдельные tags open / close: в качестве примера я обнаружил, что tags

Они одинаковы для XML, но могут отличаться в зависимости от вашего использования. Например, в xhtml1.0 есть официальный список для тегов, разрешенных для самозакрывания. Пока вы держите свой doctype в правильном xhtml, вы должны быть в порядке. Проверьте этот вопрос о stackoverflow для более детального объяснения.

Да, это не так просто, как кажется сначала.

Различия в XSD:

Прежде всего, это зависит от вашего типа данных. Если вы используете определение схемы XSD, которое определяет типы ваших элементов, тогда может использоваться только для типов строк . Потому что, вот что это такое, на самом деле это пустая строка: "" .

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

Различия в JAXB:

JAXB (Java XML Binding) имеет аналогичные причуды. Он сопоставил бы как разные значения в зависимости от типа целевых данных :

  • для String это будет ”
  • для Integer это будет 0.
  • для других типов, он просто пропустит это.

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

HTML:

В HTML всегда есть третья опция без закрытия тега . Я не знаю о вас, но несколько раз в день, я должен напомнить себе, что HTML – это не просто XML. И это на самом деле означает, что
и
не то же самое. Вы не должны использовать
в HTML, и вы не должны использовать приложение в XHTML.

Угловая 2+:

Но я действительно хотел получить, продолжая последнее утверждение, если вы используете фреймворки, такие как Angular2 +, есть еще одна вещь, о которой нужно помнить.

Без большого погружения в деталях, Angular заменяет собственные HTML-tags HTML-шаблонами, которые связаны с компонентами. Однако он поддерживает только формат . Вам не разрешено использовать формат .

Я лично стараюсь избегать синтаксиса , потому что у него есть все возможное, чтобы все пошло не так. (= плохой ажи ).

Это зависит от вашей среды и данных. В НЕКОТОРЫХ системах существует разница между пустой строкой и пустой строкой. То есть, тип строки, который является «Nothing», сильно отличается от строки, которая фактически существует, но содержит нулевые символы.

Они могут быть представлены в XML как:

null = ""

empty = ""

9 раз из 10, это не имеет особого значения, но бывают случаи, когда разница между данными и пустыми данными на самом деле очень значительна («Я еще не знаю») «Я узнал, и он был пуст. “)