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


Избегайте субтрактивного уточнения - часть 2


<!ELEMENT invoice (service*,total_due)>

<!ELEMENT service (description,(duration,rate)?,fee?)>

<!ELEMENT description (#PCDATA)>

<!ELEMENT duration (hours.minutes)>

<!ELEMENT rate (#PCDATA)>

<!ELEMENT fee (#PCDATA)>

<!ELEMENT total_due(#PCDATA)>

Поскольку в вашей фирме больше не используется почасовая оплата, эти объявления становятся ненужными и только вносят путаницу. Например, если ваша фирма за какую-то работу берет с клиента 300 долларов и эта работа выполняется за 3 часа, то существуют по меньшей мере два способа записать эту информацию:

<!-первый способ записи-->

<invoice> <service>

<description>Установка бензинового нacoca</description>

<duration>

<hours>3</hours>

<minutes>0</minutes>

</duration>

<rate>$100</rate>

<fee>$300</fee>

</service>

</invoice>

<!-второй способ записи-->

<invoice>

<service>

<description>Установка бензинового нacoca</description>

<fee>$300</fee>

</service>

</invoice>

Согласно существующему определению DTD, оба эти способа корректны, но только второй отражает реальную ситуацию. Чтобы исключить возможность некорректного использования этого определения, следует удалить элементы rate и duration, как это сделано во втором способе записи.




- Начало -  - Назад -  - Вперед -



Книжный магазин