Электронный магазин на Java и XML

         

Два возможных DTD...



Листинг 2.8.  Два возможных DTD для описания телефонного звонка.

<!—DTD для элемента phone_call-->
<!ENTITY % valid jihone_ch gits '" (1|2|A|B|C|3|D|E|F|4|G|H|I|5|J|K|L|6|M|N| 0|7|P|R|S|8|T|U|V|9|W|X|Y|0)">
<'ELEMENT phone_call (from*.to*,content)>
<!ELEMENT from (phone_number)>
<!ELEMENT phone_number ((dig!t?,digit'.digit?,dash?)?, digit, digit, digit, dash, digit, digit,digit,digit)>
<!ELEMENT digit EMPTY>
<!ATTLIST digit number %valid_phone_dlgits; #REQUIRED>
<!ELEMENT dash EMPTY>
<!ATTLIST dash value CDATA #FIXED "-">
OELEMENT to (phone_number)>
<iELEMENT content (caller|answerer)*>
<'ELEMENT caller (#PCDATA)>


<!ELEMENT answerer (#PCDATA)>
<!—упрощенное определение DTD для элемента phone_call-->
<!ELEMENT phone_call (from*,to*,content)>
<!ELEMENT from EMPTY>
<!ATTLIST from phone_number CDATA #REQUIRED>
<!ELEMENT to EMPTY>
<!ATTL1ST to phone_number CDATA #REQUIRED>
<!ELEMENT content (caller|answerer)*>
<!ELEMENT caller (#PCDATA)>
<!ELEMENT answerer (#PCDATA)>

В большинстве случаев достаточно использовать второе, упрощенное определение DTD, так как первое является слишком сложным. Сколько потребуется времени, чтобы разобраться в нем и понять, что это всего лишь определение обычного телефонного номера? В данном случае возможная область применения DTD, несомненно, преувеличена. Нужно ли нам на самом деле выделять каждую цифру телефонного номера? Может быть, данный пример несколько утрирован, но он иллюстрирует основную идею' не злоупотребляйте подробностями при создании DTD или документов XML. Здесь существует некий предел, переход за который может оказаться губительным.

 



Содержание раздела