Available online keys


Currently we have a key to the Trees of Borneo, using data and images prepared by Jim Jarvie, and online key software by Cam Webb





An XML format for data for electronic keys


Data transfer between key software (DELTA, Lucid, Linnaeus II, etc.) will be facilitated by a standard format for data exchange. For many of the reasons that XML is being used widely for data storage (archiving/self-documentation, availability of parsers, searchability...), XML is a suitable choice for the data medium. I searched for an emerging prototype for this (on, e.g., TAXACOM-L), but could not find one. Here then is a preliminary model for an XML structure to hold taxon data for identification. This is obviously the same type of structure needed for coding characters in a XML format were NEXUS ever to move towards XML. The design is best quickly demonstrated by example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Key [
  <!ELEMENT Key (Characters,Data)>
  <!ELEMENT Characters (Character+)>
  <!ELEMENT Character (State*,Dependent*,Notes?)*>
    <!ATTLIST Character name CDATA #REQUIRED
                datatype (I|T|M) #REQUIRED
                class CDATA #REQUIRED>
  <!ELEMENT Dependent EMPTY>
    <!ATTLIST Dependent onchar CDATA #REQUIRED
                onstate CDATA #REQUIRED>
  <!ELEMENT State EMPTY>
    <!ATTLIST State name CDATA #REQUIRED>
  <!ELEMENT Notes (#PCDATA)>
  <!ELEMENT Data (Taxon+)>
  <!ELEMENT Taxon (Char+)>
    <!ATTLIST Taxon name CDATA #REQUIRED>
  <!ELEMENT Char (State+|Text)>
    <!ATTLIST Char name CDATA #REQUIRED>
  <!ELEMENT State EMPTY>
  <!ELEMENT Text (#PCDATA)>
]>

<Key>
  <Characters>
    <Character name="family" datatype="T" class="info">
      <Notes>APG Families</Notes>
    </Character>
    <Character name="order" datatype="T" class="info">
    </Character>
    <Character name="habit" datatype="M" class="bole">
      <State name="emergent_trees" />
      <State name="large_trees_gt30m" />
      <State name="small_trees" />
      <State name="shrubs" />
      <State name="arborescent" />
      <State name="climbers" />
      <State name="herbs" />
    </Character>
    <Character name="buttresses" datatype="M" class="bole">
      <State name="absent" />
      <State name="present" />
      <Dependent onchar="habit" onstate="emergent_trees" />
      <Dependent onchar="habit" onstate="large_trees_gt30m" />
      <Dependent onchar="habit" onstate="small_trees" />
      <Dependent onchar="habit" onstate="arborescent" />
    </Character>
    <Character name="buttress_and_root_type" datatype="M" class="bole">
      <State name="concave" />
      <State name="convex" />
      <State name="flying" />
      <State name="stilt" />
      <State name="pneumatophore" />
      <State name="straight" />
      <Dependent onchar="buttresses" onstate="present" />
    </Character>
    <Character name="buttress_size" datatype="M" class="bole">
      <State name="short" />
      <State name="tall" />
      <Dependent onchar="buttresses" onstate="present" />
    </Character>
  </Characters>
  <Data>
    <Taxon name="Saurauia">
      <Char name="family">
        <Text>Actinidiaceae</Text>
      </Char>
      <Char name="habit">
        <State name="shrubs" />
        <State name="arborescent" />
      </Char>
      <Char name="buttresses">
        <State name="absent" />
      </Char>
    </Taxon>
    <Taxon name="Alangium">
      <Char name="family">
        <Text>Alangiaceae</Text>
      </Char>
      <Char name="order">
        <Text>Cornales</Text>
      </Char>
      <Char name="habit">
        <State name="large_trees_gt30m" />
        <State name="small_trees" />
        <State name="shrubs" />
        <State name="climbers" />
      </Char>
      <Char name="buttresses">
        <State name="absent" />
        <State name="present" />
      </Char>
      <Char name="buttress_and_root_type">
        <State name="concave" />
        <State name="flying" />
        <State name="stilt" />
      </Char>
      <Char name="buttress_size">
        <State name="short" />
        <State name="tall" />
      </Char>
    </Taxon>
  </Data>
</Key>

I have an AWK exporter and parser for this XML if you are interested. Please send comments to Cam Webb.