Xslt-quick-guide
XSLTの概要
XSL
XSLTを学習する前に、まずE * X tensible S tylesheet L * anguageを表すXSLを理解する必要があります。 CSSはHTMLであるため、XMLに似ています。
XSLの必要性
HTMLドキュメントの場合、テーブル、div、スパンなどのタグが事前に定義されています。ブラウザはスタイルを追加し、CSSスタイルを使用してそれらを表示する方法を知っています。 ただし、XMLドキュメントの場合、タグは事前定義されていません。 XMLドキュメントを理解してスタイルを設定するために、World Wide Web Consortium(W3C)は、XMLベースのスタイルシート言語として機能できるXSLを開発しました。 XSLドキュメントは、ブラウザがXMLドキュメントをレンダリングする方法を指定します。
XSLの主要な部分は次のとおりです-
- XSLT -XMLドキュメントをさまざまな他のタイプのドキュメントに変換するために使用されます。
- XPath -XMLドキュメントをナビゲートするために使用されます。
- XSL-FO -XMLドキュメントのフォーマットに使用されます。
XSLTとは
XSLT、Extensible Stylesheet Language Transformationsは、XMLデータをある形式から別の形式に自動的に変換する機能を提供します。
XSLTの仕組み
XSLTスタイルシートは、ターゲットXMLドキュメントに適用される変換ルールを定義するために使用されます。 XSLTスタイルシートはXML形式で記述されています。 XSLT ProcessorはXSLTスタイルシートを取得し、ターゲットXMLドキュメントに変換ルールを適用してから、XML、HTMLまたはテキスト形式の形式でフォーマットされたドキュメントを生成します。 このフォーマットされたドキュメントは、XSLTフォーマッターによって利用され、エンドユーザーに表示される実際の出力が生成されます。
利点
XSLTを使用する利点は次のとおりです-
- プログラミングに依存しません。 変換は別のxslファイルに書き込まれますが、これもXMLドキュメントです。
- xslファイルの変換を変更するだけで、出力を変更できます。 コードを変更する必要はありません。 そのため、Webデザイナーはスタイルシートを編集して、出力の変更をすばやく確認できます。
XSLT構文
次のサンプルXMLファイル、students.xmlがあり、適切にフォーマットされたHTMLドキュメントに変換する必要があるとします。
次の基準を満たすために、上記のXMLドキュメントのXSLTスタイルシートドキュメントを定義する必要があります-
- ページには*生徒*というタイトルが必要です。
- ページには、学生の詳細の表が必要です。
- 列には次のヘッダーが必要です:ロール番号、名、姓、ニックネーム、マーク
- テーブルには、それに応じて学生の詳細が含まれている必要があります。
ステップ1:XSLTドキュメントを作成する
上記の要件を満たすXSLTドキュメントを作成し、students.xslという名前を付けて、students.xmlと同じ場所に保存します。
ステップ2:XSLTドキュメントをXMLドキュメントにリンクする
次のxml-stylesheetタグでstudent.xmlドキュメントを更新します。 student.xslにhref値を設定します
手順3:Internet ExplorerでXMLドキュメントを表示する
出力
XSLT <テンプレート>
<xsl:template>は、特定のタイプ/コンテキストのノードに必要な出力を生成するためにテンプレートを再利用する方法を定義します。
宣言
以下は、 <xsl:template> 要素の構文宣言です。
属性
Sr.No | Name & Description |
---|---|
1 |
name テンプレートが適用される要素の名前。 |
2 |
match テンプレートが適用される要素を示すパターン。 |
3 |
priority テンプレートの優先順位番号。 優先度の低いテンプレートのマッチングは、優先度の高いテンプレートの前からは考慮されません。 |
4 |
mode 要素を複数回処理して、毎回異なる結果を生成できます。 |
要素
Number of occurrences | Unlimited |
---|---|
Parent elements | xsl:stylesheet, xsl:transform |
Child elements | xsl:apply-imports,xsl:apply-templates,xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:param, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable, output elements |
デモ例
このテンプレートルールには、<student>要素を識別し、表形式で出力を生成するパターンがあります。
出力
XSLT <値の>
<xsl:value-of>タグは、選択されたノードの値をXPath式に従ってテキストとして書き込みます。
宣言
以下は、 <xsl:value-of> 要素の構文宣言です。
属性
Sr.No | Name & Description |
---|---|
1 |
Select 現在のコンテキストで評価されるXPath式。 |
2 |
disable-outputescaping デフォルト-「いいえ」。 「yes」の場合、出力テキストはXML文字をテキストからエスケープしません。 |
要素
Number of Occurrences | Unlimited |
---|---|
Parent elements | xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, output elements |
Child elements | None |
デモ例
この例では、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を持つ<student>要素のテーブルを作成します。
出力を確認する
XSLT <for-each>
<xsl:for-each>タグは、各ノードにテンプレートを繰り返し適用します。
宣言
以下は <xsl:for-each> 要素の構文宣言です
属性
Sr.No | Name & Description |
---|---|
1 |
Select 反復されるノードのセットを決定するために現在のコンテキストで評価されるXPath式。 |
要素
Number of Occurrences | Unlimited |
---|---|
Parent elements | xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:foreach, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processinginstruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, output elements. |
Child elements | xsl:apply-imports, xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:number, xsl:processing-instruction, xsl:sort, xsl:text, xsl:value-of, xsl:variable. |
デモ例
この例では、各生徒を反復処理することにより、属性rollnoとその子<firstname>、<lastname> <nickname>および<marks>を持つ<student>要素のテーブルを作成します。
出力
XSLT <並べ替え>
<xsl:sort>タグは、ノードのソート基準を指定します。
宣言
次に、 <xsl:sort> 要素の構文宣言を示します。
属性
Sr.No | Name & Description |
---|---|
1 |
select ノードのソートキー。 |
2 |
lang ソート順を決定するために使用される言語アルファベット。 |
3 |
data-type テキストのデータ型。 |
4 |
order ソート順。 デフォルトは「昇順」です。 |
5 |
case-order 大文字による文字列のソート順。 デフォルトは「アッパーファースト」です。 |
要素
Number of occurrences | Unlimited |
Parent elements | xsl:apply-templates, xsl:for-each |
Child elements | None |
デモ例
この例では、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を備えた<student>要素のテーブルを作成し、各生徒を名前でソートします。
出力
XSLT <if>
<xsl:if>タグは、ノードのコンテンツに対する条件付きテストを指定します。
宣言
以下は、 <xsl:if> 要素の構文宣言です。
属性
Sr.No | Name & Description |
---|---|
1 |
test テストするxmlデータの条件。 |
要素
Number of Occurrences | Unlimited |
---|---|
Parent elements | xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, output elements |
Child elements | xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:for-each, xsl:if, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable, output elements |
デモ例
この例では、各生徒を反復処理して、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を使用して<student>要素のテーブルを作成します。 90以上のマークをチェックし、学生の詳細を印刷します。
出力
XSLT <選択>
<xsl:choose>タグは、<xsl:otherwise>および<xsl:when>要素とともにノードのコンテンツに対する複数の条件付きテストを指定します。
宣言
以下は、 <xsl:choose> 要素の構文宣言です。
要素
Number of Occurrences | Unlimited |
---|---|
Parent elements | xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, output elements |
Child elements | xsl:otherwise, xsl:when |
デモ例
この例では、各生徒を反復処理して、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を使用して<student>要素のテーブルを作成します。 グレードの詳細を確認してから印刷します。
出力
XSLT <キー>
<xsl:key>タグ要素は、XMLドキュメント内の特定の要素に割り当てられた名前付きの名前と値のペアを指定します。 このキーは、XMLドキュメント内の割り当てられた要素にアクセスするために、XPath式のkey()関数で使用されます。
宣言
以下は、 <xsl:key> 要素の構文宣言です。
属性
S.No | Name & Description |
---|---|
1 |
Name 使用するキーの名前。 |
2 |
Match このキーを保持するノードを識別するために使用されるパターン。 |
3 |
Use XMLドキュメントのノードの値を識別するXPath式。 |
要素
Number of Occurrences | Unlimited |
Parent elements | xsl:stylesheet |
Child elements | None |
デモ例
この例では、各生徒を反復処理して、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を使用して<student>要素のテーブルを作成します。 キーを名としてチェックして、学生の名前の1つとし、学生の詳細を出力します。
出力
XSLT <メッセージ>
<message>タグ要素は、XSLT処理のデバッグに役立ちます。 javascriptアラートに似ています。 <xsl:>タグは、処理を終了し、エラーメッセージを表示するために呼び出し元アプリケーションにメッセージを送信するXSLTプロセッサへのメッセージをバッファします。
宣言
以下は、 <xsl:message> 要素の構文宣言です。
属性
Sr.No | Name & Description |
---|---|
1 |
terminate この命令の実行時に変換を終了するかどうかを指定します。 デフォルトは「yes」です。 |
要素
Number of Occurrences | Unlimited |
---|---|
Parent elements | xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:foreach, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processinginstruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, output elements |
Child elements | xsl:apply-templates, xsl:attribute, xsl:call-template, xsl:choose, xsl:comment, xsl:copy, xsl:copy-of, xsl:element, xsl:for-each, xsl:if, xsl:processing-instruction, xsl:text, xsl:value-of, xsl:variable, output elements |
デモ例
この例では、各生徒を反復処理して、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を使用して<student>要素のテーブルを作成します。 キーが存在するファーストネームとしてチェックし、学生の詳細を印刷します。そうでない場合はエラーメッセージを表示します。
出力
XSLT <apply-template>
<xsl:apply-template>タグは、選択した各ノードのタイプとコンテキストに基づいて、適用する適切なテンプレートを見つけるようにXSLTプロセッサに通知します。
宣言
以下は、 <xsl:apply-template> 要素の構文宣言です。
属性
Sr.No | Name & Description |
---|---|
1 |
select すべての子を処理する代わりに、XPath式によって選択されたノードを処理するために使用されます。 |
2 |
mode 修飾名で指定された要素を複数回処理でき、そのたびに異なる結果が生成されます。 |
要素
Number of occurrences | Unlimited |
---|---|
Parent elements | xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:foreach, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processinginstruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, output elements |
Child elements | xsl:sort, xsl:with-param |
デモ例
この例では、各生徒を反復処理して、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を使用して<student>要素のリストを作成します。
出力
XSLT <インポート>
<xsl:import>タグは、あるスタイルシートの内容を別のスタイルシートにインポートします。 スタイルシートのインポートは、インポートされたスタイルシートよりも優先されます。
宣言
以下は、 <xsl:import> 要素の構文宣言です。
属性
Sr.No | Name & Description |
---|---|
1. |
href インポートされるxsltスタイルシートのパスを渡すために使用されます . |
要素
Number of occurrences | Unlimited |
Parent elements | xsl:stylesheet, xsl:transform |
Child elements | none |
デモ例
この例では、各生徒を反復処理して、属性 rollno とその子<firstname>、<lastname>、<nickname>、および<marks>を使用して<student>要素のリストを作成します。 ここでは、students_imports.xslスタイルシートがstudents.xslをインポートし、students.xmlがstudents_imports.xslにリンクされている2つのxslスタイルシートを作成しました。