recursal/MDN huggingface dataset:
XML のイントロダクション
==============

概要: この記事は、'eXtensible Markup Language' (XML、拡張可能マークアップ言語) を紹介し、その使い道について XML は HTML に似たマークアップ言語です。 これは Extensible Markup Language の略で、汎用マークアップ言語として W3C が推奨する仕様です。つまり、他のマークアップ言語とは異なり、XML は事前定義されていないため、独自のタグを定義する必要があります。この言語の主な目的は、インターネットなどのさまざまなシステム間でデータを共有することです。

XML に基づいた言語はたくさんあります。XHTML、MathML、SVG、XUL、XBL、RSS、RDF などがあります。 あなた自身のものを作ることもできます。

XML 文書構造
--------

**警告:** このサブ記事は執筆中です...

XML および XML ベースの言語の全体の構造は tag に基づいています。

### XML 宣言

XML 宣言はタグではありません。文書の送信メタデータに使用しました。
```

<?xml version="1.0" encoding="UTF-8"?>
```


#### 属性

version :

この文書で使用されている XML のバージョン

encoding :

この文書で使用されているエンコーディング。

### コメント
```

<!-- Comment -->
```

"正しい" XML (妥当であり、整形式であること)
--------------------------

### 正しいデザインルール

XML 文書を正しくするには、次の条件を満たす必要があります。

* 文書は整形式でなければなりません。
* 文書はすべての XML 構文規則に準拠している必要があります。
* 文書は、通常 XML スキーマまたは DTD (文書型定義) で設定されているセマンティックルールに準拠する必要があります。
### 例


```xml
<?xml version="1.0" encoding="UTF-8"?>
<message>
    <warning>
        Hello World
    <!--missing </warning> -->
</message>
```


整形式に適合した正しい例は以下です。


```xml
<?xml version="1.0" encoding="UTF-8"?>
<message>
    <warning>
         Hello World
    </warning>
</message>
```


未定義のタグを含む文書は無効です。たとえば、`<warning>` タグを定義しなかった場合、上記の文書は無効になります。

**メモ:** ほとんどのブラウザは、形式が不適切な XML 文書を識別できるデバッガを提供しています。

エンティティ
------

HTML と同様に、XML には特別な予約文字 (タグに使用される大なり記号など) を参照するための (エンティティと呼ばれる) メソッドがあります。知っておくべきこれらの文字は 5 つあります。

| エンティティ | 文字 | 説明 |
| --- | --- | --- |
| &lt; | < | 小なり記号 |
| &gt; | > | 大なり記号 |
| &amp; | & | アンパサンド |
| &quot; | " | 二重引用符 |
| &apos; | ' | 1 つのアポストロフィ (または単一引用符) |

宣言されたエンティティは 5 つしかありませんが、ドキュメントの Document Type Definition を使用して追加することができます。たとえば、新しい `&warning;` エンティティを作成する場合。このようにして行うことができます：


```html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE body [
 <!ENTITY warning "Warning: Something bad happened... please refresh and try again.">
]>
<body>
  <message> &warning; </message>
</body>
```


数字参照を使用して特殊文字を指定することもできます。 たとえば、&#xA9; は "©" 記号です。

XML の表示
-------

XML は説明のためにたいてい用いられますが、XML データを表示するための方法があります。その方法を定義しなければ、生の XML コードがブラウザに表示されます。

XML ページに見た目を持たせる方法の一つは、`xml-stylesheet` 宣言で CSS を用いることです。
```

<?xml-stylesheet type="text/css" href="stylesheet.css"?>
```


XML を表示するもう 1 つのより強力な方法もあります。XSL を HTML などの他の言語に変換するために使用できる Extensible Stylesheet Language Transformation (XSLT) です。 これにより、XML は非常に用途が広くなります。
```

<?xml-stylesheet type="text/xsl" href="transform.xsl"?>
```

推奨
--

この記事は、XML の概要についてごく簡単に紹介したもので、始めるためのいくつかの小さな例と参照が含まれています。XML の詳細については、Web でもっと詳細な記事を調べてください。

ハイパーテキストマークアップ言語 (HTML) を学ぶと、XML をよりよく理解するのに役立ちます。

あわせて参照
------

* XML.com
* Extensible Markup Language (XML) @ W3.org
* XML Example: A List Apart
* Using XML: A List Apart

上記の Using XML の記事は、あなた自身の言語を変換したり作成したりするための情報に関する素晴らしいリソースです。
XML のパースとシリアライズ
===============

場合によっては、XML のコンテンツを解析して DOM ツリーに変換する必要があるでしょう。または逆に、既存の DOM ツリーを XML にシリアライズすることもあります。この記事では、XML のシリアライズと解析の一般的な作業を容易にするため、ウェブプラットフォームで提供されるオブジェクトに注目します。

`XMLSerializer`

DOM ツリーをシリアライズし、XML を含む文字列に変換します。

`DOMParser`

XML を含む文字列を解析して DOM ツリーを構築し、入力データに基づいて適切な `XMLDocument` または `Document` を返します。

`XMLHttpRequest`

URL からコンテンツを読み込みます。XML コンテンツは、XML 自体から構築された DOM ツリーを持つ XML `Document` オブジェクトとして返されます。

XPath

XML 文書の特定の部分のアドレスを含む文字列を作成し、それらのアドレスに基づいて XML ノードを特定する技術。

XML 文書を作成する
-----------

次のいずれかの方法で XML 文書を作成します (これは `Document` のインスタンスです)。

### 文字列を DOM ツリーにパースする

この例では、`DOMParser` を使用して文字列の XML フラグメントを DOM ツリーに変換します:


```js
const xmlStr = '<q id="a"><span id="b">hey!</span></q>';
const parser = new DOMParser();
const doc = parser.parseFromString(xmlStr, "application/xml");
// ルート要素の名前またはエラーメッセージを出力します
const errorNode = doc.querySelector("parsererror");
if (errorNode) {
  console.log("パース中にエラー発生");
} else {
  console.log(doc.documentElement.nodeName);
}
```

### URL にできるリソースを DOM ツリーにパースする

#### XMLHttpRequest を使用する

URL アドレス指定が可能な XML ファイルを読み込み解析して DOM ツリーにするサンプルコードを次に示します:


```js
const xhr = new XMLHttpRequest();

xhr.onload = () => {
  dump(xhr.responseXML.documentElement.nodeName);
};

xhr.onerror = () => {
  dump("Error while getting XML.");
};

xhr.open("GET", "example.xml");
xhr.responseType = "document";
xhr.send();
```


`xhr` オブジェクトの `responseXML` フィールドで返される値は XML の解析により構築された `Document` です。

document が HTML である場合、上記のコードは `Document` を返します。document が XML である場合、返されるオブジェクトは `XMLDocument` になります。この 2 種類は基本的に同じですが、その違いは主に歴史的な部分であり、差別化にはいくつかの実用的な利点があります。

**メモ:** `HTMLDocument` インターフェイスもありますが、独立した型であるとは限りません。独立した型として扱うブラウザーもありますが、単なる `Document` インターフェイスへのエイリアスとしているブラウザーもあります。

XML 文書のシリアライズ
-------------

`Document` がある時、`XMLSerializer.serializeToString()` メソッドを用いて文章の DOM ツリーを XML にシリアライズし直すことができます。

前の節で作成した XML 文書をシリアライズするには、以下の方法を用いてください。

### DOM ツリーを文字列にシリアライズ

まず、DOM ツリーの作成方法で説明された方法で DOM ツリーを作成します。もしくは、`XMLHttpRequest` で取得した DOM ツリーを用います。

DOM ツリー `doc` を XML 文字列にシリアライズするには、以下のように `XMLSerializer.serializeToString()` を呼び出します。


```js
const serializer = new XMLSerializer();
const xmlStr = serializer.serializeToString(doc);
```

### HTML 文書のシリアライズ

DOM が HTML 文書である場合、`serializeToString()` を用いてシリアライズすることもできますが、より単純な方法があります。`Element.innerHTML` プロパティ (指定したノードの子孫のみを得たい場合) または `Element.outerHTML` プロパティ (指定したノードとその子孫を得たい場合) を用いればよいです。


```js
const docInnerHtml = document.documentElement.innerHTML;
```


これを実行すると、`docHTML` は文書の内容、すなわち `<body>` 要素の内容を表す HTML が入った文字列になります。

このコードを用いると、`<body>` *と* その子孫に対応する HTML を得ることができます。


```js
const docOuterHtml = document.documentElement.outerHTML;
```

関連項目
----

* XPath
* `XMLHttpRequest`
* `Document`, `XMLDocument` および `HTMLDocument`
XSLT による XML の変換
================

概要
--

概要

コンテンツとプレゼンテーションの分離は、XML の重要な設計の特徴です。 XML 文書の構造は、このデータが最終的にどのように表現されるべきかを示す必要性に妨げられることなく、コンテンツ自体の個々の側面間の重要な関係を反映し、明確にするように設計されています。このインテリジェントな構造化は、より多くのデータ移行を自動化し、ネットワークでリンクされた異機種間で配置する際に具体的な意味を持ちます。

しかし、 XML 文書内に格納されるコンテンツの多くは、最終的には人間の読者に表示する必要があります。ブラウザーは、親しみやすく柔軟性の高いインターフェイスを提供しているため、 XML コンテンツの表示版を提供するための理想的なメカニズムです。さまざまな XML 技術を利用して一から構築された Firefox は、元の XML 文書と、それらを HTML 表示用にスタイル設定およびレイアウトするために使用される特殊なスタイルシートの両方を処理するために必要なすべてのメカニズムをそれ自体に組み込んでおり、クライアントサイドの処理でサーバーの負荷を軽減します。

現時点で、 Gecko （Firefox のレイアウトエンジン）は 2 種類の XML 用のスタイルシートに対応しています。基本的な表示方法の制御 — フォント、色、位置、など — については、 Gecko は CSS を使用します。

ここでは、Gecko が対応している 2 つ目の種類のスタイルシート、XSLT スタイルシートに注目します。XSLT は eXtensible Stylesheet Language/Transform の略で、この名前は最適です。 XSLT は、スタイルシート作成者が主要な XML 文書を 2 つの重要な方法で変換することができます。コンテンツの操作と並べ替え（必要であれば、コンテンツの並べ替えも含みます）、およびコンテンツの異なる形式への変換（Firefox の場合は、ブラウザーで表示できる HTML への変換）です。

XSLT/XPath リファレンス
-----------------

### 要素

要素

* xsl:apply-imports *(対応済み)*
* xsl:apply-templates *(対応済み)*
* xsl:attribute *(対応済み)*
* xsl:attribute-set *(対応済み)*
* xsl:call-template *(対応済み)*
* xsl:choose *(対応済み)*
* xsl:comment *(対応済み)*
* xsl:copy *(対応済み)*
* xsl:copy-of *(対応済み)*
* xsl:decimal-format *(対応済み)*
* xsl:element *(対応済み)*
* xsl:fallback *(未対応)*
* xsl:for-each *(対応済み)*
* xsl:if *(対応済み)*
* xsl:import *(ほぼ対応済み)*
* xsl:include *(対応済み)*
* xsl:key *(対応済み)*
* xsl:message *(対応済み)*
* xsl:namespace-alias *(未対応)*
* xsl:number *(一部対応済み)*
* xsl:otherwise *(対応済み)*
* xsl:output *(一部対応済み)*
* xsl:param *(対応済み)*
* xsl:preserve-space *(対応済み)*
* xsl:processing-instruction
* xsl:sort *(対応済み)*
* xsl:strip-space *(対応済み)*
* xsl:stylesheet *(一部対応済み)*
* xsl:template *(対応済み)*
* xsl:text *(一部対応済み)*
* xsl:transform *(対応済み)*
* xsl:value-of *(一部対応済み)*
* xsl:variable *(対応済み)*
* xsl:when *(対応済み)*
* xsl:with-param *(対応済み)*
### 軸

軸

* ancestor (en-US)
* ancestor-or-self (en-US)
* attribute (en-US)
* child (en-US)
* descendant (en-US)
* descendant-or-self (en-US)
* following (en-US)
* following-sibling (en-US)
* namespace (en-US) *(未対応)*
* parent (en-US)
* preceding (en-US)
* preceding-sibling (en-US)
* self (en-US)
### 関数

関数

* boolean() *(対応済み)*
* ceiling() *(対応済み)*
* concat() *(対応済み)*
* contains() *(対応済み)*
* count() *(対応済み)*
* current() *(対応済み)*
* document() *(対応済み)*
* element-available() *(対応済み)*
* false() *(対応済み)*
* floor() *(対応済み)*
* format-number() *(対応済み)*
* function-available() *(対応済み)*
* generate-id() *(対応済み)*
* id() *(partially 対応済み)*
* key() *(対応済み)*
* lang() *(対応済み)*
* last() *(対応済み)*
* local-name() *(対応済み)*
* name() *(対応済み)*
* namespace-uri() *(対応済み)*
* normalize-space() *(対応済み)*
* not() *(対応済み)*
* number() *(対応済み)*
* position() *(対応済み)*
* round() *(対応済み)*
* starts-with() *(対応済み)*
* string() *(対応済み)*
* string-length() *(対応済み)*
* substring() *(対応済み)*
* substring-after() *(対応済み)*
* substring-before() *(対応済み)*
* sum() *(対応済み)*
* system-property() *(対応済み)*
* translate() *(対応済み)*
* true() *(対応済み)*
* unparsed-entity-url() *(not 対応済み)*
さらなる読み物
-------

さらなる読み物

* 書籍
* デジタル
    + ウェブサイト
    + 記事
    + チュートリアル／例
    + その他
原典情報
----

* Copyright Information: Copyright © 2001-2003 Netscape. All rights reserved.
* 注: この転載記事はもともと DevEdge サイトの一部でした。
一般的な XSLT エラー
=============

### MIME タイプ

サーバーは、XML mime タイプの`text/xml`または`application/xml`のソースとスタイルシートの両方を送信する必要があります。 現在のタイプを調べるには、Mozilla でファイルを読み込み、ページ情報を見てください。 または、ダウンロードツールを使用してください。これらのツールは通常、MIME タイプを示します。

Firefox 6 以降では、公式の XSLT mimetype である `application/xslt+xml`を使用することもできます。

### 名前空間

XSLT 1.0 の名前空間は`http://www.w3.org/1999/XSL/Transform`です。IE の古いバージョンでは、異なる名前空間が使用されていました。 しかしこれらのバージョンでは、最終的に XSLT 1.0 仕様となったものと互換性のない XSLT のドラフト版も使用されていました。Firefox は公式の XSLT 1.0 バージョンのみをサポートしています。

### 不足している機能

XSLT 1.0 仕様には、Firefox が残念ながらサポートしていない機能がいくつかあります。具体的には：

* XPath 式の`namespace::` 軸。これをサポートすることは将来的に可能になりそうです
* `disable-output-escaping`属性。この機能は構築された出力ドキュメントのシリアル化の仕組みを制御します。しかし、Firefox は出力ドキュメントをシリアル化しないので、属性は実際には適用されません。 `disable-output-escaping`を適用した出力ドキュメントの一部だけをシリアライズして再解析するためのヒューリスティックを追加しようとする可能性がありますが、ヒューリスティックはしばしば間違った結果を招き、これまでこれを追加することを躊躇してきました。スタイルシートに`<xsl:text disable-output-escaping="yes">&nbsp;</xsl:text>`のようなコードが含まれていることがよくあります。これはスタイルシートを入れるだけで、すべての XSLT エンジンでうまく動作します。私たちは、`disable-output-escaping`の欠如が問題であることを認識しています。私たちはそれに対する解決策を見いだしたいと思いますが、これまでのところ、良い解決策は見つかりませんでした。
* `<xsl:namespace-alias>` 要素

上記の機能のいずれかを手助けしたい場合は、大いに助けてください。
XSLT 要素リファレンス
=============

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

ここでは、最上位要素と指示の 2 種類の要素について説明します。最上位の要素は `<xsl:stylesheet>` または `<xsl:transform>` の子として表示する必要があります。一方、指示はテンプレートに関連付けられています。スタイルシートにはいくつかのテンプレートが含まれています。ここでは説明しない第 3 のタイプの要素はリテラル結果要素 (LRE) です。 LRE もテンプレートに表示されます。これは、HTML 変換スタイルシートの `<hr>` 要素など、結果ドキュメントにそのままコピーする必要のある非命令要素から構成されます。

関連するメモでは、 LRE 内の任意の属性と限られた数の XSLT 要素の一部の属性には、属性値テンプレートとして知られているものも含めることができます。属性値テンプレートは、属性の値を指定するために使用される埋め込み XPath 式を含む文字列です。実行時に式が評価され、XPath 式の代わりに評価結果が使用されます。たとえば、変数 "`image-dir`" が次のように定義されているとします。
```

<xsl:variable name="image-dir">/images</xsl:variable>
```


評価される式は、中括弧の中に置かれます。
```

<img src="{$image-dir}/mygraphic.jpg"/>
```


この結果、次のようになります。
```

<img src="/images/mygraphic.jpg"/>
```


続く要素の注釈には説明、構文リスト、必須およびオプションの属性のリスト、タイプと位置の説明、W3C 勧告のソース、および現在の Gecko サポートの程度の説明が含まれます。

* `<xsl:apply-imports>`
* `<xsl:apply-templates>`
* `<xsl:attribute>`
* `<xsl:attribute-set>`
* `<xsl:call-template>`
* `<xsl:choose>`
* `<xsl:comment>`
* `<xsl:copy>`
* `<xsl:copy-of>`
* `<xsl:decimal-format>`
* `<xsl:element>`
* `<xsl:fallback>` *(対応外)*
* `<xsl:for-each>`
* `<xsl:if>`
* `<xsl:import>` *(ほぼ対応)*
* `<xsl:include>`
* `<xsl:key>`
* `<xsl:message>`
* `<xsl:namespace-alias>` *(対応外)*
* `<xsl:number>` *(一部対応)*
* `<xsl:otherwise>`
* `<xsl:output>` *(一部対応)*
* `<xsl:param>`
* `<xsl:preserve-space>`
* `<xsl:processing-instruction>`
* `<xsl:sort>`
* `<xsl:strip-space>`
* `<xsl:stylesheet>` *(一部対応)*
* `<xsl:template>`
* `<xsl:text>` *(一部対応)*
* `<xsl:transform>`
* `<xsl:value-of>` *(一部対応)*
* `<xsl:variable>`
* `<xsl:when>`
* `<xsl:with-param>`
XSLT の概要
========

« Transforming XML with XSLT

eXtensible Stylesheet Language/Transform は非常に強力な言語であり、この記事の全体的な議論はこの記事の範囲をはるかに超えていますが、基本的な概念の簡単な説明は Netscape の機能の説明の理解に役立ちます。

XSLT スタイルシートは XML ドキュメントです。

独自の特殊な構文を持つ CSS と異なり、XSLT スタイルシートは XML 文書であり、整形式を含むすべての XML 規則に準拠しなければなりません。したがって、変換のモデルは 1 つの XML 文書を使用して別の XML 文書を変換することです。

XSLT スタイルシートには、標準の XSLT 見出しが含まれています。

XSLT スタイルシートの最も外側の要素は `<xsl:stylesheet>` 要素でなければなりません (受け入れ可能な代替要素は `<xsl:transform>` 要素です)。この要素には少なくとも 1 つの名前空間宣言と必須のバージョン属性が含まれます。他の名前空間と 3 つのオプションの属性も含めることができます。

XSLT の必須名前空間は `"http://www.w3.org/1999/XSL/Transform"` です。

名前空間は XML のかなりの混乱の対象です。多くの場合、名前空間は URI であるように見えますが、実際にはそのアドレスにあるリソースを参照していません。代わりに既知の要素セットの一意の識別子を指定する単なる方法です。文字列 `"http://www.w3.org/1999/XSL/Transform"` は、1999 年に XSLT 勧告で W3C によって指定されたタグのセットに属するとマークされた要素を指定する定数です。スタイルシートで時折見られる別の文字列 `"http://www.w3.org/TR/WD-xsl"` は、W3C 文書の以前の作業草案 (したがって WD) に準拠していることを示します。後者のネームスペースは W3C が最終的に採用したものと互換性がなく、Netscape でサポートされていません。

繰り返し `"http://www.w3.org/1999/XSL/Transform"` と入力するのは面倒で、マークアップを読みにくくするため、スタイルシートの見出しの名前空間に省略名を割り当てるための標準的なメカニズムがあります。したがって、opening stylesheet 要素の完全な例は、このようになります。

`<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">`

xmlns 擬似属性は、後続の文書全体で使用するために短縮名 xsl を完全な名前空間にマップします。したがって、上記の stylesheet 要素の前に `xsl:` が付いています。xsl は従来使用されていた短縮名 (接頭辞と呼ばれます) ですが必須ではなく、別の名前を選択することも可能です。この記事の例はすべて xsl 接頭辞の使用を前提としています。

すべての XSLT 変換は、ドキュメントではなくツリーで実行されます。

プロセッサと呼ばれる XSLT 変換エンジンは、ドキュメントでは直接動作しません。変換が行われる前に、プライマリ XML ドキュメントとスタイルシートドキュメントは、メモリ内のドキュメント構造の抽象的な表現を作成するパーサを介して実行する必要があります。ツリーと呼ばれるこの表現は、プロセッサによって実際に操作されるものです。ツリーは抽象データ型であり、パーサーとプロセッサに応じてさまざまな方法で実装できる概念モデルです。Netscape ではツリー構造として W3C DOM に似た構造を使用していますが、他のものも可能です。唯一の要件はツリー内のオブジェクトの配置、そのプロパティ、およびそれらの関係に関係します。

ツリーはノードの階層的なフレームワークで構成されています。単一のルートノード、要素ノード、テキストノード、属性ノード、コメントノード、処理命令ノード、および名前空間ノードの 7 つの異なるタイプのノードで構成できます。

ツリーの最上部にルートノードがあります。ルートノードは XML 文書の個々の部分に対応していません。文書全体を表します。ルートノードの下には要素、コメント、処理命令などの子要素があります。これらの子要素の中にはさらに子要素がいるものもあります。そして、これはいくつかのレベルのために続けることができます。たとえば、テキストノードには子を持たないなど、ノードの種類が発生する特定の制約があります。

プロセッサのアクションの結果もツリーです。Netscape はこのツリーを使用してブラウザウィンドウにコンテンツを表示します。

XSLT は、高水準の宣言型言語です。

本質的に、XSLT スタイルシートはテンプレートと呼ばれる一連のルールであり、この特定のパターンに一致するノードはこの特定の方法で操作され、結果ツリーのこの特定の位置で終了することを宣言します。これがどのように達成されるかについての詳細は、プロセッサに委ねられています。スタイルシートの実行順序は保証できないため、XSLT は副作用を発生させる機能をサポートしていません。これは Lisp や Scheme のようなものです。

ツリー上の場所は、別の W3C 勧告である XPath を使用して指定されます。

変換はプロセッサがツリー上の個々のノードを特定できるかどうかに依存します。これを容易にするために、W3C は別の言語である XPath を使用することに決め、Xpath は XSLT コンテキスト外でも使用されています。その名前が示すように、XPath はプロセッサがツリーを通過して目的のノードに到達する「パス」を定義します。このパスは評価される XPath 特有の表現、一致される条件の数、ノードを関連付ける方法、および/またはツリー内の方向性の指示を含む式からなります。XSLT で最も一般的に使用される XPath の部分の詳細な説明は、参考セクションで説明します。

テンプレートマッチングの潜在的な競合は、一連のカスケード優先ルールを使用して解決されます。

一般的に、より具体的なテンプレートルールはあまり具体的でないテンプレートルールよりも優先され、他のものは同等であるため、ドキュメントの後に表示されるテンプレートルールが先に表示されたものよりも優先されます。

スタイルシートは、処理命令を介して XML 文書に添付することができます。

特定の XML 文書を処理するためにどの XSLT スタイルシートを使用すべきかを示す最も簡単な方法は、XML 文書自体に処理命令を含めることです。 たとえば、スタイルシートが inventory.xsl と呼ばれ、xml ドキュメントと同じディレクトリにある場合、xml ドキュメントの処理命令は次のようになります。

`<?xml-stylesheet type="text/xml" href="inventory.xsl"?>`

これは xml ドキュメントのプロローグセクションに配置する必要があります。

XSLT と XPath の詳細については、この記事の最後にある参考文献を参照してください。
Netscape XSLT/XPath リファレンス
==========================

次のリストは W3C の XSLT 1.0 勧告と、XPath 勧告に適したセクションの要素、axes、関数にアルファベット順に注釈をつけたものです。XSLT プロセッサの開発は進行中です。また、機能の拡張と共にこのドキュメントも更新されます。

### 要素

* xsl:apply-imports *(対応済)*
* xsl:apply-templates *(対応済)*
* xsl:attribute *(対応済)*
* xsl:attribute-set *(対応済)*
* xsl:call-template *(対応済)*
* xsl:choose *(対応済)*
* xsl:comment *(対応済)*
* xsl:copy *(対応済)*
* xsl:copy-of *(対応済)*
* xsl:decimal-format *(対応済)*
* xsl:element *(対応済)*
* xsl:fallback *(非対応)*
* xsl:for-each *(対応済)*
* xsl:if *(対応済)*
* xsl:import *(ほとんど対応)*
* xsl:include *(対応済)*
* xsl:key *(対応済)*
* xsl:message *(対応済)*
* xsl:namespace-alias *(非対応)*
* xsl:number *(一部対応)*
* xsl:otherwise *(対応済)*
* xsl:output *(一部対応)*
* xsl:param *(対応済)*
* xsl:preserve-space *(対応済)*
* xsl:processing-instruction
* xsl:sort *(対応済)*
* xsl:strip-space *(対応済)*
* xsl:stylesheet *(一部対応)*
* xsl:template *(対応済)*
* xsl:text *(一部対応)*
* xsl:transform *(対応済)*
* xsl:value-of *(一部対応)*
* xsl:variable *(対応済)*
* xsl:when *(対応済)*
* xsl:with-param *(対応済)*
### Axes

* ancestor
* ancestor-or-self
* attribute
* child
* descendant
* descendant-or-self
* following
* following-sibling
* namespace *(非対応)*
* parent
* preceding
* preceding-sibling
* self
### 関数

* boolean() *(対応済)*
* ceiling() *(対応済)*
* concat() *(対応済)*
* contains() *(対応済)*
* count() *(対応済)*
* current() *(対応済)*
* document() *(対応済)*
* element-available() *(対応済)*
* false() *(対応済)*
* floor() *(対応済)*
* format-number() *(対応済)*
* function-available() *(対応済)*
* generate-id() *(対応済)*
* id() *(一部対応)*
* key() *(対応済)*
* lang() *(対応済)*
* last() *(対応済)*
* local-name() *(対応済)*
* name() *(対応済)*
* namespace-uri() *(対応済)*
* normalize-space() *(対応済)*
* not() *(対応済)*
* number() *(対応済)*
* position() *(対応済)*
* round() *(対応済)*
* starts-with() *(対応済)*
* string() *(対応済)*
* string-length() *(対応済)*
* substring() *(対応済)*
* substring-after() *(対応済)*
* substring-before() *(対応済)*
* sum() *(対応済)*
* system-property() *(対応済)*
* translate() *(対応済)*
* true() *(対応済)*
* unparsed-entity-url() *(非対応)*
さらなる読みもの
========

« Transforming XML with XSLT

印刷物
---

### 書籍

* **XSLT: Programmer's Reference, Second Edition**
    + **著者**: Michael H. Kay
    + **ページ数**: 992 pages
    + **出版社**: Wrox; 2 edition (May 3, 2001)
    + **ISBN**: 0764543814
        - Michael Kay は W3C XSL ワーキンググループのメンバーであり、オープンソース XSLT プロセッサである Saxon の開発者です。彼はまた、このテーマに関する第 2 版に達した唯一の本の著者でもあります。これは XSLT ストーリーのすべての可能なベースを網羅している非常に大きな本です。うまくレイアウトされています。

https://www.amazon.com/XSLT-Programmers-Reference-Programmer/dp/0764543814

* **XSLT**
    + **著者**: Doug Tidwell
    + **ページ数**: 473 pages
    + **出版社**: O'Reilly Media; 1 edition (August 15, 2001)
    + **ISBN**: 0596000537
        - Doug Tidwell は IBM の上級開発者であり、一般に XML 技術の著名なエバンジェリストです。彼は IBM の幅広い XML 開発者サイトで、XML のさまざまな側面に関するいくつかの記事とチュートリアルの著者です。この本はマイケル・ケイのものよりもいくぶん包括的ではありませんが、基礎をうまくカバーし、興味深い例を提供しています。

https://www.amazon.com/Xslt-Doug-Tidwell/dp/0596000537

* **Learning XML, Second Edition**
    + **著者**: Erik T. Ray
    + **ページ数**: 432 pages
    + **出版社**: O'Reilly Media; 2 edition (September 22, 2003)
    + **ISBN**: 0596004206
        - タイトルが示すように、これは一般的に XML の概要です。第 6 章は特に XSLT に専念しています。

https://www.amazon.com/gp/product/0596004206

デジタル
----

### ウェブサイト

* **World Wide Web Consortium**
    + **W3C ホームページ**: https://www.w3.org
    + **メインの XSL ページ**: https://www.w3.org/Style/XSL/
    + **XSLT specifications overview**: https://www.w3.org/TR/xslt/
    + **Archive of public style (CSS and XSLT) discussions**: https://lists.w3.org/Archives/Public/www-style/
    + **XPath specifications overview**: https://www.w3.org/TR/xpath/
        - World Wide Web Consortium は、多くがデファクトスタンダードとなる多くのウェブベースの技術のための勧告を公表する機関です。
### 記事

* Hands-on XSL (Don R. Day)
* What is XSLT? (G. Ken Holman)
### チュートリアル/例

* Jeni's XSLT Pages
* XMLPitstop.com
* XSL Tutorial
### その他

* Extensible Stylesheet Language (XSL)
* **XSL-List**
    + **Subscribe**: https://www.mulberrytech.com/xsl/xsl-list/index.html
    + **Archives**: https://www.biglist.com/lists/xsl-list/archives/
<xsl:copy-of>
=============

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

`<xsl:copy-of>` 要素は、select 属性が出力文書に指定するものすべての深いコピー (子孫ノードを含む) を作成します。

### 構文
```

<xsl:copy-of select=EXPRESSION />
```

### 必須属性

`select`

何をコピーするかを指定する XPath 式を使用します。

### 任意属性

なし

### タイプ

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

### 定義

XSLT, section 11.3.

### Gecko のサポート

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

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

`<xsl:apply-templates>` 要素は、入力ツリー内のノードのセットを選択し、適切なテンプレートを適用するようにプロセッサに指示します。

### 構文
```

<xsl:apply-templates select=EXPRESSION mode=NAME>
  <xsl:with-param> [optional]
  <xsl:sort> [optional]
</xsl:apply-templates>
```

### 必須属性

なし

### 任意属性

`select`

処理するノードを指定する XPath 式を使用します。アスタリスク (\*) はノードセット全体を選択します。この属性が設定されていない場合は、現在のノードのすべての子ノードが選択されます。

`mode`

同じノードに対して複数の処理方法が定義されている場合は、それらを区別します。

### タイプ

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

### 定義

XSLT section 5.4.

### Gecko のサポート

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

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

`<xsl:import>` 要素はあるスタイルシートの内容を別のスタイルシートにインポートするための最上位要素です。一般に、インポートしたスタイルシートの内容は、インポートするスタイルシートの内容よりもインポートの優先度が低くなります。これは `<xsl:include>` とは対照的です。ここでインクルードされたスタイルシートの内容は、インクルードするスタイルシートの内容とまったく同じです。

### 構文
```

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

### 必須属性

`href`

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

### 任意属性

なし

### タイプ

トップレベルは、インポートスタイルシートの `<xsl:stylesheet>` または `<xsl:transform>` の他の子の前に表示する必要があります。

### 定義

XSLT, section 2.6.2.

### Gecko のサポート

主に Mozilla 1.0 以降のトップレベルの変数とパラメータに関するいくつかの問題でサポートされています。
<xsl:call-template>
===================

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

`<xsl:call-template>` 要素は名前付きテンプレートを呼び出します。

### 構文
```

<xsl:call-template name=NAME>
  <xsl:with-param> [optional]
</xsl:call-template>
```

### 必須属性

`name`

呼び出すテンプレートの名前を指定します。

### 任意属性

なし

### タイプ

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

### 定義

XSLT, section 6.

### Gecko のサポート

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

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

`<xsl:stylesheet>` 要素 (または同等の `<xsl:transform>` 要素) は、スタイルシートの最も外側の要素です。

### 名前空間宣言

文書を XSLT スタイルシートとして識別するために必要な擬似属性。通常これは `xmlns:xsl="http://www.w3.org/1999/XSL/Transform"` です。

構文
--


```xml
<xsl:stylesheet
 version="NUMBER"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 id="NAME"
 extension-element-prefixes="LIST-OF-NAMES"
 exclude-result-prefixes="LIST-OF-NAMES">
    ENTIRE STYLESHEET
</xsl:stylesheet>
```

### 必須属性

`version`

このスタイルシートに必要な XSLT のバージョンを指定します。

### 任意属性

`exclude-result-prefixes`

この文書で使用されている名前空間のうち、出力文書に送信すべきではないものを指定します。リストは空白区切りです。

`extension-element-prefixes`

この文書における拡張要素の名前空間接頭辞をすべて、空白区切りのリストで指定します。

`default-collation`

この要素を祖先とする属性またはテキスト値のテンプレートに現れるすべての XPath 式で、内部の要素の別な `default-collation` 属性で上書きされた場合を除き、使用される既定の照合を指定します。これは特定の XSLT の構築 (`<xsl:key>` および `xsl:for-each-group` などの) も指定します。

`default-mode`

`mode` 属性の既定値を、スコープ内におけるすべての `<xsl:template>` および `<xsl:apply-templates>` 要素について定義します。

`default-validation`

スコープ内に現れるすべての関連する指示について `validation` 属性の既定値を定義します。

`expand-text`

要素の配下のテキストノードをテキスト値のテンプレートとして扱うかどうかを指定します。

`id`

このスタイルシートの ID を指定します。これはスタイルシートが別の XML 文書に埋め込まれている場合に最もよく使用されます。

`input-type-annotations`

元の文書がスキーマに対して検証されているかどうかに関係なく、同じ結果が生成されるように、要素から型表記を削除するかどうかを指定します。

`use-when`

要素とそれを祖先として持つすべてのノードをスタイルシートから除外するかどうかを決定します。

`xpath-default-namespace`

XPath 式内で接頭辞のない要素名や型名に使用される名前空間を指定します。

### 種別

スタイルシートのもっとも外側の要素である必要があります。

仕様書
---

| Specification |
| --- |
| XSLT 3.0 # stylesheet-element |

ブラウザーの互換性
---------

{{Compat}}
<xsl:variable>
==============

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

`<xsl:variable>` 要素はスタイルシートにグローバル変数またはローカル変数を宣言し、値を与えます。XSLT は副作用を許さないため、変数の値が設定されると、変数がスコープから外れるまでは変わりません

### 構文
```

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

### 必須属性

`name`

変数に名前を付けます。

### 任意属性

`select`

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

### タイプ

トップレベルまたは指示。トップレベル要素として発生するとその変数は範囲がグローバルであり、ドキュメント全体からアクセスできます。テンプレート内で発生する場合、変数はスコープ内でローカルであり、変数が現れるテンプレート内でのみアクセスできます。

### 定義

XSLT, section 11.

### Gecko のサポート

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

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

`<xsl:output>` 要素は出力文書の特性を制御します。Netscape で正しく機能するには、method 属性を持つこの要素を使用する必要があります。 7.0 より `method="text"` は期待通りに機能します。

### 構文
```

<xsl:output
  method="xml" | "html" | "text"
  version=STRING
  encoding=STRING
  omit-xml-declaration="yes" | "no"
  standalone="yes" | "no"
  doctype-public=STRING
  doctype-system=STRING
  cdata-section-elements=LIST-OF-NAMES
  indent="yes" | "no"
  media-type=STRING  />
```

### 必須属性

なし

### 任意属性

`method`

出力形式を指定します。


`version`

出力文書内の XML 宣言または HTML 宣言の version 属性の値を指定します。この属性は `method="html"` または `method="xml"` の場合にのみ使用されます。


`encoding`

出力文書の `encoding` 属性の値を指定します。


`omit-xml-declaration`

XML 宣言を出力に含めるかどうかを示します。許容可能な値は "`yes`" または "`no`" です。


`standalone` (サポートされていません)

存在する場合、出力文書でスタンドアロン宣言が発生しその値が返されることを示します。許容可能な値は "yes" または "no" です。


`doctype-public`

出力文書の `DOCTYPE` 宣言の `PUBLIC` 属性の値を指定します。


`doctype-system`

出力文書の `DOCTYPE` 宣言の `SYSTEM` 属性の値を指定します。


`cdata-section-elements`

テキストの内容を `CDATA` セクションとして記述する要素をリストします。要素は空白で区切る必要があります。


`indent` (サポートされていません)

階層構造を示すために出力を字下げするかどうかを指定します。


`media-type` (サポートされていません)

出力ドキュメントの MIME タイプを指定します。

### タイプ

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

### 定義

XSLT, section 16.

### Gecko のサポート

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