Может ли кто-нибудь объяснить разницу между следующими операторами DTD?
<!ELEMENT all (book+, dvd+)>
а также
<!ELEMENT all (book, dvd)+>
Может ли кто-нибудь объяснить разницу между следующими операторами DTD?
<!ELEMENT all (book+, dvd+)>
а также
<!ELEMENT all (book, dvd)+>
Модель контента (книга+, dvd+) соответствует последовательности элементов: сначала один или несколько элементов книги (это book+
), затем (это ,
) один или несколько элементов dvd (это dvd+
). Таким образом, этой модели контента соответствует следующее:
<book/><dvd/>
<book/><book/><book/><dvd/>
<book/><dvd/><dvd/><dvd/><dvd/><dvd/>
<book/><book/><book/><book/><dvd/><dvd/>
и т.п.
Модель контента (книга, dvd)+ соответствует одному или нескольким вхождениям последовательности, состоящей из одной книги, за которой следует один dvd. Таким образом, следующее соответствует этому:
<book/><dvd/>
<book/><dvd/><book/><dvd/>
<book/><dvd/><book/><dvd/><book/><dvd/>
<book/><dvd/><book/><dvd/><book/><dvd/><book/><dvd/>
и т.п.
Разница в том, что в первом выражении два оператора + применяются к именам отдельных элементов book и dvd; во втором + относится к последовательности (книге, DVD) в целом.
Обратите внимание, что первый пример в каждом списке является допустимым для обеих моделей контента, а остальные — нет.
С 0 знанием dtd:
Я бы сказал, что первый должен содержать как минимум 1 книгу И 1 DVD. Но может содержать много книг и/или DVD.
Второй должен содержать как минимум 1 книгу ИЛИ 1 DVD. Но может содержать много книг и/или DVD.