ものがたり(旧)

atsushieno.hatenablog.com に続く

.NETのXPathNavigatorがそもそもXSLTと相性が悪い件について

これも@ITで引っ張ってきたネタですが、ていうかunparsed-entity-uri()が正しいXSLT関数として認識されていないこと自体は、OASISのstandalone testを走らせていて知っていたのですが、何でこんなバグがあるんだろう、というのを考えていて気付いてしまったわけです。

これ、どうあがいてもXPathNavigatorじゃ無理なんですね。DOMとは違って。サポートできるわきゃないんです。でも(少なくとも当時は)MSとしてはXPathDocumentを全面的にプッシュしていて、XmlDocumentじゃなきゃできないことは、なるべく表に出さないようにしていたわけです。MSXML4でちゃんとサポートされているunparsed-entity-uri()が、XslTransformでなぜかサポートされていないというのは、そういう堂々と表では言えない裏事情があったんじゃないか、と思えてしまうわけです。

どうでしょう、試しにMS feedbackにレポートしてみましょうか。「MS、知ってたんじゃん!」みたいな回答が返ってくると思います。

不思議なことに、Monoではちゃんと出来ているんですよね。ええと、ゴメンナサイ、昨日直しました(爆)。いや、基本設計は昔から合ってたし、全然不思議なものではないのです。IHasXmlNodeにキャストしてXmlNodeを取得すれば、OwnerDocumentもDocumentTypeもEntitiesも取得できますから。