ContactListXML is designed to serve as a simple rolodex, where the end user/editor can add and adjust the contacts in the list. At bare minimum, an EMail address is required for each contact. The problem arises when you want to customize which fields are to be managed as part of each contact, and you don't want to start customizing the underlying schema.

ContactListXML addresses this issue by allowing you to customize which fields are part of each contact on a per instance basis. You cannot add arbitrary fields, but you can select which fields are active from the full set of fields supported. The underlying schema has a rather extensive set of per-contact fields, which includes name, address, phones, company and notes. Display and validation support is already built into the schema. But the schema level support defines everything other than EMail as optional. So if the field is not part of the <Contact> structure when a new contact is defined, then that field just drops out.

To customize the fields in use:

  1. Create a new instance of ContactListXML
  2. Before creating any contacts, download the xml definition of the instance
  3. Edit the xml, and locate the <UnderEdit> field (it should start with singleton EMail field defined)
  4. Add whatever fields you want to include as part of the active contact
    NOTE that you must still match the underlying schema in terms of names, nesting, and ordering of the fields
  5. Upload the new xml definition back into the instance.

Now when you are actively editing the instance, you will see those fields you included. @see the current schema for the field definition list. It will look something like:

<Contact>
  <EMail/>
  <Company/>
  <Name>
    <Last/>
    <First/>
    <Middle/>
    <Display/>
  </Name>
  <Phones>
    <Work/>
    <Cell/>
    <Fax/>
    <Home/>
  </Phones>
  <Address>
    <Street/>
    <Street2/>
    <City/>
    <State/>
    <Zip/>
  </Address>
  <Notes/>
</Contact>