private static void SetupElementStrategies(XmlMerger merger)
{
merger.MergeStrategies.ElementToMergeStrategyKeyMapper = new BloomElementToStrategyKeyMapper();
merger.MergeStrategies.SetStrategy("html", ElementStrategy.CreateSingletonElement());
merger.MergeStrategies.SetStrategy("head", ElementStrategy.CreateSingletonElement());
merger.MergeStrategies.SetStrategy("body", ElementStrategy.CreateSingletonElement());
merger.MergeStrategies.SetStrategy("DataDiv", new ElementStrategy(true)
{
IsAtomic = false,
OrderIsRelevant = false,
MergePartnerFinder = new FindByKeyAttribute("id"), //yes, it's a singleton of sorts, but by the id, not the tag
});
merger.MergeStrategies.SetStrategy("BookDataItem", new ElementStrategy(true)
{
IsAtomic = true,
OrderIsRelevant = false,
MergePartnerFinder = new FindByMultipleKeyAttributes(new List<string>(new string[] {"data-book", "lang"}))
});
merger.MergeStrategies.SetStrategy("PageDiv", new ElementStrategy(true)
{
IsAtomic = false,
MergePartnerFinder = new FindByKeyAttribute("id"),
ContextDescriptorGenerator = new BloomPageContextGenerator()
});
merger.MergeStrategies.SetStrategy("TranslationGroup", new ElementStrategy(true)
{
IsAtomic = false,
MergePartnerFinder = new FindByKeyAttributeInList("class"),
ContextDescriptorGenerator = new BloomPageContextGenerator()
});
merger.MergeStrategies.SetStrategy("LangDiv", new ElementStrategy(true)
{
IsAtomic = true,
MergePartnerFinder = new FindByKeyAttribute("lang"),
ContextDescriptorGenerator = new BloomPageContextGenerator()
});
}