に示した
VSCodeの拡張機能Live Serverを利用したXMLのブラウザ表示は、
必ずしもこちらが期待したXSLT変換結果を表示しているわけではない
らしい....(-_-;) 何度か自分でも試してみた感じ、ざっくり述べると
XSLT変換した結果生成されるはずのHTMLないしXMLに、
HTMLで定義されていないタグが含まれている場合、
変換結果とブラウザ表示の結果が大概異なる
⇒ XSLT変換結果を何らかの形で保存して、ブラウザ表示と比較することが大事
例えば
sampleフォルダに対して、以下のようにsample.xml、sample.xsltがあり
sample
|---sample.xml
|---sample.xslt
sample.xml、sample.xsltが
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="sample.xslt"?>
<!-- 👆sample.xmlにsample1.xsltを適用するようにするための宣言 -->
<!-- 👆href にはこのsample.xmlから見た適用させたいsample.xsltの相対パスを書く-->
<sample>
<example>hogehoge</example>
<explanation>ホゲホゲとは</explanation>
</sample>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- このファイル全体がxsl(スタイルシート)の一種であることの宣言 -->
<xsl:template match="/">
<result>
<xsl:call-template name="result-call" />
<!-- nameの値には呼び出すテンプレートルールの名前を代入-->
</result>
</xsl:template>
<xsl:template name="result-call">
<!-- 上のcall-template のnameの値に対応させる-->
<!-- カレントノードはルートノード-->
<xsl:value-of select="sample/example" />
<detail>
<xsl:value-of select="sample/explanation" />
</detail>
</xsl:template>
</xsl:stylesheet>
となっている場合、Live Serverを通して ブラウザ内蔵のXSLTプロセッサ で変換してブラウザ表示しようとしてみると自分の場合こうなった
しかし本来は
<?xml version="1.0" encoding="UTF-8"?>
<result>hogehoge
<detail>ホゲホゲとは</detail>
</result>
と変換されているはずである。
ところが、<result>タグ、<detail>タグはHTML要素にはない。結果ズレる
さらにまもなく以下のように ブラウザ内蔵のXSLTプロセッサ は各ブラウザから削除されていく潮流にある
ブラウザの安全性を高めるための XSLT の削除
XSLT変換結果をSaxon-HEを利用して保存
自宅PCのVSCode環境で学習するレベルであれば、特に機密情報を含むわけではないし、これが一番手軽だった。
そもそもSaxon-HEとは
アメリカのSaxonica社が無償で提供しているJavaの実行環境で動くオープンソースのXSLTプロセッサ
準備
(1)JDK(Java Development Kit) のインストール
※自分は以下のリンク先から今回は「Temurin jdk-21.0.12.1+1」のMSI(Microsoft Installer)をダウンロードした
ダウンロード後、~.msiがいるはずなので、そいつをポチポチして説明に従い、JDKをインストールしていく。
JAVA_HOME はあらかじめ設定しておいた方がよいとのことだったので、途中 「set JAVA_HOME variable」が「インストールしていない」になっているのを変えてインストールを進めた。
(2)JDKが無事インストールされたかの確認
コマンドプロンプトやPowershellを開いて以下のコマンドを確認。
※筆者はここからVSCodeを利用
java --version
javac --version
※JAVA_HOMEの設定の確認
echo $env:JAVA_HOME
(3)Saxon-HEをダウンロード
※今回、自分は https://www.saxonica.com/download/java.xml から赤丸のやつを入れた。個人学習に使う程度のレベルであれば、随時バージョンが新しい-HEのものをダウンロードしていけばバージョン管理は大丈夫そう。
(4)sample.xml等のフォルダ構成を整える
(3)のダウンロードの結果、ZIPファイルが落ちるので、以下の感じで展開する
XSLT変換コマンド
java -jar saxon-he-〇〇.××.jar -s:sample.xml -xsl:sample.xslt -o:result.xml
#saxon-he-の「〇〇.××」には各自適宜PCに入れたSaxon-Heの入れたバージョンの数字を入れる
#-s:変換したいXML
#-xsl:変換に使用したいXSLT
#-o:変換結果として生成されるファイルのファイル名(※任意、.htmlもありうる)
なお仮に、フォルダ構成が以下のような場合、-s:、-xsl:、-o:の後ろに次のような感じで相対パスをいじるか、カレントディレクトリを移動させるかしてください
C:\XSLT\
│
└─ Saxon\
│
├─ Saxon-he-〇〇.××.jar
│
└─ sample\
├─ sample.xml
└─ sample.xslt
cd C:\XSLT\Saxon
で移動した後、
java -jar saxon-he-〇〇.××.jar -s:sample\sample.xml -xsl:sample\sample.xslt -o:sample\result.xml
実行結果例
冒頭の例の場合。
変換(=書き出し)後
これをブラウザ表示すると
と変換すると、こうなるだろうという構造が表示される








