ブラウザで xml+xsl を使用し、javascript で非同期ページを処理していますが、行要素がプレーン テキストのように見えるため、xml 処理されたtr要素をテーブルtbodyに追加できません。innerHTML(convertChild関数)をコピーして修正するハックを見つけました:
var xmlDom = pageProcessor().transformToDocument(xml);
var root = xmlDom.documentElement;
var tbody = document.getElementById('table-content');
for (var i = 0; i < root.childElementCount; i++) {
tbody.appendChild(convertChild(root.children[i]));
}
function convertChild(source) {
var tmp1 = document.createElement('tbody');
tmp1.appendChild(source);
var tmp2 = document.createElement('tbody');
tmp2.innerHTML = tmp1.innerHTML;
return tmp2.firstChild;
}
pageProcessor 関数は、インポートされた xsl スタイルシートで XSLTProcessor を返します。xml 変数は、Sarissa ライブラリの dom ドキュメントです。デバッガーでは root.children[i] が有効に見えます。
このハックを取り除き、要素をテーブルに正しく追加するにはどうすればよいですか?
アップデート:
私はFirefox 37.0.2を使用しています
xml は次のようになります。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rows>
<row><item>key44</item><item>val44</item></row>
<row><item>key45</item><item>val45</item></row>
...
</rows>
xslt によって処理された各 html 要素を行項目からtr tdに console.log します
解決済み:
ありがとう、マーティン・ホネン!
transformToFragment(sourceDoc, ownerDoc)
動作します!
回答を投稿してください。