5.0/5.5とMSXML4を利用して、XSLTで生成したHTMLに日本語を含むURIを入れようとすると、文字化けしてしまいます。解決方法を教えてください。技術センター2001/12/7まず、この問題をできるだけ小さいファイルで再現できるようにしたのが下記のリスト1とリスト2です。ご質問にあるように、この2つを組み合わせて実行すると、HTML文書として生成されるアンカーの参照先が文字化けしてしまいます。実際にはUTF-8のファイル(Test.xml)。実際にはUTF-8のファイル(Test.xsl)。ご質問のポイントを絞ってみると、上記のリスト1のXML文書を、リスト2のXSLTで変換すると、以下の変換結果が出力されることを期待しているはずです。4.01の勧告に厳密に従って記述すると次のようになり、意図したとおりの結果とはなりません。/>なぜ漢字が文字コードになってしまうかというと、HTMLにはアンカータグの「href」アトリビュートを記述するときに、「URIの値が非ASCII文字だった場合エスケープすべきである」という決まりがあるからです。valuesに記述があります。XSLTに限れば、ご質問にあるような考え方、つまり漢字での出力を期待することは、決して誤りではありません。試しに下記にあるように、アンカータグをイメージタグに、hrefアトリビュートをaltアトリビュートに置き換えて確認してみてください。非ASCII文字列「#漢字」が格納されていることが分かります。select="user1:test()"/></xsl:attribute></img>このことからも、MSXMLがXSLTの勧告に従って厳格に実装されていることが分かります。今回の回答は、「この動作はHTMLの仕様です」となるのですが、実際には簡単な解決策があります。xsl:outputのmethodをhtmlからxmlに変更すればいいのです。encoding="UTF-8"/>XMLでは「アンカータグのhrefアトリビュートが特殊である」ことはまったく関係ありませんので、上記のように書き換えて処理すれば、きちんと意図したとおりの結果を得ることができます。変更したことによる問題も発生しないはずです。DTDで記述され、XSLTによって生成されている。(2005/8/16)セキュリティ関連のXML仕様に進展あり。