サーチ…
備考
ストレージの観点からは、XMLドキュメントはエンティティで構成されています。エンティティの1つが文書エンティティであり、それは主要なXML文書そのものです。
エンティティは次のように分類できます(使用の降順で仮分類)。
- ドキュメントエンティティ :これはメインのXMLファイルです。
- 内部一般エンティティ :これはドキュメントエンティティのほかに最も一般的なエンティティであり、ほとんどのXMLユーザーが認識しているものです。多くの場合、 エンティティという言葉は自然に使用されます。それらは、文書内容のより長い置換テキストのためのいくつかのショートカットを指定することを可能にする。それらはDTDで宣言されています。
- 外部DTDサブセット : DTDの一部が外部委託されている別のファイル。
- パラメータエンティティ :DTDで使用するショートカット。
- 外部で解析された一般的なエンティティ :他のファイルに格納されているXMLフラグメントです。
- パースされていないエンティティ :画像、音などXMLに制限がないファイル
多くの場合、XMLドキュメントはドキュメントエンティティのみで構成されます。
あらかじめ定義された一般エンティティ
XMLでは、宣言せずに使用できる5つの一般的なエンティティが事前に定義されています。
& " ' < >
それらはamp
、 quot
、 apos
、 lt
およびgt
という名前に関連付けられています。
<?xml version="1.0"?>
<entities>
& is an ampersand.
" is a quote.
' is an apostrophe.
< is a lower-than sign.
> is a greater-than sign.
</entities>
ユーザ定義の一般的(内部)エンティティ
独自の一般的なエンティティを定義することは可能です。宣言は、DTDサブセット内で、名前と関連する置換テキストで行われます。
エンティティ参照構文&...;
を使用して文書内で使用でき&...;
テキストまたは属性値のいずれかになります。
<?xml version="1.0"?>
<!DOCTYPE my-document [
<!ENTITY my-entity "This is my entity">
]>
<my-document>
The entity was declared as follows: &my-entity;
<element attribute="Entity: &my-entity;"/>
</my-document>
外部解析対象エンティティ
外部の解析されたエンティティの名前でも知られているXMLフラグメントは、別々のファイルに格納することができます。
XML文書とは異なり、XML断片は、いくつかの要素がテキストノードと同様に最上位レベルに現れることができるため、制限が少ない。 XMLドキュメントのように、外部の解析エンティティはXML宣言で始まることがありますが、この宣言はその置換テキストの一部とはみなされません。
これは外部解析エンティティの例です:
<?xml version="1.0" encoding="UTF-8"?>
This is some text
<element/>
<element/>
次に、解析された外部エンティティをDTDのXMLドキュメントで宣言できます。エンティティ参照は、一般的な内部エンティティと同じ構文を持っています。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
&fragment;
</root>
エンティティ参照が解決されると、このドキュメントは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
This is some text
<element/>
<element/>
</root>
外部の解析対象エンティティのすべての開始タグには、対応する終了タグが必要です。単一の要素を複数のエンティティに分散することやマークアップを広げることはできません。
エンティティ参照を解決し、置換テキストを上記のように文書に含めるには、検証パーサが必要です。非検証パーサはこれをスキップして、消費するアプリケーションに外部解析されたエンティティへの未解決の参照があることを伝えます。