Перечисление и знак плюс вместе в файле DTD? - PullRequest
0 голосов
/ 14 мая 2019

У меня есть следующий .dtd файл

<!ELEMENT TVSCHEDULE (CHANNEL+)>
    <!ELEMENT CHANNEL (BANNER,DAY+)>
    <!ELEMENT BANNER (#PCDATA)>

    <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
    <!ELEMENT HOLIDAY (#PCDATA)>
    <!ELEMENT DATE (#PCDATA)>

    <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
    <!ELEMENT TIME (#PCDATA)>
    <!ELEMENT TITLE (#PCDATA)>
    <!ELEMENT DESCRIPTION (#PCDATA)>

    <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
    <!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
    <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
    <!ATTLIST TITLE RATING CDATA #IMPLIED>
    <!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

Я не совсем понимаю эту строку:

    <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>

Для элемента DAY он имеет DATE и Enumeration + (либо HOLIDAY, либо PROGRAMSLOT+), в следующих утверждениях, какое из них является правильным?

A. Элемент DAY содержит только DATE и несколько HOLIDAY только

B. Элемент DAY содержит только DATE и несколько PROGRAMSLOT только

C. DAY элемент содержит DATE и несколько HOLIDAY & PROGRAMSLOT

Я не понимаю, почему это нельзя упростить до

<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT)+)>

Спасибо

1 Ответ

1 голос
/ 14 мая 2019

Я думаю, что это C: у вас должен быть ДЕНЬ, за которым следует последовательность, в которой каждый элемент в последовательности имеет тип HOLIDAY или последовательность PROGRAMSLOT

Не вижу смысла в PROGRAMSLOT +.С

<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT)+)>

вы можете добиться такой же гибкости.Все следующие примеры, на мой взгляд, верны:

DATE, HOLIDAY, HOLIDAY,HOLIDAY
DATE, PROGRAMSLOT, PROGRAMSLOT, PROGRAMSLOT
DATE, PROGRAMSLOT, HOLIDAY, HOLIDAY, PROGRAMSLOT
DATE, HOLIDAY, PROGRAMSLOT, HOLIDAY, PROGRAMSLOT

Следующие примеры недействительны:

DATE, DATE // DATE can only occur once
DATE // the group of HOLIDAY OR PROGRAMLIST must occur at least once
HOLIDAY, DATE // DATE must be the first element
...