It maybe a matter of taste, but using
snake_case for tag names seems strange to me.
dash-separated would be better.
Tag names like
B_field are not great, especially when you use them to indicate field names.
dstName would be better, to clarify that they are about names, and the source and destination.
In the description you wrote that values should be many-to-one, but then in
value_mapping you have a single
A_value and multiple
B_values. Intuitively, I would imagine the mapping goes from A to B, but your sample looks like B to A.
<A_value name="A_value"> you use the
name attribute to indicate a value. A
value attribute would be more natural.
How about something like this:
I didn't change the overall structure of the tree of nodes. It seems to make sense to me. But you would have to test it and see if it's really ergonomic or not.
Finally, you asked for a many-to-one mapping of the values, so just beware that the mapping will be one-way, non-reversible.