Actually translation to JSON is the "last step" (in the case of CKAN backend it is done just before sending the REST API request to CKAN). What I undrestand the Flume sink should do is to get this information and process it in the same way they process it for JSON notifications (in this sense, note that this notification-xml-compound.sh is semantically equivalente to existing notification-json-compound.sh file), lettting the backend to deal with the low level detail of how to persist.

It is a similar case of what Orion does. Orion can accept updateContext in both XML or JSON but, at the end, they are persisted (as JSON) at MongoDB with an uniform representation format.