次の方法で共有


DOM へのエンティティ宣言とエンティティ参照の読み取り

エンティティは、コンテンツまたはマークアップの代わりに XML で使用される名前を示す宣言です。 エンティティには 2 つの部分があります。 最初に、エンティティ宣言を使用して、置換コンテンツに名前を関連付ける必要があります。 エンティティ宣言は、ドキュメント型定義 (DTD) または XML スキーマの <!ENTITY name "value"> 構文を使用して作成されます。 次に、エンティティ宣言で定義されている名前が XML で使用されます。 XML で使用する場合は、エンティティ参照と呼ばれます。 たとえば、次のエンティティ宣言は、"Microsoft Press" のコンテンツに関連付けられている publisher 名前のエンティティを宣言します。

<!ENTITY publisher "Microsoft Press">  

次の例は、エンティティ参照として XML でこのエンティティ宣言を使用する方法を示しています。

<author>Fred</author>  
<pubinfo>Published by &publisher;</pubinfo>  

一部のパーサーでは、ドキュメントがメモリに読み込まれると、エンティティが自動的に展開されます。 したがって、XML がメモリに読み込まれると、エンティティ宣言が記憶され、保存されます。 パーサーは、その後、一般的なエンティティ参照を識別する &; 文字を検出すると、その名前をエンティティ宣言テーブルで検索します。 参照 &publisher; は、それが表すコンテンツに置き換えられます。 次の XML を使用して、

<author>Fred</author>  
<pubinfo>Published by &publisher;</pubinfo>  

エンティティ参照を展開し、 &publisher; を Microsoft Press コンテンツに置き換えると、次の拡張 XML が提供されます。

アウトプット

<author>Fred</author>  
<pubinfo>Published by Microsoft Press</pubinfo>  

エンティティにはさまざまな種類があります。 次の図は、エンティティの種類と用語の内訳を示しています。

エンティティ型階層のフロー チャート

XML ドキュメント オブジェクト モデル (DOM) の Microsoft .NET Framework 実装の既定値は、エンティティ参照を保持し、XML の読み込み時にエンティティを展開しないことです。 これは、ドキュメントが DOM に読み込まれると、参照変数を含む &publisher; ノードが作成され、子ノードは DTD で宣言されたエンティティ内のコンテンツを表します。

次の図は、 <!ENTITY publisher "Microsoft Press"> エンティティ宣言を使用して、この宣言から作成された XmlEntity ノードと XmlText ノードを示しています。

エンティティ宣言xml_entitydeclaration_node2から作成されたノード

エンティティ参照が展開されたときと展開されない場合の違いは、メモリ内の DOM ツリーで生成されるノードに違いを生み出します。 生成されるノードの違いについては、「エンティティ参照は保持され、エンティティ参照は展開され、保持されない」のトピックで説明されています。

こちらも参照ください