IT's AGENT
XSLTの利用
Bottom

エクセルでHTML

今ではホームページでPHPや.NETが普通に使えるが、以前はスタティックなサイトが多く、せいぜいアクセスカウンターとかWebメールとかのCGIが用意されているだけ。 チラシの電子版。
でも、多くはそれで問題なかった。 メールも送れるし。
ヤドクガエルなどを飼育・販売している人と知り合って、少しの間ホームページの手伝いをしたことがある。
トップページは一度作成すれば当分は問題ないが、当然、商品というか彼らの紹介ページは、随時 更新ができないといけない。
でも、その人はHTMLを書いたりするタイプではなかったので、簡単な方法を用意する必要があった。
更新するといってもデータはカード型DBみたいに、固定の枠に個々のデータを追加・修正・削除するだけ。

なので、
① エクセルで枠を作って、その中に名前、価格などのデータを登録。写真に関してはファイル名を登録。
② VBAにより、そのデータをXML形式で出力。
③ XMLHTMLとして出力できるXSLTを作成。
④ VBAにより、XMLXSLTからHTMLファイルを出力。

④のHTMLの作成は、対応するXSLファイルをアップロードしておけば、XMLにアクセスすればよいだけなので、本当は不要。
ただ、当時はXMLに対応できないブラウザもあったのでHTMLを作成した。

VBA
XSLT
-------
VBA

①EXCEL
---->
②XML file
---->
③HTML
---->
④HTML file

この方法は、リンクリストや名簿などエクセルで管理しやすいものでは、ボタンクリック1発で作成されたHTMLファイルをアップロードするだけでサイトの管理ができるので、薬剤師会のサイトでも当初、重宝した。
研修会案内などもなんとかエクセルで管理できたし、トップページなども複数のXMLを利用するXSLTでなんとかなった。

不要在庫掲示板というものもPHPやDBが利用できなかったので、会員に枠のエクセルをダウンロードしてもらい、入力後返信してもらった。同じ形式のエクセルを同じフォルダーに入れて順次オープンする仕様で、ひとつのXMLを作成し、この手法を適応した。
今なら、画面に直接入力してもらうのが良いと思うが、慣れたエクセルで入力できるので敷居が低いというメリットはあった。

今のブラウザではXML+XSLTを表示できないものはないので、エクセルからXMLを作成すれば良いだけだが、XSLTを作成するよりPHPの方が楽なので、エクセルで作成されたXMLをPHPで利用する。
Topページなど、HTML形式が求められる場合は、javascriptで、XMLを表示するPHPを呼び出す。 <script language="JavaScript" src="hoge.php" />
XSLTは使っていないが、「エクセルでHTML」ではある。

 PHPのSimpleXMLではSortができない。
と思うので、配列に変換してSortしているが、PHPからXSLTを利用すると簡単なのかもしれない。

VBA (HTML作成)

XMLとXSLTからHTMLファイルを作成するサンプル。
今では不要。なので覚書きとして。

引数でFilename:targetHTM,srcXSL,srcXML


Dim objXML As MSXML2.DOMDocument30
Dim objXSL As MSXML2.DOMDocument30
Dim FS As Scripting.FileSystemObject
Dim strResult As String
Dim htmlDoc As TextStream
Dim cnvConst As String
Set FS = CreateObject("Scripting.FileSystemObject") On Error Resume Next
[ Create a new document instance for the data file and style sheet ]
Set objXML = CreateObject("MSXML2.DOMDocument.3.0")
Set objXSL = CreateObject("MSXML2.DOMDocument.3.0")
[ Set the property to valid the file when its parsed ]
objXML.validateOnParse = True
objXSL.validateOnParse = True
[ Load the files ]
objXML.Load (ActiveWorkbook.Path & "\" & srcXML)
objXSL.Load (ActiveWorkbook.Path & "\" & srcXSL)
strResult = objXML.transformNode(objXSL)
[ Convert UTF-16 to Shift-JIS…不要]
cnvConst = "charset=UTF-16"
strResult = Left(strResult, InStrRev(strResult, cnvConst) - 1) & "charset=Shift-JIS" & Mid(strResult, InStrRev(strResult, cnvConst) + Len(cnvConst), Len(strResult) - InStrRev(strResult, cnvConst) + Len(cnvConst))
[ Convert the results to HTML ]
Set htmlDoc = FS.CreateTextFile(ActiveWorkbook.Path & "\" & targetHTM, True)
htmlDoc.Write strResult
htmlDoc.Close
Set FS = Nothing
Set objXML = Nothing
Set objXSL = Nothing

Image

コバルトヤドクガエルとおたま
ヤドクガエルは背中にオタマジャクシを乗せて運びます。
アイゾメヤドクガエル(アタチバカ) アイゾメヤドクガエル(テーブルマウンテン)

アイゾメヤドクガエルレジーナ アイゾメヤドクガエルテーブルマウンテン コバルトヤドクガエル キオビヤドクガエル マダラヤドクガエル グリーン マダラヤドクガエル ブルー アイゾメヤドクガエルアタチバカ メダマカマキリ
マダガスカルヒルヤモリ
Topへ
by IT's AGENT