// note: this lacks the final \\u10000-\\uEFFFF in the startchar set, because JavaScript
// note: this lacks the final \\u10000-\\uEFFFF in the startchar set, because JavaScript
// cannot cope with unciode characters with points over 0xFFFF.
// cannot cope with unciode characters with points over 0xFFFF.
var attributeNameStartChar = "A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
var attributeNameStartChar = "A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
var nameStartChar = new RegExp("[" + attributeNameStartChar + "]");
var nameStartChar = new RegExp("[" + attributeNameStartChar + "]");
var attributeNameChar = attributeNameStartChar + "0-9\\-\\.\\u00B7\\u0300-\\u036F\\u203F-\\u2040:";
var attributeNameChar = attributeNameStartChar + "0-9\\-\\.\\u00B7\\u0300-\\u036F\\u203F-\\u2040:";
var nameChar = new RegExp("[" + attributeNameChar + "]");
var nameChar = new RegExp("[" + attributeNameChar + "]");