xslt tutorial xslt transformations elements with examples
このチュートリアルでは、XSLTとは何か、その変換、要素、および使用法を例とともに説明します。また、XSLT変換コードを開発するためのXPathの重要性についても説明します。
「XSLT」という用語は、「XSL」と「T」の2つの単語を組み合わせて生成されます。「XSL」は「ExtensibleStylesheet Language」の短縮形であり、「T」は「Transformation」の短縮形です。
したがって、基本的に、XSLTは、ソースXMLドキュメントをXMLドキュメント、またはXSL-FO(Formatting Objects)などを使用してHTML、PDFなどの他の形式に変換/変換するために使用される変換言語です。
学習内容:
XSLTの概要
変換は、XSLTプロセッサ(Saxon、Xalanなど)の助けを借りて行われます。このXSLTプロセッサは、XSLTコードが記述された1つのXSLTファイルを含む1つ以上のXMLドキュメントをソースとして受け取り、次の図に示すように、結果/出力ドキュメントが後で生成されます。
XSLTプロセッサは、X-Pathを使用してソースXMLドキュメントを解析し、ルート要素からドキュメントの終わりまでさまざまなソース要素をナビゲートします。
推奨読書=> あなたが知る必要があるすべて X-Path
XSLT変換
変換を開始するには、XSLTコードを実行する1つのXMLドキュメント、XSLTコードファイル自体、およびXSLTプロセッサを備えたツールまたはソフトウェアが必要です(学習目的でソフトウェアの無料バージョンまたは試用版を使用できます)。
#1) XML Code
以下は、XSLTコードが実行されるソースXMLコードです。
ファイル名: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
#2)XSLTコード
以下は、上記のXMLドキュメントで実行されるXSLTコードです。
ファイル名: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
#3)結果/出力コード
以下のコードは、上記のXMLドキュメントでXSLTコードを使用した後に生成されます。
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
#4)Webブラウザで結果/出力を表示する
書籍:
ブックID | 書籍名 | 著者名 | 出版社 | 価格 | 版 |
---|---|---|---|---|---|
5350192956 | XSLTプログラマーズリファレンス | マイケルケイ | Wrox | $ 40 | 4位 |
3741122298 | ヘッドファーストジャバ | キャシー・シエラ | オライリー | 19ドル | 1位 |
9987436700 | SQL完全なリファレンス | ジェームズ・R・グロフ | マグロウヒル | 45ドル | 3位 |
XSLT要素
上記のXSLTコードとその機能を理解するには、まず、さまざまなXSLT要素とその属性を理解する必要があります。
#1)または
すべてのXSLTコードは、ルート要素で始まるか、
属性:
- @xmlns:xsl: XSLTドキュメントをXSLT標準に接続します。
- @バージョン: XSLTコードのバージョンをパーサーに定義します。
#二)
この宣言は、ソースドキュメントの選択された入力要素を処理または出力ドキュメントの定義されたターゲット要素ルールに変換するために適用される一連のルールを定義します。
基本的に、属性ごとに2種類のテンプレートを使用できます。
(i)名前付きテンプレート: xsl:テンプレート要素に@name属性が含まれている場合、これは名前付きテンプレートと呼ばれます。
名前付きテンプレートは、xsl:call-template要素によって呼び出されます。
(ii)一致テンプレート: xsl:template要素には、入力ノードで適用される一致パターンまたはXPathを含む@match属性が含まれています。
一致テンプレートは、xsl:apply-template要素によって呼び出されます。
xsl:template要素には、@ match属性または@name属性、あるいはその両方が必要です。 match属性を持たないxsl:template要素には、mode属性とpriority属性を含めることはできません。
上記のXSLT(を書き直してみましょう
に) との一致テンプレートに基づくXSLTコード。以下の黄色と灰色で強調表示された変更されたコードを参照してください。上記と同じ出力結果が生成されます。
Books:-
Book ID Book Name Author Name Publisher Price Edition
ハイライトされた領域のスクリーンショットを参照してください。
b) が付いた名前付きテンプレートに基づくXSLTコード。以下の黄色と灰色で強調表示された変更されたコードを参照してください。上記と同じ出力結果が生成されます。
Books:-
Book ID Book Name Author Name Publisher Price Edition
ハイライトされた領域のスクリーンショットを参照してください。
#3)
プロセッサは、@ select属性でXPathが定義されているすべてのテンプレートを見つけて適用します。
@mode属性は、同じ入力コンテンツで複数の出力方法を提供する場合にも使用されます。
#4)
プロセッサは、@ name属性内に値を持つテンプレートを呼び出します(必須)。
要素は、パラメータをテンプレートに渡すために使用されます。
モノのインターネットアプリケーションの例
#5)
上記のコードで定義されているように、@ select属性で定義されたXPath式に関する文字列/テキスト値を指定します。
これにより、本の名前の値がわかります。
#6):繰り返し
これにより、ソートされた順序でノードの各セット(@select(必須)属性で定義されたxpath)の命令が処理されます。
上記のコードは、ストア/ブックのノードセットごとに次のことを意味します。
/ store / book (1)
/ store / book (2)
/ store / book (3)
xsl:for-eachの子として使用して、ソートの順序を定義することもできます。
#7):条件付き処理
xsl:if命令は、@ test属性のブール値がtrueの場合にのみ処理されます。それ以外の場合、命令は評価されず、空のシーケンスが返されます。
2'> Condition True: Count of books are more than two.
結果: 条件True:本の数が2冊以上です。
ここで、count()は事前定義された関数です。
#8):代替条件処理
xsl:chooseには、xsl:when要素の@test属性内でテストされるさまざまな条件の複数のケースがあります。すべてのxsl:whenの中で最初に成立するテスト条件は、最初に処理され、オプションのxls:otherwiseがあります。要素。条件テストのいずれも真にならない場合、このxsl:otherwiseが考慮されます。
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
結果: 条件True:本の数は3です。
#9)
xsl:copyはコンテキストアイテムで機能します。つまり、それがノードの場合、コンテキストノードを新しく生成されたノードにコピーします。これはコンテキストノードの子をコピーしません。このため、これは浅いコピーと呼ばれます。 xsl:copy-of要素とは異なり、xsl:copyには@select属性がありません。
以下のコードでは、コンテキストアイテムが出力にコピーされ、すべての子アイテムがxsl:apply-templateによって再帰的に呼び出されてコピーされます。
node()| @ * すべてのノードとそのすべての属性を再帰的に表します。
結果: これにより、ソースドキュメントのすべてのノードと属性が再帰的に出力ドキュメントにコピーされます。つまり、ソースドキュメントの正確なコピーが作成されます。
#10)
xsl:copy-ofは、デフォルトですべての子と属性を含むノードのシーケンスを再帰的にコピーします。この性質のため、これはディープコピーとも呼ばれます。 XPathの評価には、@ select属性が必要です。
結果: これにより、ソースドキュメントのすべてのノードと属性が再帰的に出力ドキュメントにコピーされます。つまり、ソースドキュメントの正確なコピーが作成されます。
現在のノードと現在の属性のコピーを表します。
#十一)
この要素は、ターゲット結果にコメントを書き込むために使用されます。このタグの横にあるテキストコンテンツは、コメント出力として出力されます。
これは、コメントノードとして出力するために出力されます。
結果:
#12)
これにより、結果ドキュメントへのテキストノードが生成され、xsl:text内の値が文字列として出力されて出力されます。
これは
テキスト行。
出力:
これは
テキスト行。
#13)
これにより、@ name属性に指定された名前の要素が結果ドキュメントに生成されます。 name属性は必須属性です。
結果: 5350192956
#14)
これにより、結果ドキュメントの親要素への属性が生成されます。属性の名前はname属性によって定義され、属性の値は、以下のコードで指定されているように、select属性に記載されているXPathによって計算されます。 name属性は必須属性です。
結果:
#15)
この要素は、選択したノードを昇順または降順で順番に並べ替えます。ノードまたはXPathは@select属性を介して指定され、ソートの方向は@order属性によって定義されます。
以下のコードでは、アルファベット順に本の名前に従ってすべての本のリストを取得します。
Books:-
Book ID Book Name Author Name Publisher Price Edition
ハイライトされた領域については、次のスクリーンショットを参照してください。
結果: 以下のリストには、アルファベット順、つまり昇順で本の名前が含まれています。
書籍:
ブックID | 書籍名 | 著者名 | 出版社 | 価格 | 版 |
---|---|---|---|---|---|
3741122298 | ヘッドファーストジャバ | キャシー・シエラ | オライリー | 19ドル | 1位 |
9987436700 | SQL完全なリファレンス | ジェームズ・R・グロフ | マグロウヒル | 45ドル | 3位 |
5350192956 | XSLTプログラマーズリファレンス | マイケルケイ | Wrox | $ 40 | 4位 |
#16)
この要素は、値を保持する変数を宣言します。変数は、グローバル変数またはローカル変数の場合があります。変数の名前は@name属性によって定義され、この変数が保持する値は@select属性によって定義されます。
グローバル変数へのアクセスはグローバルです。つまり、変数は任意の要素内で呼び出すことができ、スタイルシート内で引き続きアクセスできます。
グローバル変数を定義するには、以下の黄色で強調表示されたコードに示されているように、スタイルシートのルート要素の横にある変数「SecondBook」がグローバル変数であり、2番目の本の名前を保持していることを宣言する必要があります。
ローカル変数へのアクセスは、それが定義されている要素に対してローカルです。つまり、灰色で強調表示されている以下のコードに示すように、変数が定義されている要素の外部ではアクセスできません。変数「最初の本」はローカル変数であり、最初の本の名前を保持します。
グローバル変数からローカル変数のいずれかを呼び出すには、以下に黄色で強調表示されているように、変数名の前にドル記号($)を使用します。 $ 。
First Book Name: Second Book Name:
ハイライトされた領域のスクリーンショットを参照してください。
結果:
ファーストブック名:XSLTプログラマーズリファレンス
2冊目の本の名前:Head First Java
アニメを無料で見る方法
#17)
この要素は、特定のキーに一致するパターン値のキーを宣言するために使用されます。
Nameは、@ name attribute(“によるそのキーへのプロバイダーです。 get-publisher 「)。これは後でkey()関数内で使用されます。 @match属性は、XPath式(“によって入力ノードにインデックスを付けるために提供されます。 本 「)、以下のように、黄色で強調表示された@matchは、ストアで入手可能なすべての書籍のインデックスを作成するために使用されます。
@match属性に関連して、@ use属性が使用され、XPath式(「publisher」)を介してそのキーの値を取得するノードを宣言します。
ここで、「Wrox」発行者のみが発行する本の詳細が必要な場合は、キーと値のペアを作成することで、xsl:key要素を介してその値を簡単に取得できると仮定します。
key( ‘get-publisher’、 ‘Wrox’) Key()は2つのパラメーターを取ります。1つはキーの名前(この場合は「get-publisher」)、2つ目は検索に必要な文字列値(この場合は「Wrox」)です。
Books:-
Book ID Book Name Author Name Publisher Price Edition
ハイライトされた領域のスクリーンショットを参照してください。
結果:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
結果/ HTMLビュー:
書籍:
ブックID | 書籍名 | 著者名 | 出版社 | 価格 | 版 |
---|---|---|---|---|---|
5350192956 | XSLTプログラマーズリファレンス | マイケルケイ | Wrox | $ 40 | 4位 |
#18)
この要素は、XSLT開発のデバッグ目的で使用されます。この要素は、その出力をアプリケーションの標準出力画面に提供します。
@terminate属性は、「yes」または「no」の2つの値で使用されます。値が「yes」に設定されている場合、メッセージが実行されるためのテスト条件が満たされるとすぐにパーサーが終了します。
これを理解するために、入力ドキュメントで次のコードのように価格要素が誤って空になった場合、プロセッサがxslを使用して簡単に達成できる空の価格要素に遭遇するとすぐに処理を停止する必要があると仮定します。以下のXSLTコードのようにifテスト条件内のメッセージ。
デバッガーアラートは、アプリケーションの標準画面に表示されます。 21行目でxsl:messageによって処理が終了しました。
入力XMLコード:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
ハイライトされた領域のスクリーンショットを参照してください。
XSLTコード:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
ハイライトされた領域のスクリーンショットを参照してください。
結果: パーサーが空の値札に遭遇するとすぐに処理を終了することに注意してください。そのため、、およびファイルの最後には表示されません。
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st ハイライトされた領域のスクリーンショットを参照してください。
ベータテスターは何をしますか

#19)&
要素は、内部で定義されている場合、テンプレートへのパラメーターを定義します。内部はグローバルパラメータとして、または内部はそのテンプレートのローカルパラメータとして定義できます。
テンプレートがbyorによって呼び出されると、の値が渡されます。

内部で定義されたパラメータの値をテンプレートに渡します。 @nameのような属性には、要素の@name属性と一致する必要があるパラメーターの名前が含まれています。 @Select属性は、そのパラメーターに値を設定するために使用されます。

変数のドル記号($)と同じように、パラメーターの値をフェッチするために使用されます。

ソースXMLコード:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
XSLTコード:
List of Books Name :-
Book Name:
ハイライトされた領域のスクリーンショットを参照してください。

結果出力:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference