Что такое пустой элемент?

Согласно спецификации XML, это - определение пустого элемента:

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

(см.: http://www.w3.org/TR/REC-xml/#NT-content)

Теперь, у меня нет проблемы при понимании пустых тегов элементов: и никакое недоразумение не возможно. Но это кажется мне, стандарт противоречит себе в другом случае: с одной стороны, это говорит что любой тег без content пусто, с другой стороны, это говорит, что это может быть представлено начинать-тегом, сопровождаемым сразу конечным тэгом. Но если мы смотрим на определение content:

[43] content ::= CharData? ((element | Reference | CDSect | PI | Comment) CharData?)*

Это кажется мне этим content состоит из двух дополнительных частей, CharData? и группа ()*. Но так как обе этих части являются дополнительными, это означало бы, что ничто (как в, отсутствие символов) не соответствует этому производству. ТАКИМ ОБРАЗОМ, если я попытался бы соответствовать этому определению содержания к тому, что внутри Я получил бы положительное совпадение. Так, с одной стороны, это - пустой тег, потому что это - "начинать-тег, сразу сопровождаемый конечным тэгом", с другой стороны, это не пусто, потому что между тегами я могу положительно соответствовать определению порождающего правила [43] для содержания, в этом случае это содержит содержание, что означает, что это не может быть пусто.

Кто-либо может объяснить, какие правила имеют приоритет? Кто-либо знает о каком-либо DOM или реализациях синтаксического анализатора, которые имеют различные мнения об этом?

22
задан Roland Bouman 17 February 2010 в 09:24
поделиться

2 ответа

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

Это может быть правдой, но формулировка в спецификации по этому вопросу довольно ясна. В следующем абзаце есть даже примеры для пустых элементов.

<IMG align="left"
 src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

Таким образом, единственный способ (в данном контексте, с окружающей формулировкой и примерами) прочитать

Элемент без содержимого

- это включить «содержимое, которое (при сопоставлении с продукцией) полностью пустое» ( т.е. нулевой длины, даже не пробела).

12
ответ дан 29 November 2019 в 05:18
поделиться
<element />

и

<element></element>

оба являются пустыми элементами. Для получения такого результата необходимо интерпретировать любое производство по стандартам.

7
ответ дан 29 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: