Right now add_element will only add the first descendant. That was the simplest approach from a code standpoint. I could make it able to add multiple, but it doesn't seem like that big an issue to me.
needs_road_access is only used for UI feedback for the player. If a structure has needs_road_access set to true, then you'll see a warning icon in the game if the structure doesn't have a walkable hex (road or empty) adjacent to it.
<available_structure id="human_tm" id="human_wb" id="human_bs" id="human_cm"/>
Duplicate attributes aren't allowed in XML, and due to the way the data mutators are executed that XML file is parsed (and throws an error) for every datafile loaded.
Did I get everything? Thanks for all of the questions, by the way.