XSLTProcessor
Fx で HTMLDocument つくるのに XSLTProcessor つかうようにしたんだけど、よくわからない条件でエラーがでる。
[Exception... "Component returned failure code: 0x80600001 [nsIXSLTProcessor.importStylesheet]" nsresult: "0x80600001 ()"
div + innerHTML + XPath 改変のほうが安定しそうだなぁ……なんでこのへんマトモな実装してないんだろ。意味不明すぎ (Safari3 と Opera には createHTMLDocument がある)
XSLTProcessor つかうのやめた。はてダででるんだよなぁ (はてグなら大丈夫)
id() についてはもともと Safari 向けのコードで //*[@id=''] に文字列置換するのを書いてる。二個以上 id 指定があるとだめだけどそんな使いかた普通しないから無視
Fx に createHTMLDocument がないのは createDocument に doctype わたせばいいってことらしいけど (というか DOM の仕様にないのはそういうことなんだろうけど)、
var html4dt = document.implementation.createDocumentType("html", "-//W3C//DTD HTML 4.01//EN", "http://www.w3.org/TR/html4/strict.dtd");
alert(document.implementation.createDocument("", "html", html4dt));とかやっても普通に XMLDocument になるよ。イミフ。これってバグじゃないのかなぁ。でも Bugzilla には関わりたくない。
memo
- http://mxr.mozilla.org/firefox/source/content/base/src/nsDocument.cpp#706
- http://mxr.mozilla.org/firefox/source/content/base/src/nsContentUtils.cpp#3319
- http://mxr.mozilla.org/firefox/source/content/xml/document/src/nsXMLDocument.cpp#102
普通に XML の処理しか書いてない。
2004 年報告のやつだけどまだ NEW だ。NEW の意味わすれたけど