xslt チュートリアル
xsltの使い方
サーチ…
備考
XSLT(XSL Transformations、Extensible Stylesheet Language Transformations)は、XMLに基づいたプログラミング言語であり、その目的はXMLを操作し変換することです。これは関数型プログラミング言語とW3C標準です。 XSLTを使用すると、1つ以上のXML文書をさまざまな出力形式(XML、HTML、テキスト)を持つ結果に変換できます。
XSLTを理解するには、以下のことに関する優れた知識があることが最善です。
- XML
- XPath
これらの2つの基本概念がなければ、XSLTの学習が難しくなります。まず、XSLTドキュメントはXMLドキュメントであるためです。第2に、XSLTドキュメントはXPathを使用して、変換されるXMLドキュメントをクエリします。
推奨読書: https : //en.wikipedia.org/wiki/XSLT
バージョン
| バージョン | 仕様 | 状態 | 発売日 |
|---|---|---|---|
| XSLT 1.0 | https://www.w3.org/TR/xslt | 勧告 | 1998-08-18 |
| XSLT 2.0 | https://www.w3.org/TR/xslt20 | 勧告 | 2007年1月23日 |
| XSLT 3.0 | https://www.w3.org/TR/xslt-30 | 候補者の推薦 | 2015-11-19 |
インストールまたはセットアップ
XSLTは特別目的のプログラミング言語です。 XML文書を異なるXML形式、HTML形式、またはテキストベースの形式に変換するために広く使用されています。
XSLTの主なバージョンには、XSLT 1.0とXSLT 2.0という2つのバージョンがあります。 XSLT 1.0はより広く実装されていますが、XSLT 2.0と比較して多くの制限と制限があります。どのバージョンを使用するかを決める必要があります。選択した環境でXSLT 2.0プロセッサーが使用可能な場合は、ほとんどの場合、これが最良の選択です。
(XSLT 1.0は1999年11月にリリースされ、Microsoft、IBM、Sun、Oracleなどの主流ベンダー、余暇に取り組んでいる個々の愛好家からの1年か2年で多くの実装が登場した。最も一般的に使われているXSLT 2.0プロセッサはSaxonですが、それ自体には対応していません。他の自立型製品には、RaptorXML(Altova )、XmlPrime(CBCL)、Exselt、そして2.0プロセッサーもIBMのWebLogic、MarkLogicのXMLデータベースサーバー、IntelのXMLアクセラレータに組み込まれています。
XSLT 3.0の仕様は技術的に完全です(2017年4月に提案された提案)。ただし、当面は最も有望視されています。ストリーミング、パッケージ、JSONサポートなどの新機能が急務である場合にのみ考慮してください、またはtry / catchを実行します。 Saxon、Exselt、およびRaptorXMLの3つの実装が知られています。
XSLTを使い始めるには、いくつかの選択肢があります:
オンラインのXSLTツールを使用します。いくつか利用可能です( "オンラインXSLTツール"を検索)。非常に信頼性の高いオンラインIDEはhttp://xsltransform.net/です。これは言語の初期の感触を得る良い方法ですが、実際の開発をやりなおしたらこの方法を続行したくはありません。
すべてのブラウザに組み込まれているXSLTエンジンを使用します。オンラインツールと同様に、これらは、何もインストールする必要がないという利点があります。ブラウザはXSLT 1.0のみをサポートし、XMLからHTMLへの変換のみをサポートしており、デバッグのサポートは非常に弱いです。非常に最近ではあるがまだ実験的な開発はSaxon-JSで、XSLT 2.0(およびXSLT 3.0の一部)をブラウザで実行することができます。
XSLTプロセッサ(Saxonやxsltprocなど)をインストールします。これらの製品のほとんどは、オペレーティングシステムのコマンドラインを使用するか、Java、C、C#、Pythonなどの特定のプログラミング言語用のAPIを使用して呼び出すことができます。
Altova XML Spy、SyncroSoftのoXygen、Stylus StudioなどのXML開発環境をインストールします。これはより高価なオプションですが、より豊富な開発サポートとデバッグ機能を提供します。
いずれのオプションを選択する場合でも、まずXSLT 1.0またはXSLT 2.0を使用するかどうかを決定する必要があります。
単純なXSLTの例
XSLTを使用してXMLファイルのデータをHTMLファイルの表に変換する簡単な例を次に示します。単純なXSLT変換を試してみることができます。
前提条件:Java Runtime Environmentをインストールし、JREのロケーションをPATH変数に追加します。 (Windowsでは、ほとんどのインストーラがあなたのパスにJavaを追加します)。これが有効な場合は、コマンドラインウィンドウを開き、 java -versionコマンドを実行して、JREに関する情報の出力を得ることができます。
- Saxon-HE XSLTプロセッサ(Java用)をsaxon.sourceforge.netからダウンロードし、コンピュータのどこにでも解凍してください。
- テキストエディタで、次のコードを
pets.xmlしてpets.xmlという名前のファイルを作成します。
<pets>
<petType name="Dogs">
<pet id="123" name="Sparky" vaccineStatus="vaccinated" healthStatus="healthy"/>
<pet id="234" name="Sadie" vaccineStatus="unvaccinated" healthStatus="sick"/>
<pet id="345" name="Herman" vaccineStatus="unvaccinated" healthStatus="unknown"/>
</petType>
<petType name="Cats">
<pet id="456" name="Cleo" vaccineStatus="vaccinated" healthStatus="healthy"/>
<pet id="567" name="Janet" vaccineStatus="unvaccinated" healthStatus="healthy"/>
<pet id="678" name="Furry" vaccineStatus="vaccinated" healthStatus="sick"/>
</petType>
</pets>
- テキストエディタで、次のコードを
petTransform.xslしてpetTransform.xslという名前のファイルを作成します。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<!-- handle the root XML element -->
<xsl:template match="/">
<html><head>
<title>Pets that are available for adoption</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="pets">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="petType">
<h2><xsl:value-of select="@name"/></h2>
<table id="{@name}">
<tr>
<th colname="id">ID</th>
<th colname="name">Name</th>
<th colname="vaccinated">Vaccine status</th>
<th colname="health">Health status</th>
</tr>
<tbody>
<!-- add a row for each pet in this category -->
<xsl:for-each select="pet">
<tr>
<td colname="id"><xsl:value-of select="@id"/></td>
<td colname="name"><xsl:value-of select="@name"/></td>
<td colname="vaccinated"><xsl:value-of select="@vaccineStatus"/></td>
<td colname="health"><xsl:value-of select="@healthStatus"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</xsl:template>
<!-- ignore the content of other tags because we processed them elsewhere -->
<xsl:template match="*">
<!-- do nothing -->
</xsl:template>
</xsl:stylesheet>
- コマンドラインウィンドウを開き、XMLおよびXSLTファイルを含むフォルダに移動します。
- 次のコマンドを実行します
path_to_saxon.jar、ファイルのフルパスですsaxon9he.jar:
java -jar "path_to_saxon.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt
例えば:
java -jar "C:\Program Files\SaxonHE9-7-0-7J\saxon9he.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt
このコマンドは必ず1行で実行してください。
- テキストエディタで出力ファイル
petOutput.html開きます。これは次のようになります。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Pets that are available for adoption</title>
</head>
<body>
<h2>Dogs</h2>
<table id="Dogs">
<tr>
<th colname="id">ID</th>
<th colname="name">Name</th>
<th colname="vaccinated">Vaccine status</th>
<th colname="health">Health status</th>
</tr>
<tbody>
<tr>
<td colname="id">123</td>
<td colname="name">Sparky</td>
<td colname="vaccinated">vaccinated</td>
<td colname="health">healthy</td>
</tr>
<tr>
<td colname="id">234</td>
<td colname="name">Sadie</td>
<td colname="vaccinated">unvaccinated</td>
<td colname="health">sick</td>
</tr>
<tr>
<td colname="id">345</td>
<td colname="name">Herman</td>
<td colname="vaccinated">unvaccinated</td>
<td colname="health">unknown</td>
</tr>
</tbody>
</table>
<h2>Cats</h2>
<table id="Cats">
<tr>
<th colname="id">ID</th>
<th colname="name">Name</th>
<th colname="vaccinated">Vaccine status</th>
<th colname="health">Health status</th>
</tr>
<tbody>
<tr>
<td colname="id">456</td>
<td colname="name">Cleo</td>
<td colname="vaccinated">vaccinated</td>
<td colname="health">healthy</td>
</tr>
<tr>
<td colname="id">567</td>
<td colname="name">Janet</td>
<td colname="vaccinated">unvaccinated</td>
<td colname="health">healthy</td>
</tr>
<tr>
<td colname="id">678</td>
<td colname="name">Furry</td>
<td colname="vaccinated">vaccinated</td>
<td colname="health">sick</td>
</tr>
</tbody>
</table>
</body>
</html>
- 出力ファイル
petOutput.htmlをWebブラウザで開きます。単純な表にデータを表示する必要があります。