Complex Attributes

A complex attribute may be composed of one or more sub-attributes listed below. To add a complex attribute record to a location, you must include the <ComplexAttribute> tag, the Name or ID of the complex attribute, as well as the <SubAttribute> tag with the Name or ID and the matching value type tag for each sub-attribute. To add multiple records of the same complex attribute, include a separate <ComplexAttribute> tag for each record. You may import an unlimited number of records for the same complex attribute.

The different types of sub attributes are as follows:

Text - limited to 255 characters
Memo - for large blocks of text - no limit
Numeric - integer values ranging from -2,147,483,648 to 2147483647
Yes/No - a boolean value represented by true or false
Drop Down - a single selection droplist
Radio Group - a group of values represented by radio buttons allowing one selection
Checkbox Group - a group of values represented by checkboxes allowing multiple selections
Link - a URL and associated display text
Photo - accepts an image URL with file extensions BMP, GIF, JPEG, or PNG
Category - accepts category ID and category name
Location - accepts a Bullseye location
Text Lookup - a single selection droplist
PDF - a URL and associated display text
Video - accepts a title description, url and an optional thumbnail image

The section of the XML Schema for complex attributes is:

<xs:sequence>
  <xs:element name="ComplexAttribute" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name" type="xs:string" minOccurs="0" />
        <xs:element name="ID" type="xs:int" minOccurs="0" />
        <xs:sequence>
          <xs:element name="SubAttribute" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Name" type="xs:string" minOccurs="0" />
                <xs:element name="ID" type="xs:int" minOccurs="0" />
                <xs:element name="ValueBoolean" type="xs:boolean" minOccurs="0" />
                <xs:element name="ValueString" type="xs:string" minOccurs="0" />
                <xs:element name="ValueInteger" type="xs:int" minOccurs="0" />
                <xs:element name="ValueOptionID" type="xs:int" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="ValueOptionText" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="ValueLinkURL" type="xs:string" minOccurs="0" />
                <xs:element name="ValueLinkDisplayText" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:sequence>

The following tags map to the different types of sub-attributes:

ValueBoolean - Yes/No
ValueString - Photo, Text & Memo
ValueInteger - Numeric & Location
ValueOptionID OR ValueOptionText - Drop Down, Radio Group, Checkbox Group, Text Lookup & Category
ValueLinkURL AND ValueLinkDisplayText - Link, PDF & Video

You should only use the tag(s) which apply to the sub-attribute type for each entry.