Converts invalid characters to dashes according to http://www.w3.org/TR/REC-xml/#NT-Name.

/**
 * Convert invalid characters to dashes.
 * http://www.w3.org/TR/REC-xml/#NT-Name
 *
 * @param {String} key The key to clean.
 * @return {String} The cleaned key.
 */
function cleanKey(key) {
    return key.replace(/[^-._0-9A-Za-z\xb7\xc0-\xd6\xd8-\xf6\xf8-\u037d\u37f-\u1fff\u200c-\u200d\u203f\u2040\u2070-\u218f]/g, "-");
}