I'm a little confused by all of the above, but, since, as we have discussed before, EndNote XML does not nest these nodes, you can probably do something like
```
var face = { italics: i, bold: b, superscript: sup, subscript: sub };
var tags = node.attributes.face.value.split(/\s+/).map(function(f) { return face[f] || null; }).filter(function(v) { return v; });
var htmlString = (tags.length ? '<' + tags.join('><') + '>' : '') + node.innerHTML + (tags.length ? '</' + tags.reverse().join('></') + '>' : '');
```
(not tested and maybe replace map + filter with a single for loop, but you get the idea)

Also, because we don't expect nesting, we can probably forego the recursive calling and just have one for loop on the outside?