recursal/MDN huggingface dataset:
<xsl:element>
=============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:element>` 要素は、出力文書に要素を作成します。

### 構文
```

<xsl:element name=NAME namespace=URI use-attribute-sets=LIST-OF-NAMES >
  TEMPLATE
</xsl:element>
```

### 必須属性

`name`

出力要素の希望する名前を指定します。名前は有効な QName でなければなりません。

### 任意属性

`namespace`

出力要素の名前空間を指定します。

`use-attribute-sets`

`element` 要素の出力要素に適用される `attribute-set` 要素 (en-US)名のスペース区切りのリスト。適用された属性は、ネストされた属性要素によってオーバーライドできます。

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 7.1.2.

### Gecko のサポート

サポート済み
<xsl:transform>
===============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

The `<xsl:transform>` 要素は `<xsl:stylesheet>` 要素とまったく同じです。

### Gecko のサポート

サポート済み
<xsl:apply-imports>
===================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:apply-imports>` 要素は非常に秘密で、複雑なスタイルシートで主に使用されます。インポートの優先順位では、メインスタイルシートのテンプレートルールは、インポートされたスタイルシートのテンプレートルールより優先される必要があります。ただし、メインスタイルシートの同等のルールではなく、(低い優先順位の) インポートされたスタイルシートからテンプレートルールを使用するようにプロセッサを強制することが可能な場合があります。

### 構文
```

<xsl:apply-imports/>
```

### 必須属性

なし

### 任意属性

なし

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 5.6.

### Gecko のサポート

サポート済み
<xsl:attribute-set>
===================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:attribute-set>` 要素は名前付き属性のセットを作成します。属性のセットは、CSS の名前付きスタイルに類似した方法で出力ドキュメント全体に適用されます。

### 構文
```

<xsl:attribute-set name=NAME use-attribute-sets=LIST-OF-NAMES>
  <xsl:attribute>
</xsl:attribute-set>
```

### 必須属性

`name`

属性セットの名前を指定します。名前は有効な QName でなければなりません。

### 任意属性

`use-attribute-sets`

他の属性セットから属性セットを構築します。寄与する集合の名前は、空白文字で区切られなければならず、直接的または間接的に埋め込まれてはいけません。

### タイプ

最上位は `<xsl:stylesheet>` または `<xsl:transform>` の子である必要があります。

### 定義

XSLT, section 7.1.4.

### Gecko のサポート

サポート済み
<xsl:with-param>
================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:with-param>` 要素はテンプレートに渡すパラメータの値を設定します。

### 構文
```

<xsl:with-param name=NAME select=EXPRESSION>
  TEMPLATE
</xsl:with-param>
```

### 必須属性

`name`

このパラメータに名前を付けます。

### 任意属性

`select`

XPath 式を使用してパラメータの値を定義します。要素にテンプレートが含まれている場合、この属性は無視されます。

### タイプ

サブ命令は常に `<xsl:apply-templates>` または `<xsl:call-template>` 要素内に現れます。

### 定義

XSLT 11.6

### Gecko のサポート

サポート済み
<xsl:include>
=============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:include>` 要素はあるスタイルシートの内容を別のスタイルシートにマージします。`<xsl:import>` の場合とは異なり、インクルードされたスタイルシートの内容はインクルードするスタイルシートの内容とまったく同じです。

### 構文
```

<xsl:include href=URI />
```

### 必須属性

`href`

含めるスタイルシートの URI を指定します。

### 任意属性

なし

### タイプ

トップレベルは `<xsl:stylesheet>` または `<xsl:transform>` の子として任意の順序で表示されます。

### 定義

XSLT, section 2.6.1.

### Gecko のサポート

サポート済み
<xsl:strip-space>
=================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:strip-space>` 要素は空白を削除する必要があるソースドキュメント内の要素を定義します。

### 構文
```

<xsl:strip-space elements=LIST-OF-ELEMENT-NAMES  />
```

### 必須属性

`elements`

空白のみのテキストノードを削除する必要がある、ソース内の要素のスペース区切りリストを指定します。

### 任意属性

なし

### タイプ

トップレベル、`<xsl:stylesheet>` または `<xsl:transform>` の子である必要があります。

### 定義

XSLT, section 3.4

### Gecko のサポート

サポート済み
<xsl:for-each>
==============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:for-each>` 要素は一連のノードを選択し、それぞれのノードを同じ方法で処理します。これはノードのセットを反復処理したり、現在のノードを変更したりするためによく使用されます。1 つ以上の `<xsl:sort>` 要素がこの要素の子として表示される場合、処理の前にソートが行われます。それ以外の場合、ノードはドキュメント順に処理されます。

### 構文
```

<xsl:for-each select=EXPRESSION>
  <xsl:sort> [optional]
  TEMPLATE
</xsl:for-each>
```

### 必須属性

`select`

XPath 式を使用して、処理するノードを選択します。

### 任意属性

なし

### Type

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 8.

### Gecko のサポート

サポート済み
<xsl:fallback>
==============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:fallback>` 要素は指定された拡張子 (または、最終的には新しいバージョン) 要素がサポートされていない場合に使用するテンプレートを指定します。

### 構文
```

<xsl:fallback>
  TEMPLATE
</xsl:fallback>
```

### 必須属性

なし

### 任意属性

なし

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 15

### Gecko のサポート

現時点ではサポートされていません。
<xsl:decimal-format>
====================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:decimal-format>` 要素は、`format-number( )` 関数を使用して数字を文字列に変換する際に使用される文字と記号を定義します。

### 構文
```

<xsl:decimal-format
  name=NAME
  decimal-separator=CHARACTER
  grouping-separator=CHARACTER
  infinity=STRING
  minus-sign=CHARACTER
  NaN=STRING
  percent=CHARACTER
  per-mille=CHARATER
  zero-digit=CHARACTER
  digit=CHARACTER
  pattern-separator=CHARACTER />
```

### 必須属性

なし

### 任意属性

`name`

この形式の名前を指定します。


`decimal-separator`

小数点文字を指定します。デフォルトは (`.`) です。


`grouping-separator`

桁区切り文字を指定します。 デフォルトは (`,`) です。


`infinity`

無限を表すために使用される文字列を指定します。デフォルトは文字列 "`Infinity`"です。


`minus-sign`

マイナス記号文字を指定します。デフォルトはハイフン (`-`) です。


`NaN`

値が数値でない場合に使用される文字列を指定します。デフォルトは文字列 "`NaN`" です。


`percent`

パーセント符号文字を指定します。デフォルトは (`%`) です。


`per-mille`

1000 文字ごとに指定します。デフォルトは (`‰`) です。


`zero-digit`

数字のゼロ文字を指定します。 デフォルトは (`0`) です。


`digit`

数字を表すためにフォーマットパターンで使用される文字を指定します。デフォルトは (`#`) です。


`pattern-separator`

正と負のサブパターンをフォーマットパターンで区切る文字を指定します。デフォルトはセミコロン (`;`) です。

### タイプ

最上位は `<xsl:stylesheet>` または `<xsl:transform>` の子である必要があります。

### 定義

XSLT, section 12.3.

### Gecko のサポート

1.0 (Mozilla 1.0、Netscape 7.0) でサポートされています。
<xsl:choose>
============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:choose>` 要素はいくつかの選択肢の中から選択肢を定義します。 手続き型言語の switch 文のように振る舞います。

### 構文
```

<xsl:choose>
    <xsl:when test="[whatever to test1]"></xsl:when>
    <xsl:when test="[whatever to test2]"></xsl:when>
    <xsl:otherwise></xsl:otherwise> [optional]
</xsl:choose>
```

### 必須属性

なし

### 任意属性

なし

### タイプ

インストラクションはテンプレートとともに表示されます。1 つまたは複数の `<xsl:when>` 要素と、オプションで最後の `<xsl:otherwise>` 要素を含みます。

### 定義

XSLT, section 9.2.

### Gecko のサポート

サポート済み
<xsl:text>
==========

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:text>` 要素はリテラルテキストを出力ツリーに書き込みます。 `#PCDATA`、リテラルテキスト、およびエンティティ参照を含むことがあります。

### 構文
```

<xsl:text disable-output-escaping="yes" | "no">
  TEXT
</xsl:text>
```

### 必須属性

なし

### 任意属性

`disable-output-escaping` (Netscape は変換の結果 - 下の「出力」 - を直列化しませんので、この属性は本質的に文脈上は無関係です。html エンティティを出力するには、代わりに数値を使用します (例: `&nbsp`の `&#160`) )

出力に書き込まれたときに特殊文字をエスケープするかどうかを指定します。使用可能な値は "`yes`" または "`no`" です。たとえば "`yes`" が設定されている場合、文字>は `>` ではなく"`&gt`" として出力されます。

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 7.2

### Gecko のサポート

注意してサポートされています。
<xsl:key>
=========

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:key>`要素は、`key( )`関数を使用してスタイルシートの他の場所で使用できる名前付きキーを宣言します。

### 構文
```

<xsl:key name=NAME match=EXPRESSION
  use=EXPRESSION />
```

### 必須属性

`name`

このキーの名前を指定します。QName でなければなりません。

`match`

このキーが適用可能なノードを定義します。

`use`

適用可能な各ノードのキーの値を決定するために使用される XPath 式を指定します。

### 任意属性

なし

### タイプ

最上位は `<xsl:stylesheet>` または `<xsl:transform>` の子である必要があります。

### 定義

XSLT, section 12.2.

### Gecko のサポート

サポート済み
<xsl:param>
===========

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:param>` 要素はパラメータを名前で設定し、オプションでそのパラメータのデフォルト値を設定します。最上位要素として使用される場合、パラメータはグローバルです。`<xsl:template>` 要素内で使用される場合、パラメータはそのテンプレートに対してローカルです。この場合、テンプレートの最初の子要素でなければなりません。

### 構文
```

<xsl:param name=NAME select=EXPRESSION>
  TEMPLATE
</xsl:param>
```

### 必須属性

`name`

パラメータに名前を付けます。これは QName でなければなりません。

### 任意属性

`select`

指定されていない場合は XPath 式を使用してデフォルト値を指定します。

### タイプ

命令は、トップレベルの要素として表示されるか、テンプレート内に表示されます。

### 定義

XSLT, section 11.

### Gecko のサポート

サポート済み
<xsl:preserve-space>
====================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:preserve-space>` 要素は空白を保存する要素をソース文書内で定義します。複数の要素がある場合は、名前を空白文字で区切ります。空白を保持するのがデフォルト設定なので、この要素は `<xsl:strip-space>` 要素を打ち消すために使用する必要があります。

### 構文
```

<xsl:preserve-space elements=LIST-OF-ELEMENT-NAMES  />
```

### 必須属性

`elements`

空白を保持する要素を指定します。

### 任意属性

なし

### タイプ

トップレベル、 `<xsl:stylesheet>` または `<xsl:transform>` の子である必要があります。

### 定義

XSLT, section 3.4

### Gecko のサポート

サポート済み
<xsl:number>
============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:number>` 要素は物事を順番に数えます。 また、番号をすばやくフォーマットするためにも使用できます。

### 構文
```

<xsl:number
  count=EXPRESSION
  level="single" | "multiple" | "any"
  from=EXPRESSION
  value=EXPRESSION
  format=FORMAT-STRING
  lang=XML:LANG-CODE
  letter-value="alphabetic" | "traditional"
  grouping-separator=CHARACTER
  grouping-size=NUMBER  />
```

### 必須属性

なし

### 任意属性

`count`

ソースツリー内で連続して番号を付けるべき項目を指定します。XPath 式を使用します。


`level`

順序番号を生成する際にソースツリーのレベルをどのように考慮すべきかを定義します。これには 3 つの有効な値があります：`single` 、`multiple` 、`any` 。デフォルト値は `single` です。

`single`

リスト内の項目のように、ノードを兄弟順に番号付けします。プロセッサは count 属性に一致する `ancestor-or-self` 軸の最初のノードに移動し、そのノードとそれに先行する count 属性にも一致するすべての兄弟 (それが存在する場合は `from` 属性に一致すると停止する) をカウントします。一致するものが見つからない場合、シーケンスは空のリストになります。

`multiple`

ノードの階層位置 (例: 1.2.2.5 ) を反映する合成シーケンスとしてのノードの番号付け。 (ネストされた書式は `format` 属性で指定することができます (例：A.1.1) )。プロセッサは現在のノードおよび現在のノード自体のすべての祖先を調べ、`from` 属性と一致するものに達したときに停止します (存在する場合)。このリスト内の `count` 属性に一致するノードごとに、プロセッサはそれに先行して一致する兄弟数を数え、ノード自体に 1 を加算します。一致するものが見つからない場合、シーケンスは空のリストになります。

`any` (現時点ではサポートされていません)

レベルに関係なく、すべての一致するノードに順番に番号を付けます。 `ancestor`、 `self`、および `preceding` 軸すべてが考慮されます。プロセッサは現在のノードから開始し、逆の文書順に進み、`from` 属性に一致する場合は停止します。 count 属性に一致するものが見つからない場合、シーケンスは空のリストになります。このレベルは現時点ではサポートされていません。


from

番号付けを開始または開始する場所を指定します。シーケンスは `from`属性に一致するノードの最初の子孫で始まります。


value

与えられた形式を数値に適用します。これは標準 `<xsl:number>` 形式のいずれかでユーザーが入力した番号 (ノード順序番号とは対照的に) を簡単にフォーマットする方法です。


format

生成された番号の形式を定義します。

format="1"

1 2 3 . . . (これは現時点でサポートされている唯一の形式です)

format="01"

01 02 03 . . . 09 10 11 . . .

format="a"

a b c . . .y z aa ab . . .

format="A"

A B C . . . Y Z AA AB . . .

format="i"

i ii iii iv v . . .

format="I"

I II III IV V . . .


lang (現時点ではサポートされていません)

文字ベースの番号書式で使用する言語のアルファベットを指定します。


letter-value

文字を使用する番号付けシーケンスの間の曖昧さを解消します。いくつかの言語には文字を使用する複数の番号システムがあります。両方のシステムが同じトークンで始まる場合、あいまいさが発生する可能性があります。この属性の値は "`alphabetic`" または "`traditional`" です。デフォルトは "`alphabetic`" です。


grouping-separator

どの文字をグループ (たとえば千) の区切り文字として使用するかを指定します。デフォルトはカンマ (`,`) です。


grouping-size

数値グループを構成する数字の桁数を示します。デフォルト値は "`3`" です。

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 7.7

### Gecko のサポート

部分的なサポート。上記のコメントを参照してください。
<xsl:sort>
==========

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:sort>` 要素は、`<xsl:apply-templates>` または `<xsl:for-each>` で選択されたノードのソートキーを定義し、それらが処理される順序を決定します。

### 構文
```

<xsl:sort
  select=EXPRESSION
  order="ascending" | "descending"
  case-order="upper-first" | "lower-first"
  lang=XML:LANG-CODE
  data-type="text" | "number" />
```

### 必須属性

なし

### 任意属性

`select`

XPath 式を使用してソートするノードを指定します。


`order`

ノードを "`ascending`" または "`descending`" に処理するかどうかを指定します。デフォルトは "`ascending`" です。


`case-order`

大文字か小文字かを最初に指示するかどうかを示します。許容される値は "`upper-first`" および "`lower-first`" である。


`lang`

ソートで使用する言語を指定します。


`data-type`

アイテムをアルファベット順または数値順に並べ替えるかどうかを定義します。 許容される値は "`text`" と "`number`" で、"`text`" がデフォルトです。

### タイプ

Subinstruction は常に <xsl:for-each> の子として現れます。テンプレートの適切な場所または <xsl:apply-templates> の前に現れなければなりません。

### 定義

XSLT, section10.

### Gecko のサポート

サポート済み
<xsl:processing-instruction>
============================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:processing-instruction>` 要素は処理命令を出力文書に書き込みます。

### 構文
```

<xsl:processing-instruction name=NAME> TEMPLATE </xsl:processing-instruction>
```

### 必須属性

`name`

この処理命令の名前を指定します。

### 任意属性

なし

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 7.3

### Gecko のサポート

サポート済み
<xsl:if>
========

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:if>` 要素にはテスト属性とテンプレートが含まれています。テストが真と評価された場合、テンプレートは処理されます。これは、他の言語の if 文に似ています。ただし、if-then-else ステートメントの機能を実現するには、`<xsl:when>` と `<xsl:otherwise>` の子要素を 1 つずつ持つ `<xsl:choose>` 要素を使用します。

### 構文
```

<xsl:if test=EXPRESSION>
  TEMPLATE
</xsl:if>
```

### 必須属性

`test`

必要に応じて `boolean( )` に対して定義されたルールを使用して評価可能な XPath 式を含め、ブール値にします。値が true の場合、テンプレートは処理されます。そうでない場合は何もしません。

### 任意属性

なし

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSL section 9.1.

### Gecko のサポート

サポート済み
<xsl:otherwise>
===============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:otherwise>` 要素は `<xsl:when>` 条件のいずれも適用されない場合に実行されるアクションを定義するために使用されます。他のプログラミング言語の `else` または `default` の場合と似ています。

### 構文
```

<xsl:otherwise>
  TEMPLATE
</xsl:otherwise>
```

### 必須属性

なし

### 任意属性

なし

### タイプ

サブ命令は `<xsl:choose>` 要素の最後の子としてテンプレート内に現れなければなりません。

### 定義

XSLT, section 9.2

### Gecko のサポート

サポート済み
<xsl:copy>
==========

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:copy>` 要素は、現在のノードの浅いコピー (ノードおよび関連する名前空間ノード) を出力ドキュメントに転送します。現在のノードの子または属性はコピーされません。

### 構文
```

<xsl:copy use-attribute-sets=LIST-OF-NAMES>
  TEMPLATE
</xsl:copy>
```

### 必須属性

なし

### 任意属性

`use-attribute-sets`

要素であれば、出力ノードに適用される属性セットをリストします。 セットの名前は空白文字で区切る必要があります。

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 7.5.

### Gecko のサポート

サポート済み
<xsl:value-of>
==============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:value-of>` 要素は XPath 式を評価し、それを文字列に変換し、その文字列を result tree に書きます。

### 構文
```

<xsl:value-of select=EXPRESSION disable-output-escaping="yes" | "no"  />
```

### 必須属性

`select`

評価され、出力ツリーに書き込まれる XPath 式を指定します。

### オプション属性

`disable-output-escaping` (Netscape は変換の結果 - 下の「出力」 - を直列化しませんので、この属性は本質的に文脈上は無関係です。html エンティティを出力するには、代わりに数値を使用します (例: `&nbsp`の `&#160`) )

出力に書き込まれたときに特殊文字をエスケープするかどうかを指定します。使用可能な値は "`yes`" または "`no`" です。たとえば "`yes`" が設定されている場合、文字>は `>` ではなく"`&gt`" として出力されます。

### タイプ

インストラクションはテンプレートとともに表示されます。

### 定義

XSLT, section 7.6.1.

### Gecko のサポート

上記以外はサポートされています。
<xsl:namespace-alias>
=====================

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:namespace-alias>` 要素はスタイルシート内の名前空間を出力ツリー内の別の名前空間にマップする、めったに使用されないデバイスです。 この要素の最も一般的な使い方は、別のスタイルシートからスタイルシートを生成することです。通常は `xsl:`-prefixed リテラルの result 要素 (結果ツリーにそのままコピーする必要があります) がプロセッサによって誤解されるのを防ぐため、出力ツリーの XSLT 名前空間に適切に再変換される一時的な名前空間が割り当てられます。

### 構文
```

<xsl:namespace-alias stylesheet-prefix=NAME result-prefix=NAME />
```

### 必須属性

`stylesheet-prefix`

一時的な名前空間を指定します。

`result-prefix`

出力ツリーに必要な名前空間を指定します。

### 任意属性

なし

### タイプ

最上位は `<xsl:stylesheet>` または `<xsl:transform>` の子である必要があります。

### 定義

XSLT, section 7.1.1

### Gecko のサポート

現時点ではサポートされていません。
<xsl:comment>
=============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:comment>` 要素は出力文書にコメントを書き込みます。テキストのみを含める必要があります。

### 構文
```

<xsl:comment>
  TEMPLATE
</xsl:comment>
```

### 必須属性

なし

### 任意属性

なし

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 7.4.

### Gecko のサポート

サポート済み
<xsl:when>
==========

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:when>` 要素は `<xsl:choose>` 要素内に常に表示され、case 文のように動作します。

### 構文
```

<xsl:when test=EXPRESSION>
  TEMPLATE
</xsl:when>
```

### 必須属性

`test`

評価されるブール式を指定します。true の場合、要素の内容が処理されます。false の場合は無視されます。

### 任意属性

なし

### タイプ

サブ命令は、常に `<xsl:choose>` 要素内に現れます。

### 定義

XSLT, section 9.2.

### Gecko のサポート

サポート済み
<xsl:template>
==============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:template>` 要素は出力生成テンプレートを定義します。この要素は、match 属性または name 属性のいずれかを持つ必要があります。

### 構文
```

<xsl:template
  match=PATTERN
  name=NAME
  mode=NAME
  priority=NUMBER>
  <xsl:param> [optional]
  TEMPLATE
</xsl:template>
```

### 必須属性

なし

### 任意属性

`match`

このテンプレートを使用する要素を決定するパターンを指定します。これは `name` 属性がない場合に必須の属性です。


`name`

このテンプレートの名前を指定します。テンプレートの名前は `<xsl:call-template>` 要素を使用して呼び出すことができます。


`mode`

このテンプレートの特定のモードを指定します。このモードは `<xsl:apply-templates>` 要素の属性と一致させることができます。 これは複数の方法で同じ情報を処理する場合に便利です。


`priority`

このテンプレートの数値優先度を指定します。これは `Infinity` 以外の任意の数にすることができます。複数のテンプレートが同じノードに一致する場合、プロセッサはこの番号を使用します。

### タイプ

最上位は `<xsl:stylesheet>` または `<xsl:transform>` の子である必要があります。

### 定義

XSLT, section 5.3.

### Gecko のサポート

サポート済み
<xsl:attribute>
===============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:attribute>` 要素は、スタイルシートからアクセス可能な任意の値を使用して出力文書に属性を作成します。要素は属性値を設定する出力文書要素内の他の出力文書要素の前に定義する必要があります。しかし、( `<xsl:choose>` や `<xsl:apply-templates>` などのように) 出力の一部ではない要素の後または内部にある可能性があります。

### 構文
```

<xsl:attribute name=NAME namespace=URI>
  TEMPLATE
</xsl:attribute>
```

### 必須属性

`name`

出力文書に作成する属性の名前を指定します。名前は有効な QName でなければなりません。

### 任意属性

`namespace`

この属性の名前空間 URI を出力文書に定義します。関連する名前空間プレフィックスをこの要素で設定することはできません。

### タイプ

命令は、テンプレートまたは `<xsl:attribute-set>` 要素内に現れます。

### 定義

XSLT, section 7.1.3.

### Gecko のサポート

サポート済み
<xsl:message>
=============

**XSLT/XPath リファレンス**: XSLT 要素, EXSLT 関数, XPath 関数, XPath 軸

`<xsl:message>` 要素は (NS の JavaScript コンソールに) メッセージを出力し、オプションでスタイルシートの実行を終了します。これはデバッグに便利です。

### 構文
```

<xsl:message terminate="yes" | "no" >
  TEMPLATE
</xsl:message>
```

### 必須属性

なし

### 任意属性

`terminate`

"`yes`" に設定すると実行を終了する必要があります。デフォルト値は "`no`" です。この場合メッセージが出力され、実行が続行されます。

### タイプ

命令は、テンプレート内に表示されます。

### 定義

XSLT, section 13.

### Gecko のサポート

サポート済み
JavaScript ガイド
==============

この JavaScript ガイドでは、JavaScript の使い方を紹介し、この言語の概要を説明します。JavaScript の機能についてもっと知りたい場合は、JavaScript リファレンス を参照してください。

目次
--

このガイドは、いくつかの章に分かれています。

* 入門編
このガイドについて  
JavaScript について  
JavaScript と Java  
ECMAScript  
ツール  
Hello World
* 文法とデータ型
基本構文とコメント  
宣言  
変数のスコープ  
変数の巻き上げ  
データ構造とデータ型  
リテラル
* 制御フローとエラー処理
`if...else`  
`switch`  
`try`/`catch`/`throw`  
エラーオブジェクト
* ループと反復処理
`for  
while  
do...while  
break/continue  
for..in  
for..of`

* 関数
関数の定義  
関数の呼び出し  
関数のスコープ  
クロージャ  
実引数 と 仮引数  
アロー関数
* 式と演算子
代入演算子 と 比較演算子  
算術演算子  
ビット演算子 と 論理演算子  
条件演算子
* 数値と日付 数値リテラル
`Number` オブジェクト  
`Math` オブジェクト  
`Date` オブジェクト
* テキスト処理
文字列リテラル  
`String` オブジェクト  
テンプレートリテラル  
国際化  
正規表現

* インデックス付きコレクション
配列  
型付き配列
* キー付きコレクション
`Map`  
`WeakMap`  
`Set`  
`WeakSet`
* オブジェクトを利用する
オブジェクトとそのプロパティ  
新しいオブジェクトの作成  
メソッドの定義  
getter と setter
* オブジェクトモデルの詳細
プロトタイプベース言語  
階層の作成  
継承

* Promiseを使う
保証  
Promise チェーン  
エラーの伝搬  
合成 (Composition)  
タイミング
* イテレータとジェネレータ
イテレータ  
反復可能 (イテラブル)  
ジェネレータ
* メタプログラミング
`プロキシ`  
ハンドラとトラップ  
取り消し可能
Proxy  
`Reflect`
* JavaScript モジュール
エクスポート  
インポート  
デフォルトエクスポート  
名前を変更する  
モジュールの集約  
動的なモジュールの読み込み
* 次のページ »
並行モデルとイベントループ
=============

JavaScript は、"event loop"に基づく同時実行モデルを持ちます。このモデルは C 言語や Java のような他の言語のモデルとかなり異なっています。

ランタイムの概要
--------

後続のセクションでは、理論モデルを説明します。現代の JavaScript エンジンは、記載されたセマンティクスに従って実装され、また高度に最適化されています。

### 視覚表示

![Stack, heap, queue](/ja/docs/Web/JavaScript/Event_loop/the_javascript_runtime_environment_example.svg)

### スタック

関数呼び出しはフレームのスタックを形成します。


```js
function foo(b) {
  var a = 10;
  return a + b + 11;
}

function bar(x) {
  var y = 3;
  return foo(x \* y);
}

console.log(bar(7)); // returns 42
```


`bar`を呼び出すと、`bar`の引数とローカル変数を含んだ最初のフレームが生成されます。`bar`が`foo`を呼び出すと、`foo`の引数とローカル変数を含んだ２番目のフレームが生成され、最初のフレームの上にプッシュされます。`foo`から返ると、先頭のフレーム要素はスタックからポップされます(`bar`のコールフレームのみが残ります)。`bar`から返るときスタックは空になります。

### ヒープ

オブジェクトはヒープに割り当てられています。ヒープは、メモリの大規模で大部分は構造化されていない領域を意味する名前です。

### キュー

JavaScript ランタイムはメッセージキューを含んでいます。メッセージキューは、処理されるメッセージのリストです。各メッセージに関数を関連付けられています。スタックが空のとき、メッセージがキューから取り出され、処理されます。その処理は、関連する関数の呼び出し(と最初のスタックフレームの作成)で構成されています。スタックが再度空になると、メッセージ処理は終了します。

イベントループ
-------

`event loop`という名前は、それが一般的にどのように実装されたかに従って付けられました。これは通常、次のものに似ています。


```js
while (queue.waitForMessage()) {
  queue.processNextMessage();
}
```


`queue.waitForMessage`はもしその時点でメッセージが存在しないのであれば、同期的にメッセージが到着するのを待ちます。

### "Run-to-completion"

その他のメッセージが処理される前に、各メッセージは完全に処理されています。 関数が実行されるたびに、それが横取りすることはできず、他のコードが実行される前に、完全に実行されます（および関数が操作するデータを変更することができる）という事実を含め、プログラムについて推論するときにいくつかの素晴らしい特性を提供しています。例えば、これは C とは異なります。というのは、関数はスレッドで実行されている場合、それは別のスレッドでいくつかの他のコードを実行するには、任意の時点で停止することができます。

このモデルの欠点は、メッセージが完了するまでに時間がかかりすぎる場合は、Web アプリケーションはクリックやスクロールのようなユーザインタラクションを処理することができないことです。ブラウザは"スクリプトは実行に非常に時間がかかる"ダイアログを用いてこれを軽減します。追従するお勧めは、メッセージを短い処理にし、可能な場合には、いくつかのメッセージに一つのメッセージを切り縮めることです。

### メッセージの追加

Web ブラウザでは、メッセージは、イベントが発生し、それに接続されているイベントリスナーがある任意の時間に追加されます。イベントリスナーがない場合、イベントは失われます。だから、他のイベントと同様に、クリックイベントハンドラを持つ要素をクリックすると、メッセージが追加されます。

`setTimeout` (en-US)を呼び出すと、2 番目の引数として渡された時間が経過した後、メッセージがキューに追加されます。キューに他のメッセージがない場合、メッセージはすぐに処理されます。しかしながら、メッセージがある場合、`setTimeout`メッセージは他のメッセージを処理するために待機する必要があります。そのため第二引数は、保証時間ではなく、最小の時間を示しています。

### 一緒に通信するいくつかのランタイム

ウェブワーカーやクロスオリジンの iframe は、独自のスタック、ヒープ、およびメッセージキューがあります。二つの異なるランタイムのみ`postMessage`メソッドによって送信メッセージを介して通信することができます。他のランタイムが`message`イベントをリッスンする場合、このメソッドは他のランタイムにメッセージを追加します。

ブロッキング不可
--------

イベントループモデルの非常に興味深い特性は、他の多くの言語とは異なり、JavaScript は決してブロックしないことです。I/O の取り扱いは、通常、イベントとコールバックを介して行われます。そのため、アプリケーションはIndexedDBのクエリやXHRリクエストが返るのを待っている時も、ユーザ入力のような他のことを処理することができます。

`alert`か同期 XHR のようにレガシーな例外が存在しますが、それらを避けることは良い慣習とされています。例外に対する例外は存在することに気をつけてください(と言っても、たいていは他の何かというよりはむしろ実装のバグですが)。
数量詞
===

数量詞は、一致させる文字や式の数を示します。

試してみましょう
--------

種類
--

**メモ:** 以下の表の中で、*アイテム*は単一の文字だけでなく、文字クラス、Unicode プロパティエスケープ、グループと後方参照を示すこともあります。


| 文字 | 意味 |
| --- | --- |
| `*x**` | 
 直前のアイテム "x" の 0 回以上の繰り返しに一致します。例えば
 `/bo*/` は "A ghost booooed" の "boooo" や "A bird warbled"
 の "b" に一致しますが、 "A goat grunted" には一致しません。
  |
| `*x*+` | 
 直前のアイテム "x" の 1 回以上の繰り返しに一致します。`{1,}`
 と同等です。例えば `/a+/` は "candy" の "a" や
 "caaaaaaandy" のすべての "a" に一致します。
  |
| `*x*?` | 
 直前のアイテム "x" の 0 回か 1 回の出現に一致します。例えば
 `/e?le?/` は "angel" の "el" や "angle" の "le"
 に一致します。

`*`、`+`、`?`、`{}` といった数量詞の直後に使用した場合、既定とは逆に、その数量詞を非貪欲（出現回数が最小のものに一致）とします。既定は貪欲（出現回数が最大のものに一致）です。 |
| `*x*{*n*}` | "n" には正の整数が入ります。直前のアイテム "x" がちょうど "n" 回出現するものに一致します。例えば `/a{2}/` は "candy" の "a" には一致しませんが、"caandy" のすべての "a"、"caaandy" の最初の 2 つの "a" に一致します。 |
| `*x*{*n*,}` | 
 "n" には正の整数が入ります。直前のアイテム "x" の少なくとも "n"
 回の出現に一致します。例えば、`/a{2,}/` は "candy" の "a"
 には一致しませんが、"caandy" や "caaaaaaandy" の "a"
 のすべてに一致します。
  |
| `*x*{*n*,*m*}` | 
 "n" には 0 と正の整数が、 "m" には "n"
 より大きい正の整数が入ります。直前のアイテム "x" が少なくとも "n"
 回、多くても "m" 回出現するものに一致します。例えば
 `/a{1,3}/` は "cndy" では一致せず、"candy" の 'a'、"caandy"
 の 最初の 2 個の "a"、"caaaaaaandy" の最初の 3 個の "a"
 に一致します。"caaaaaaandy" では元の文字列に "a" が 4
 個以上ありますが、一致するのは "aaa" であることに注意してください。
  |
| `*x**?``*x*+?``*x*??``*x*{n}?``*x*{n,}?``*x*{n,m}?` | 既定では `*` や `+` といった数量詞は貪欲です。つまり、できる限り多くの文字列と一致しようとします。数量詞の後に `?` の文字を指定すると、数量詞が「非貪欲」になります。つまり、一致が見つかるとすぐに停止します。例えば、"some <foo> <bar> new </bar> </foo> thing" といった文字列が与えられた場合は、* `/<.*>/` は "<foo> <bar> new </bar> </foo>" に一致します。
* `/<.*?>/` は "<foo>" に一致します。
 |

例
-

### 繰り返しパターン


```js
const wordEndingWithAs = /\w+a+\b/;
const delicateMessage = "This is Spartaaaaaaa";

console.table(delicateMessage.match(wordEndingWithAs)); // [ "Spartaaaaaaa" ]
```

### 文字数


```js
const singleLetterWord = /\b\w\b/g;
const notSoLongWord = /\b\w{2,6}\b/g;
const loooongWord = /\b\w{13,}\b/g;

const sentence = "Why do I have to learn multiplication table?";

console.table(sentence.match(singleLetterWord)); // ["I"]
console.table(sentence.match(notSoLongWord)); // [ "Why", "do", "have", "to", "learn", "table" ]
console.table(sentence.match(loooongWord)); // ["multiplication"]
```

### 省略可能な文字


```js
const britishText = "He asked his neighbour a favour.";
const americanText = "He asked his neighbor a favor.";

const regexpEnding = /\w+ou?r/g;
// \w+ 1 つ以上の文字
// o "o" が続く
// u? 省略可能で "u" が続く
// r "r" が続く

console.table(britishText.match(regexpEnding));
// ["neighbour", "favour"]

console.table(americanText.match(regexpEnding));
// ["neighbor", "favor"]
```

### 貪欲と非貪欲


```js
const text = "I must be getting somewhere near the center of the earth.";
const greedyRegexp = /[\w ]+/;
// [\w ] ラテンアルファベットまたは空白
// + 1 回以上

console.log(text.match(greedyRegexp)[0]);
// "I must be getting somewhere near the center of the earth"
// テキストのすべてに一致 (ピリオドを除く)

const nonGreedyRegexp = /[\w ]+?/; // クエスチョンマークに注目
console.log(text.match(nonGreedyRegexp));
// "I"
// 一致する箇所は取りうる最も短い 1 文字
```

関連情報
----

* 正規表現ガイド
    + 文字クラス
    + アサーション
    + Unicode プロパティエスケープ
    + グループと後方参照
* `RegExp()` コンストラクター
* ECMAScript 仕様書の数量詞（英語）