概要
XSLT変換をするにあたって、ほぼ必ず書くコードについて記載する。
サンプルコード
変換前XMLサンプル
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="sample.xsl"?> <root> <data>xmldata</data> </root>
XSLT
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <a><xsl:value-of select="root/data"></xsl:value-of></a> <b><xsl:value-of select="root/data"></xsl:value-of></b> </xsl:template> </xsl:stylesheet>
変換結果
<?xml version="1.0" encoding="UTF-8"?> <a>xmldata</a> <b>xmldata</b>
解説
XML側
<?xml-stylesheet type="text/xsl" href="sample.xsl"?>
XML側で必要なのは、上記の文。
XMLバージョン宣言後に記載する。
こちらでは、どのxslファイルを使ってXSLTの変換をするかを処理している。
XSLT側
バージョンや文字コードの宣言
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> ~省略~ </xsl:stylesheet>
1行目にxmlのバージョンと文字コードの宣言をする。
<xsl:stylesheet>要素では「xmlns:xsl」属性に名前空間を指定し、「version」属性にXSLTのバージョンをしている。最新は3.0。
基本的に<xsl:stylesheet>要素内にXSLTのコードをすべて書く。
※名前空間はxsl接頭辞がついたタグは、”http://www.w3.org/1999/XSL/Transform”のところにあるといった意味合い。
出力形式
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
結果の出力は、指定がなければXSLTプロセッサ(MSXSLなど)によって出力のしかたが決まる。
<xsl:output>要素では、出力方法を指定できる。
method属性では、xml,htmlなどのファイル形式の指定。
indent属性は、インデントをつけて見やすい形式にする。ただし、どのようにインデントができるかはXSLTプロセッサによる。
テンプレートの宣言
<xsl:template match="/">
これは、match属性でパスを指定して、xmlファイルの<root>要素に対して変換処理を行うといったテンプレート宣言。