サーチ…


備考

XSLT(XSL Transformations、Extensible Stylesheet Language Transformations)は、XMLに基づいたプログラミング言語であり、その目的はXMLを操作し変換することです。これは関数型プログラミング言語とW3C標準です。 XSLTを使用すると、1つ以上のXML文書をさまざまな出力形式(XML、HTML、テキスト)を持つ結果に変換できます。

XSLTを理解するには、以下のことに関する優れた知識があることが最善です。

  1. XML
  2. 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に関する情報の出力を得ることができます。

  1. Saxon-HE XSLTプロセッサ(Java用)をsaxon.sourceforge.netからダウンロードし、コンピュータのどこにでも解凍してください。
  2. テキストエディタで、次のコードを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>
  1. テキストエディタで、次のコードを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>
  1. コマンドラインウィンドウを開き、XMLおよびXSLTファイルを含むフォルダに移動します。
  2. 次のコマンドを実行します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行で実行してください。

  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>
  1. 出力ファイルpetOutput.htmlをWebブラウザで開きます。単純な表にデータを表示する必要があります。


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow