0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

これでXSLT3.0に入門できる!簡単にHello Worldする方法を編み出した

Last updated at Posted at 2022-06-24

XSLTは1999年に仕様が公開され、現在は3.0までバージョンが進んでいます。
にも関わらず長年XSLTでHello Worldをするいい方がありませんでした。
もちろん「xslt hello world」で検索すればいくらでもやり方は出てきます。

しかし、みんなこう思うはずです。

「これじゃない」

普通の人が考えるHello Worldというのは、コマンド一発でコンソールに「Hello World」と出てくるものです。
そうなっていない原因は、XSLTは基本的にXSLにXMLを入力し、何らかのテキストファイルに出力する仕様になっているためです。

じゃあ無理なのか…と思いきや、できます。みんなが

「これだ!」

となる方法を編み出しましたのでご紹介します。

環境

なお今回のやりかたはWindows上で行う方法なので、それ以外は考慮していません。

またJava実行環境が必要です。

コマンド

具体的なコードはGoogleドライブに置いています。
https://drive.google.com/drive/folders/1-JhO33H5BJGvZ895fA4hmfEgYL8cFJvN?usp=sharing

これをZIPでダウンロードし、解凍します。あるいはパソコンからドライブにアクセスします。

そして、コマンドプロンプトでファイル群の入ったディレクトリに移動し、次をコマンドします。
.\xslt.bat helloworld.xsl
すると次が出力されます。
hello world.

または
.\call.bat hellowolrd.xsl
とコマンドしても同じ結果が出てきます。

どうなっているのか?少しずつ見ていきましょう。

コード

まずバッチファイルはこうなっています。

xslt.bat
@echo off
if not [%2%]==[] (
set param="%2=%3"
)
java -jar saxon-he-10.8.jar -s:%1 -xsl:%1 -o:out/out.txt %param%

Javaでsaxon-he-10.8.jarを実行していることが分かります。
引数は-sが入力ソース、-xslがXSLTのXSLファイルです。-oでout/out.txtに出力しています。

call.bat
@echo on
if not [%2%]==[] (
set param="%2=%3"
)
java -jar saxon-he-10.8.jar -it -xsl:%1 %param%

こちらは-itフラグを付けていますね。

次にXSLを見てみましょう。

<?xml version="1.0"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="3.0">
  <xsl:output method="text"/>
  <xsl:template match="/" name="xsl:initial-template">
  	<xsl:message>hello world.</xsl:message>
  </xsl:template>
</xsl:stylesheet>

ポイントとなるのが
<xsl:message>hello world.</xsl:message>
という箇所です。ここでコマンドプロンプトに出力しています。

xslt.batのやり方で重要なのは-sと-xslに同じXSLを指定していることです。
XSLはXMLであることを利用し、XSLに自分自身を処理対象とさせることにあります。
私も色々やってきて感じたのですが、入力元となるXMLを用意するのがかなり面倒でした。
しかし、自分自身なら手間はかかりません。

call.batではただ単に名前付きテンプレートを呼び出しています。入力もout.txtの出力も抑えられています。
とても簡明ですね。

他にもいろいろ置いていますが、XMLを処理することを念頭にしたXSLを置いていて、基本となる考え方は「自分自身を処理させる」です。
ここからXSLT3.0ライフを満喫しましょう!

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?