Described is a system and method by which a unique and permanent
identifier is added to tags in hierarchically-arranged data (e.g., an XML
or XAML file) by a first tool. The data with the unique and permanent
identifiers is processed by a second tool into a flat file of key-value
pairs, with the key being constructed from the identifier and attribute
names, and the value comprising the corresponding value for that
attribute. When the flat file from the new data file is compared to a
flat file from an earlier version of the file, a standard merge program
is able to better detect the differences, including differences caused by
complex edits. The comparison is more granular than it would be if simply
comparing the hierarchically-arranged file versions, thereby providing
significant benefits in localization and other version tracking
scenarios.