<!--
        This is an XML Document Type Definition (DTD) for
        NAML (Name and Address Markup Language).
        Date: 29th of October, 1999
        Cognito, Inc, Level 12, 67 Albert Avenue
	    Chatswood, NSW 2067, AUSTRALIA
	    Contact: rkumar@msi.com.au (Ram Kumar)
        Version: 0.6
        Copyright (c) Cognito, Inc.  
-->


<!--===========================NAML Document=========================================-->
<!--The root element NAML contains the element RECORD. All other elements are then 
    defined within the RECORD element. This is so multiple records can be in the one XML 
    file. The RECORD element must be followed by ONE of either the NAME, PERSON, COMPANY,
    or PERSON_DETAILS elements. It can then be followed by the CARE_OF element which is
    also optional. It must then be followed by one of either the ADDRESS, ADDRESS_LINES, 
    or ADDRESS_DETAILS elements which can occur multiple times. It can then be followed
    by the OTHER_DATA element which can occur multiple times.
-->
<!ELEMENT naml                                  (record+)>					
<!ELEMENT record                                ((name|person|company|person_details)?,
												  care_of?, 
												 (address|address_lines|address_details)*, 
                                                  other_data*)>


<!--===========================Name Section==========================================-->
<!--In the name section if the PERSON_DETAILS element is used it must be followed by 
    either the elements TITLE, FIRST_NAME, MIDDLE_NAME, LAST_NAME, SUFFIX, 
    ACCOUNT_DESCRIPTOR or its end tag "/PERSON_DETAILS".
-->
<!ELEMENT name                                  (#PCDATA)>
<!ELEMENT person                                (#PCDATA)>
<!ELEMENT company                               (#PCDATA)>

<!ELEMENT person_details                        (title*, 
                                                 first_name?, middle_name*, last_name?, 
                                                 suffix*, account_descriptor*)>
<!ELEMENT title                                 (#PCDATA)>
<!ELEMENT first_name                            (#PCDATA)>
<!ELEMENT middle_name                           (#PCDATA)>
<!ELEMENT last_name                             (#PCDATA)>
<!ELEMENT suffix                                (#PCDATA)>
<!ELEMENT account_descriptor                    (#PCDATA)>

<!ELEMENT care_of								(#PCDATA)>


<!--===========================Address Section=======================================-->
<!--In the address section if the ADDRESS_LINES element is used it must be followed by
    the elements ADDRESS_LINE1, ADDRESS_LINE2, ADDRESS_LINE3, ADDRESS_LINE4 and 
    ADDRESS_LINE5. If the ADDRESS_DETAILS element is used it must be followed by ONE of 
    either POSTAL or POSTAL_DETAILS, ONE of either STREET or STREET_ADDRESS_DETAILS,
    ONE of either PLACE or PLACE_DETAILS, ONE of either LOCALITY or LOCALITY_DETAILS, 
    ONE of either STATE or STATE_DETAILS, ONE of either POSTCODE or POSTCODE_DETAILS, 
    the COUNTRY element or its end tag "/ADDRESS_DETAILS". Each of the elements ADDRESS,
    ADDRESS_LINES, and ADDRESS_DETAILS have a required attribute named ADDRESS_TYPE.
    This is included to allow for customers that have multiple types of addresses,
    e.g. billing address, residential address, postal address, etc.
-->
<!ELEMENT address                               (#PCDATA)>
<!ATTLIST address			address_type CDATA  #REQUIRED>

<!ELEMENT address_lines                         (address_line1?, address_line2?,
                                                 address_line3?, address_line4?, 
						 						 address_line5?)>
<!ATTLIST address_lines		address_type CDATA  #REQUIRED>
<!ELEMENT address_line1                         (#PCDATA)>
<!ELEMENT address_line2                         (#PCDATA)>
<!ELEMENT address_line3	                        (#PCDATA)>
<!ELEMENT address_line4	                        (#PCDATA)>
<!ELEMENT address_line5	                        (#PCDATA)>

<!ELEMENT address_details                       ((postal|postal_details)?, 
                                                 (street|street_address_details)?, 
                                                 (place|place_details)?, 
                                                 (locality|locality_details)?,
                                                 (state|state_details)?, 
                                                 (postcode|postcode_details)?, 
                                                  country?)> 
<!ATTLIST address_details   address_type CDATA	#REQUIRED>
<!ELEMENT postal                                (#PCDATA)>


<!--If the element POSTAL_DETAILS is used it must be followed by either the elements
    POSTAL_TYPE, POSTAL_NUMBER_PREFIX, POSTAL_NUMBER, POSTAL_NUMBER_SUFFIX, RURAL_TYPE, 
    RURAL_NUMBER or its end tag "/POSTAL_DETAILS".
-->
<!ELEMENT postal_details                        (postal_type?, postal_number_prefix?, 
						 						 postal_number?, postal_number_suffix?, 
						 						 rural_type?, rural_number?)>
<!ELEMENT postal_type                           (#PCDATA)>
<!ELEMENT postal_number_prefix	                (#PCDATA)>
<!ELEMENT postal_number	                        (#PCDATA)>
<!ELEMENT postal_number_suffix	                (#PCDATA)>
<!ELEMENT rural_type                            (#PCDATA)>
<!ELEMENT rural_number                          (#PCDATA)>

<!ELEMENT street                                (#PCDATA)>


<!--If the element STREET_ADDRESS_DETAILS is used it must be followed by either the 
    elements SUB_DWELLING or SUB_DWELLING-DETAILS, STREET-DETAILS or its end tag "/STREET_
    ADDRESS_DETAILS". Sub-dwelling is part of a street information and hence is under 
    street_address_details.
-->
<!ELEMENT street_address_details                ((sub_dwelling|sub_dwelling_details)?,
                                                 street_details?)>
<!ELEMENT sub_dwelling	                        (#PCDATA)>


<!--If the element SUB_DWELLING_DETAILS is used it must be followed by either the 
    elements SUB_DWELLING_TYPE, SUB_DWELLING_NUMBER, SUB_DWELLING_NUMBER_SUFFIX,
    LEVEL_TYPE, LEVEL_NUMBER, LEVEL_NUMBER_SUFFIX, BLOCK_TYPE, BLOCK_NUMBER, 
    BLOCK_NUMBER_SUFFIX, EXTRA_TYPE, EXTRA_NUMBER, or its end tag "/SUB-DWELLING_DETAILS".
-->
<!ELEMENT sub_dwelling_details                  (sub_dwelling_type?, sub_dwelling_number?, 
						 						 sub_dwelling_number_suffix?, level_type?, 
						 						 level_number?, level_number_suffix?,
                                                 block_type?, block_number?, 
						 						 block_number_suffix?,
                                                 extra_type?, extra_number?)>
<!ELEMENT sub_dwelling_type                     (#PCDATA)>
<!ELEMENT sub_dwelling_number                   (#PCDATA)>
<!ELEMENT sub_dwelling_number_suffix            (#PCDATA)>
<!ELEMENT level_type                            (#PCDATA)>
<!ELEMENT level_number                          (#PCDATA)>
<!ELEMENT level_number_suffix                   (#PCDATA)>
<!ELEMENT block_type                            (#PCDATA)>
<!ELEMENT block_number                          (#PCDATA)>
<!ELEMENT block_number_suffix                   (#PCDATA)>
<!ELEMENT extra_type                            (#PCDATA)>
<!ELEMENT extra_number                          (#PCDATA)>


<!--If the element STREET_DETAILS is used it must be followed by either the elements
    STREET_NUMBER_TYPE, STREET_NUMBER, STREET_NUMBER_SUFFIX, STREET_PREDIRECTION, 
    STREET_NAME, STREET_TYPE, STREET_POST_DIRECTION, STREET_POST_NAME, or its end tag 
    "/STREET_DETAILS".
-->
<!ELEMENT street_details                        (street_number_type?, street_number?, 
                                                 street_number_suffix?, 
						 						 street_predirection?, street_name?, 
						 						 street_type?, street_post_direction?, 
                                                 street_post_name?)>
<!ELEMENT street_number_type                    (#PCDATA)>
<!ELEMENT street_number                         (#PCDATA)>
<!ELEMENT street_number_suffix                  (#PCDATA)>
<!ELEMENT street_predirection                   (#PCDATA)>
<!ELEMENT street_name                           (#PCDATA)>
<!ELEMENT street_type                           (#PCDATA)>
<!ELEMENT street_post_direction                 (#PCDATA)>
<!ELEMENT street_post_name                      (#PCDATA)>

<!ELEMENT place                                 (#PCDATA)>


<!--If the element PLACE_DETAILS is used it must be followed by either the elements
    MINOR_PLACE_NAME, MINOR_PLACE_TYPE, MINOR_PLACE_POST_NAME, MAJOR_PLACE_NAME,
    MAJOR_PLACE_TYPE, MAJOR_PLACE_POST_NAME, or its end tag "/PLACE_DETAILS".
-->
<!ELEMENT place_details                         (minor_place_name?, minor_place_type?, 
                                                 minor_place_post_name?, major_place_name?, 
                                                 major_place_type?, major_place_post_name?)>
<!ELEMENT minor_place_name                      (#PCDATA)>
<!ELEMENT minor_place_type                      (#PCDATA)>
<!ELEMENT minor_place_post_name                 (#PCDATA)>
<!ELEMENT major_place_name                      (#PCDATA)>
<!ELEMENT major_place_type                      (#PCDATA)>
<!ELEMENT major_place_post_name                 (#PCDATA)>

<!ELEMENT locality                              (#PCDATA)>


<!--If the element LOCALITY_DETAILS is used it must be followed by either the 
    elements SUBLOCALITY_NAME, SUBLOCALITY_CONNECTOR, TOWN_NAME, REGION_NAME,
    REGION_TYPE, or its end tag "/LOCALITY_DETAILS".
-->
<!ELEMENT locality_details                      (sublocality_name?, sublocality_connector?, 
						 						 town_name?, region_name?, region_type?)>
<!ELEMENT sublocality_name                      (#PCDATA)>
<!ELEMENT sublocality_connector                 (#PCDATA)>
<!ELEMENT town_name                             (#PCDATA)>
<!ELEMENT region_name                           (#PCDATA)>
<!ELEMENT region_type                           (#PCDATA)>

<!ELEMENT state                                 (#PCDATA)>


<!--If the element STATE_DETAILS is used it must be followed by either the elements
    STATE_NAME, STATE_TYPE, or its end tag "/STATE_DETAILS".
-->
<!ELEMENT state_details                         (state_name?, state_type?)>
<!ELEMENT state_name                            (#PCDATA)>
<!ELEMENT state_type                            (#PCDATA)>

<!ELEMENT postcode                              (#PCDATA)>


<!--If the element POSTCODE_DETAILS is used it must be followed by either the 
    elements POST_CODE, POST_CODE_OTHER, or its end tag "/POSTCODE_DETAILS".
-->
<!ELEMENT postcode_details                      (post_code?, post_code_other?)>
<!ELEMENT post_code                             (#PCDATA)>
<!ELEMENT post_code_other                       (#PCDATA)>

<!ELEMENT country                               (#PCDATA)>


<!--===========================Other data Section====================================-->
<!--The OTHER_DATA element can be contained in the document for Non name and address
    data (extra data) and can be more than an extra data.
-->
<!ELEMENT other_data                            (#PCDATA)>
