in myfaces-html5-demo/src/main/webapp/resources/script/google-code-prettify/prettify.js [293:329]
function normalizedHtml(node, out, opt_sortAttrs) {
switch (node.nodeType) {
case 1: // an element
var name = node.tagName.toLowerCase();
out.push('<', name);
var attrs = node.attributes;
var n = attrs.length;
if (n) {
if (opt_sortAttrs) {
var sortedAttrs = [];
for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; }
sortedAttrs.sort(function (a, b) {
return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1;
});
attrs = sortedAttrs;
}
for (var i = 0; i < n; ++i) {
var attr = attrs[i];
if (!attr.specified) { continue; }
out.push(' ', attr.name.toLowerCase(),
'="', attribToHtml(attr.value), '"');
}
}
out.push('>');
for (var child = node.firstChild; child; child = child.nextSibling) {
normalizedHtml(child, out, opt_sortAttrs);
}
if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
out.push('<\/', name, '>');
}
break;
case 3: case 4: // text
out.push(textToHtml(node.nodeValue));
break;
}
}