続:<?xml-stylesheet?>処理命令

前回ブラウザのChromeが<?xml-stylesheet?>処理命令に対応していないと書きましたが、これはいささか誤りがありました.それまではテストはすべてWindowsファイルシステムでやっていました.ですからブラウザのURLはfile:///~/~.xmlという感じになります.この場合は確かにChromeは何も表示してくれませんでした.しかし、自分のローカルPCでIISを立ち上げ、http://~/~.xmlというURLでアクセスすると、Chromeは<?xml-stylesheet?>処理命令をちゃんと解釈しHTMLに変換して表示してくれました.http経由でテストしなかったのはやはり間違いでした.お詫びして訂正します.
 
さて、ASP.NET作戦ですが特になんの問題もなく会社のサーバーで動いてくれました.使った.aspxはサンプルにあったようなきわめて簡単なものです.
 
[xslt.aspx]
 
<%@ Page Language="VB" %>
 <%@ Import Namespace="System.Xml" %>
 <%@ Import Namespace="System.Xml.Xsl" %>
 <script runat="server">
   Sub Page_Load(sender As Object, e As EventArgs)
     Dim XmlFile As String=request.querystring("xml")
     Dim XslFile As String=request.querystring("xsl")
     Dim objDoc As XmlDocument=New XmlDocument()
     Dim objTrn As XslTransform=New XslTransform()
     objDoc.Load(Server.MapPath(XmlFile))
     objTrn.Load(Server.MapPath(XslFile))
     objXml.Document=objDoc
     objXml.Transform=objTrn
   End Sub
 </script>
 <asp:Xml id="objXml" runat="server" />
 
これでhttp://localhost/~/xslt.aspx?xml=books.xml&xsl=basic.xslなどとやって動かします.
 
こんなASP.NETなんてもう基本中の基本の枯れた技術なんでしょうけれども、私はHTMLなんてこの10年全然やっていなかったのでやっと当たり前のところにたどり着いた感じです.でも会社でサーバーの自分の担当の横のフォルダのFAQ見るとどう見てもシコシコ手書きです.この時代によく手書きなんかでXHTMLコーディングしているなぁと思います.知らないことは恐ろしいですね.
 
あと、気がついたんですが、クライアントで.xmlをブラウザ表示させたときはIEは間違いなくMSXMLを使うでしょう.でもASP.NETはその名のとおり.netのXSLTを使います.やってみるとこの2つのMicrosoftXSLTプロセッサはコンパチブルじゃありません.<xsl:strip-space>と<xsl:preserve-space>によるWhite spaceのハンドリングに違いがあって、結局は.netのXSLTでちゃんと動くようにXMLXSLTも修正しました.同じ会社の製品でこういう違いがあるのも困り者です.