add: if (!attr) throw new Error('bad attribute selector'); 
context: 	getParam: function(items, separator, context, param){		var temp = context.namespaceURI ? 'xhtml:' : '';		switch(separator){			case ' ~ ': case ' + ': temp += '/following-sibling::'; break;			case ' > ': temp += '/'; break;			case ' ': temp += '//'; break;		}		temp.push(param[1]);		if (separator == ' + ') temp += '[1]';		if (param[2]) temp += '[@id="' + param[2] + '"]';		if (param[3]) temp += '[contains(concat(" ", @class, " "), " ' + param[3] + ' ")]';		if (param[4]){			var attr = param[4].match(DOM.aRegExp);			if (attr[2] && attr[3]){				switch(attr[2]){					case '=': temp += '[@' + attr[1] + '="' + attr[3] + '"]'; break;					case '*=': temp += '[contains(@' + attr[1] + ', "' + attr[3] + '")]'; break;					case '^=': temp += '[starts-with(@' + attr[1] + ', "' + attr[3] + '")]'; break;					case '$=': temp += '[substring(@' + attr[1] + ', string-length(@' + attr[1] + ') - ' + attr[3].length + ' + 1) = "' + attr[3] + '"]'; break;					case '!=': temp += '[@' + attr[1] + '!="' + attr[3] + '"]'; break;					case '~=': temp += '[contains(concat(" ", @' + attr[1] + ', " "), " ' + attr[3] + ' ")]';				}			} else {				temp += '[@' + attr[1] + ']';			}		}		items.push(temp);		return items;	},
meta: 9980	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/9980/6fc7ed263d2439c62ec8f4403e451cb03f36b236/Element.Selectors.js/clean/Element/Element.Selectors.js