もう一つ補足です。
setAttribute は DOM1 Core に含まれるので,DOM 実装であればどんな環境でも動作するはずです。ところが,実際にはややこしい経緯があって,過去の多くの実装では,node.setAttribute ('attr', value); は node.attr = value; のシンタックスシュガーでしかありません。
http://nanto.asablo.jp/blog/2005/10/29/123294
DOM 実装ブラウザであればほぼ確実に DOM1 HTML をサポートしていますので,対象が HTML とあらかじめ分かっている場合には,古い実装(IE5,Opera6 など)が淘汰されるまでは setAttribute を使わない方が無難だと思います。
// DOM HTML がサポートされていれば,属性名と似たプロパティ名でアクセスできる
node.id = 'ID';
// ただし,常に同じ名前ではないことに注意
node.className = 'class';
node.htmlFor = 'targetID';
もし style 属性であれば,
// DOM2 CSS
node.style.cssText = 'color: #999; background: #ccc;';
もしイベント属性であれば,
// DOM2 Events
node.addEventListener ('click', listener, useCapture);
// ただし,IE の場合はビヘイビア以来の attachEvent を使う
node.attachEvent ('onclick', listener);
※特にスタイル・イベントに関しては,対象が XML の場合は当然ながら setAttribute による操作の保証はありませんので,上記の手段を使うことになります。