XSLT要素
XSLT(Extensible Stylesheet Language Transformations)は、文書に適用する変換を記述するための多くの要素を定義しています。この記事では、これらの要素の一部を紹介します。XSLTの概要については、メイン記事をご覧ください。
XSLTロジック要素
| ノード | 説明/属性 | コンテナ/子供 | 例 |
|---|---|---|---|
| xsl:テンプレートの適用 | 当該ノード内に他の一致が存在する可能性があることを指定します。指定されていない場合、一致はすべて無視されます。select が指定されている場合は、選択されたノードまたは属性型に適合する「一致」を指定するテンプレートのみが適用されます。つまり、xsl:apply-templates の select 属性で一致する要素は、同じ要素に一致するテンプレートに対応します。modeが指定されている場合は、同じ「モード」を持ち、適切な「一致」を持つテンプレートのみが適用されます。 | 任意の親。任意の数のxsl:sortおよびxsl:with-param の子を含めることができます。 | <xsl:テンプレートを適用/> |
| xsl:選択 | 複数の選択肢。属性はありません。 | 任意の親。xsl :whenブロックと最大 1 つのxsl:otherwiseブロックが含まれます。 | <xsl:選択>…</xsl:choose> |
| xsl:for-each | 一致するたびに繰り返すループを作成します。selectは一致基準を指定します。 | 任意の親。任意の XML を含めることができます。 | <xsl:for-each select= "input[@name=$name]" > …</xsl:for-each> |
| xsl:if | Yes または No 条件。testは、 if を入力するための基準を指定します。 | 任意の親。任意の XML を含めることができます。 | <xsl:if test= "$type='text' または $type='password'" > …</xsl:if> |
| xsl:そうでない場合 | xsl:whenの条件がいずれも満たされない場合のデフォルトの選択肢。 | xsl:choose。任意のXMLを含めることができます。 | <xsl:そうでない場合>…</xsl:そうでない場合> |
| xsl:スタイルシート | 最上位要素。スタイルシート ドキュメント内で 1 回だけ出現します。versionは、使用されている XSLT バージョンを指定します。xmlns :xsl は、その標準のURLを指定します。 | 最上位の要素。すべての XML が含まれます。 | <xsl:スタイルシート>…</xsl:スタイルシート> |
| xsl:テンプレート | 処理テンプレートを指定します。matchは、テンプレートが使用されるタイミングを示します。nameは、xsl:call-template がこのテンプレートを呼び出すために使用できる名前をテンプレートに与えます。 | xsl:stylesheet。任意のXMLを含めることができます。 | <xsl:templateマッチ = "//入力" > …</xsl:テンプレート> |
| xsl:変数 | 変数を宣言できます。nameは変数名です。これは後で で参照できます$name。selectは変数の値です。 | 親はいるが、子供はいない。 | <xsl:変数名= "type"選択= "@type" /> |
| xsl:いつ | Yes または No の条件。testは、 if を入力するための基準を指定します。 | xsl:choose。任意のXMLを含めることができます。 | <xsl:when test= "$type='radio'" > …</xsl:when> |
ロジック要素を使用した XSLT スタイルシートの例
<xsl:stylesheet > <xsl:template match= "//input" > <xsl:variable name= "type" select= "@type" /> <xsl:variable name= "name" select= "@name" /> <xsl:if test= "$type='text' または $type='password' または $type='radio' または $type='checkbox'" > <xsl:choose > <xsl:when test= "$type='radio'" > <xsl:if test= "not(preceding-sibling::input[@type='radio'])" > <select name= "{@name}" > <xsl:for-each select= "../input[@name=$name]" > <option value= "{@value}" > <xsl:apply-templates /> </option> </xsl:for-each> </select> </xsl:if> </xsl:when> <xsl:when test= "$type='text'" > <input name= "{@name}" type= "{@type}" > <xsl:apply-templates /> </input> </xsl:when> <xsl:when test= "$type='password'" > <input name= "{@name}" type= "{@type}" > <xsl:apply-templates /> </input> </xsl:when> </xsl:choose> </xsl:if> </xsl:template> </xsl:stylesheet> XSLTファイルI/O要素
| ノード | 説明/属性 | コンテナ/子供 | 例 |
|---|---|---|---|
| xsl:呼び出しテンプレート | 名前が指定されたテンプレートを呼び出します。nameはxsl:template内の名前と一致します。 | 任意の親。子はxsl:with-paramです。 | <xsl:call-template name= "lib:make-elem" > |
| xsl:インポート | 別の XSLT ファイルを取得します。hrefはファイルの URI です。 | xsl:stylesheet。子要素はありません。 | <xsl:import href= "..\Library\FuncLib.xslt" /> |
| xsl:出力 | データがどのように返されるかを説明します。methodは、返されるデータの種類を指定します。omit -xml-declaration は、最初の xml タグを含めるかどうかを示します。encodingは、データがどのように返されるかを指定します。 | xsl:stylesheet。子要素はありません。 | <xsl:出力方法= "xml"省略xml宣言= "yes"エンコード= "UTF-8" /> |
| xsl:パラメータ | xsl:call-templateを使用してテンプレートに渡すことができるパラメータを指定します。 | xsl:template。子要素はありません。 | <xsl:param name= "要素名" /> |
| xsl:テキスト | タグの内容を出力します。 | 親は誰でも。子供はいない。 | <xsl:text >クレーム番号 クレームシーケンス番号</xsl:text> |
| xsl:値 | 変数を出力します。selectは変数を指定します。 | 親は誰でも。子供はいない。 | <xsl:value-of選択 = "$s" /> |
| xsl:パラメータ付き | xsl:call-templateに渡されるパラメータを指定します。テンプレート内のxsl:paramと一致している必要があります。nameはパラメータ名を指定します。selectはパラメータ値を指定します。 | xsl:call-template。子要素はありません。 | <xsl:with-param name= "要素名" select= "'hma:ClaimNumber'" /> |
クライアント側 XSLT は、ソースXMLファイルのルート XML タグの直後に次のような行を追加することで、ブラウザーで実装できます。
<?xml-stylesheet type="text/xsl" href="family.xsl"?>これについては、http://www.xml.com/pub/a/2000/10/25/msie/index.html のページで説明されています。
その他のXSLTセマンティクス
| シンボル | 意味 | 使用場所 |
|---|---|---|
| | 結合演算子。XPath 式でノードセットをグループ化するために使用されます。 | xsl:when、xsl:if、xsl:for-eachなどの要素の属性を選択します。 |
& | そして | 任意の条件または一致基準。たとえば、 xsl:if.test、xsl:when.test、xsl:template.select、xsl:for-each.selectなど。 |
<!-- | コメントを開始します。 | タグ内以外の任意の場所。 |
--> | コメントを終了します。 | タグ内以外の任意の場所。 |
$ | 変数名の開始。 | タグ内の任意の場所、たとえばxsl:value-of.selectやxsl:variable.name。 |
name() | 処理対象のタグの名前。一致条件に|s(パイプ記号)が含まれている場合に便利です。 | 任意の条件または一致基準。たとえば、 xsl:if.test、xsl:when.test、xsl:template.select、xsl:for-each.selectなど。 |
@ | XML 内の属性。 | 任意の条件または一致基準。たとえば、 xsl:if.test、xsl:when.test、xsl:template.select、xsl:for-each.selectなど。 |
[1]
XSLTで定義された関数
次の関数は、xsl:value-of.select や xsl:for-each.select など、多くの XSLT 属性で発生する可能性があります。
| 関数 | 説明/構文 | 例 |
|---|---|---|
| シーリング | ceiling関数は、数値引数の数値と等しいかそれより大きい最小の整数を返します。 | 天井(3.57 ) |
| 連結 | 2 つ以上の文字列を連結します。 | 連結( $ fname , ' ' , $ lname ) |
| 含む[2] | 最初の文字列に 2 番目の文字列が含まれている場合は true を返し、含まれていない場合は false を返します。 | contains ( '検索する文字列' , '検索' ) |
| カウント | count 関数は、ノードセット内のノードの数をカウントして返します。 | 数える(要素) |
| 床 | floor関数は、数値引数の数値と等しいかそれより小さい最大の整数を返します。 | 床(3.57 ) |
| 正規化空間 | 文字列の先頭と末尾の空白を削除します | スペースを正規化( $ fname ) |
| 位置 | 位置関数は、xsl:for-eachまたはxsl:apply-templates要素ノードリストによって処理されている現在のノードの1から始まる[3]インデックスを返します。引数はありません。 | 位置() |
| ラウンド | round 関数は、数値を最も近い整数に丸めます。 | ラウンド(3.57 ) |
| 弦 | 文字列関数は値引数を文字列に変換します。 | 弦() |
| 文字列の長さ | string-length関数は、文字列の文字数を返します。文字列引数はオプションです。省略された場合、デフォルトではコンテキストノードの文字列値が使用されます。 | 文字列の長さ( 'hello' ) |
| 部分文字列 | 変数値内のセグメント。部分文字列は、入力変数、選択される最初の文字、および結果の文字列の長さの3つのパラメータを取ります。 | 部分文字列( $ dob , 4 , 2 ) |
| 部分文字列の後 | substring-after 関数は、文字列引数で指定された文字列のうち、部分文字列引数で指定された部分文字列の後にある部分を返します。 | 部分文字列の後( '1814年に私たちはちょっとした旅行に出かけました' 、'私たち' ) |
| 前の部分文字列 | substring-before 関数は、文字列引数で指定された文字列のうち、部分文字列引数で指定された部分文字列の前にある部分を返します。 | 部分文字列の前( '1814年に私たちはちょっとした旅行に出かけました' 、'私たち' ) |
| 和 | sum 関数は、ノード セットまたは値のリスト内の数値セットの合計値を加算して返します。 | 合計( 1 , 3 , 7 , 12 ) |
| 翻訳する | 値引数の文字列を受け取り、文字列 1 引数内のすべての文字を文字列 2 引数の同じ位置にある置換文字に置き換え、変更された文字列を返します。 | translate ( 'band' , 'abcd' , 'ABCD' ) = 'BAnD' |
外部リンク
- W3C XSLT 1.0 勧告 - XSLT 1.0 の構文とセマンティクス全体を記述します
- W3C XSLT 2.0勧告
- XSLT要素リファレンス - W3Schools
参考文献
- ^ 「XSLTリファレンス」。
- ^ 「XSLT 1.0: 関数に含まれる」。
- ^ 「例16:1」。