I have the following .dtd
file
<!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>
I don't quite understand this line:
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
For the element DAY
, it has DATE
and Enumeration
+ (either HOLIDAY
or PROGRAMSLOT+
), in the following statements, which one is correct?
A. DAY
element only contains DATE
and multiple HOLIDAY
only
B. DAY
element only contains DATE
and multiple PROGRAMSLOT
only
C. DAY
element contains DATE
and multiple HOLIDAY
& PROGRAMSLOT
I don't understand why it can't be simplified to
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT)+)>
Thanks
I think it is C: you must have a DAY followed by a sequence in which every item in the sequence is of type HOLIDAY or a sequence of PROGRAMSLOT
Don't see the point of PROGRAMSLOT+. With
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT)+)>
you can achieve the same flexibility. All following examples are correct in my opinion:
DATE, HOLIDAY, HOLIDAY,HOLIDAY
DATE, PROGRAMSLOT, PROGRAMSLOT, PROGRAMSLOT
DATE, PROGRAMSLOT, HOLIDAY, HOLIDAY, PROGRAMSLOT
DATE, HOLIDAY, PROGRAMSLOT, HOLIDAY, PROGRAMSLOT
Following examples are invalid:
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