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

         

DTD для описания структуры заказа (order.dtd)



Листинг 5.7. DTD для описания структуры заказа (order.dtd)

<!ELEMENT order (item*, customer_info, authorization, fulfillment )>
<!ATTLIST order id ID #REQUIRED date CDATA #REQUIRED>
<!ELEMENT item (#PCDATA)>
<!ATTLIST item id NMTOKEN #REQUIRED quantity NMTOKEN #REQUIRED price CDATA #REQUIRED>
<!ELEMENT customer_info (first_name, last_name, address1, address2, city, state, zip, email, phone, credit_info )>
<!ELEMENT first_name (#PCDATA)>
<!ELEMENT last_name (#PCDATA)>
<!ELEMENT address1 (#PCDATA)>
<!ELEMENT address2 (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>


<!ELEMENT zip (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT credit_info (card_numer, card_type, expiration )>
<!ELEMENT card_number (#PCDATA)>
<!ELEMENT card_type (#PCDATA)>
<!ELEMENT expiration_date (#PCDATA)>
<!ELEMENT authorization (reason?, auth_code?)>
<!ATTLIST authorization approved CDATA #IMPLIED>
<!ELEMENT reason (#PCDATA)>
<!ELEMENT authorization_code (#PCDATA)>
<!ELEMENT fulfillment (backorder_date, shipper, shipping_class, cost, tracking_number, date_sent)>
<!ELEMENT shipper (#PCDATA)>
<!ELEMENT shipping_class (#PCDATA)>
<!ELEMENT cost (#PCDATA)>
<!ELEMENT tracking_number (#PCDATA)>
<!ELEMENT date_sent (#PCDATA)>

В листинге 5.8 приведен метод, который создает документ XML, соответствующий этому определению DTD. Это примитивный, слишком прямолинейный метод, в котором просто перебираются все поля класса Order и для каждого поля выписываются элементы и атрибуты XML. Такой подход не всегда является оптимальным, так как изменения в классах, входящих в класс Order, приведут к необходимости изменения самого метода. Таким образом, теряются преимущества инкапсуляции, которую обеспечивает объектно-ориентированный подход к программированию. Было бы лучше рассматривать эти классы в единстве. Более удачный метод создания документа XML мы рассмотрим в главе 6.



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