ElementType type;
if (localName.equals(DISSECTABLE_AREA)) {
// Create a new attributes class.
DissectableAreaAttributes attrs
= new DissectableAreaAttributes();
// Get the dissectable area identity.
DissectableAreaIdentity identity
= getDissectableAreaIdentity(attributes);
// Initialise the attributes class.
attrs.setIdentity(identity);
// Set the annotation and the type.
annotation = attrs;
type = DissectionElementTypes.getDissectableAreaType();
} else if (localName.equals(KEEP_TOGETHER)) {
// Create a new attributes class.
KeepTogetherAttributes attrs
= new KeepTogetherAttributes();
// Initialise the attributes class.
String after = attributes.getValue("forceBreakAfter");
String before = attributes.getValue("forceBreakBefore");
attrs.setForceBreakAfter("true".equalsIgnoreCase(after));
attrs.setForceBreakBefore("true".equalsIgnoreCase(before));
// Set the annotation and the type.
annotation = attrs;
type = DissectionElementTypes.getKeepTogetherType();
} else if (localName.equals(SHARD_LINK)) {
// Create a new attributes class.
ShardLinkAttributes attrs
= new ShardLinkAttributes();
// Initialise the attributes class.
String value = attributes.getValue("action");
ShardLinkAction action;
if (value.equals("next")) {
action = ShardLinkAction.NEXT;
} else if (value.equals("previous")) {
action = ShardLinkAction.PREVIOUS;
} else {
throw new IllegalArgumentException("Unknown action: "
+ value);
}
attrs.setAction(action);
attrs.setUserData(attributes.getValue("userData"));
annotation = attrs;
type = DissectionElementTypes.getShardLinkType();
} else if (localName.equals(SHARD_LINK_GROUP)) {
// Get the dissectable area identity.
DissectableAreaIdentity identity
= getDissectableAreaIdentity(attributes);
// Create a new attributes class.
ShardLinkGroupAttributes attrs
= new ShardLinkGroupAttributes();
// Initialise the attributes class.
attrs.setDissectableArea(identity);
annotation = attrs;
type = DissectionElementTypes.getShardLinkGroupType();
} else if (localName.equals(SHARD_LINK_CONDITIONAL)) {
// Create a new attributes class.
ShardLinkConditionalAttributes attrs
= new ShardLinkConditionalAttributes();
// Initialise the attributes class.
ShardLinkContentRule rule;
String value = attributes.getValue("rule");
if (value.equals("any")) {
rule = StandardContentRules.getAnyRule();
} else if (value.equals("separator")) {
rule = StandardContentRules.getSeparatorRule();
} else {
throw new IllegalArgumentException("Unknown rule: "
+ value);
}
attrs.setContentRule(rule);
annotation = attrs;
type = DissectionElementTypes.getShardLinkConditionalType();
} else {