Wing colour and Wing shape only have meaning when wings are present – if wings are absent, they are logically inappropriate in the key. Relationships of this kind are generally accomodated within interactive identification applications by the use of dependencies. For the above example a negative dependency may be set such that if a user chooses the state Wings: absent, then the characters Wing Colour and Wing Shape will be removed from characters Available. Alternatively, some applications allow a positive dependency to be set so for example Wing Colour and Wing Shape are initially hidden and only appear if a user chooses the state Wings: present. Dependencies can help to keep the character list cleaner and less cluttered, and help make some features work better.
In SDD dependencies are defined by <DependencyRules> within the <CharacterTree> element.
A simple SDD code instance representing dependency definition has the basic structure shown below and in Example 3.11.1.
<Nodes>
<CharNode>
<DependencyRules>
<InapplicableIf>
<State ref="s13"/>
</InapplicableIf>
</DependencyRules>
<Character ref="c1"/>
</CharNode>
<CharNode>
<DependencyRules>
<InapplicableIf>
<State ref="s4"/>
<State ref="s13"/>
</InapplicableIf>
</DependencyRules>
<Character ref="c2"/>
</CharNode>
... etc.
</Nodes>
|