function startingTag(element) {
	element = jqLite(element).clone();
	try {
		// turns out IE does not let you set .html() on elements which
		// are not allowed to have children. So we just ignore it.
		element.empty();
	} catch (e) {
		/* empty */
	}
	var elemHtml = jqLite("<div>")
		.append(element)
		.html();
	try {
		return element[0].nodeType === NODE_TYPE_TEXT
			? lowercase(elemHtml)
			: elemHtml
					.match(/^(<[^>]+>)/)[1]
					.replace(/^<([\w\-]+)/, function(match, nodeName) {
						return "<" + lowercase(nodeName);
					});
	} catch (e) {
		return lowercase(elemHtml);
	}
}
The software constructs all or part of a command, data structure, or record using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify how it is parsed or interpreted when it is sent to a downstream component.