<!ELEMENT address-book (address-book-card*)>
<!ELEMENT address-book-card (person?, private?, work?)>
<!ATTLIST address-book-card
					id ID #REQUIRED>

<!ELEMENT person (names, birth-date?)>
<!ELEMENT names (first-names, last-names?)>
<!ELEMENT first-names (name*, called-by-name, name*)>
<!ELEMENT called-by-name (#PCDATA)>
<!ELEMENT last-names (name+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT birth-date (#PCDATA)>

<!ELEMENT private (cellular-phones?, email-addresses?, addresses?)>

<!ELEMENT work (work-place+)>
<!ELEMENT work-place (title?, department?, organization, cellular-phones?, email-addresses?, addresses?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT department (#PCDATA)>
<!ELEMENT organization (#PCDATA)>

<!ELEMENT addresses (primary-address, secondary-address*)>
<!ELEMENT primary-address (address)>
<!ELEMENT secondary-address (address)>
<!ELEMENT address ((se-address | generic-address), phone*)>
<!ELEMENT se-address EMPTY>
<!ATTLIST se-address
					street-address 	CDATA #IMPLIED
					postal-code			CDATA #IMPLIED
					postal-address	CDATA #IMPLIED>
<!ELEMENT generic-address EMPTY>
<!ATTLIST generic-address
					street-address	CDATA #IMPLIED
					city						CDATA #IMPLIED
					state_province	CDATA #IMPLIED
					zip_postal-code CDATA #IMPLIED
					country					CDATA #IMPLIED>

<!ELEMENT cellular-phones (phone+)>
<!ELEMENT phone (number, comment?)>
<!ELEMENT number (#PCDATA)>
<!ELEMENT comment (#PCDATA)>

<!ELEMENT email-addresses (email-address+)>
<!ELEMENT email-address (email, comment?)>
<!ELEMENT email (#PCDATA)>
