<!ELEMENT addressbook (card*)>
<!ELEMENT card (name, addresses?, work?, internet?, phones?)>

<!ELEMENT name (first+, last*)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT last (#PCDATA)>

<!ELEMENT addresses ((swedish|international)+)>
<!ELEMENT international (street ,city, state, zip, country)>
<!ELEMENT swedish (street,postalCode,postalAddress)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT zip (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT postalCode (#PCDATA)>
<!ELEMENT postalAddress (#PCDATA)>

<!ELEMENT work (((title,department)|title),organization)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT department (#PCDATA)>
<!ELEMENT organization (#PCDATA)>

<!ELEMENT internet ((inet-private|inet-work)|(inet-private,inet-work))>
<!ELEMENT inet-private ((email+|website+)|(email+,website+))>
<!ELEMENT inet-work ((email+|website+)|(email+,website+))>
<!ELEMENT email (#PCDATA)>
<!ELEMENT website (#PCDATA)>

<!ELEMENT phones ((phones-private|phones-work)|(phones-private,phones-work))>
<!ELEMENT phones-private (phone+)>
<!ELEMENT phones-work (phone+)>

<!ELEMENT phone (countrycode?,areacode?,number,comment?)>
<!ELEMENT countrycode (#PCDATA)>
<!ELEMENT areacode (#PCDATA)>
<!ELEMENT number (#PCDATA)>
<!ELEMENT comment (#PCDATA)>
