【PHP8.x】prefixプロパティの使い方
prefixプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
prefixプロパティは、所属するDOMEntityオブジェクトが表すXMLエンティティ宣言の名前空間プレフィックスを保持するプロパティです。
XMLの名前空間とは、XMLドキュメント内で要素名や属性名が重複するのを避けるために使用される仕組みです。例えば、<ns:element>という記述があった場合、nsの部分が名前空間プレフィックスにあたり、elementという要素がどの名前空間に属するかを示します。
DOMEntityクラスは、XMLドキュメント型定義(DTD)やスキーマで定義されるエンティティ宣言、例えば <!ENTITY copyright "© My Company"> のようなものを表すオブジェクトです。このエンティティ宣言の「名前」(上記の例では copyright)自体に名前空間プレフィックスが付与されることは、XMLの標準的な利用方法においては非常に稀です。
そのため、通常、DOMEntityオブジェクトのprefixプロパティはnullまたは空の文字列を返します。これは、そのエンティティ名が特定され、名前空間の識別子が不要であることを意味します。
このプロパティは、DOMEntityが継承しているDOMNodeクラスが持つ一般的なプロパティの一つです。他の種類のノード、例えば名前空間プレフィックスを持つXML要素や属性ノードの場合には、このprefixプロパティにそのプレフィックスが格納されますが、DOMEntityの場合はその性質上、基本的に値を持たないという点を理解しておくことが重要です。
このプロパティを通じて、ノードが持つ名前空間プレフィックスの有無やその値を確認できますが、DOMEntityの場合、その利用ケースは限定的であると言えます。
構文(syntax)
1<?php 2 3$dom = new DOMDocument(); 4$dom->loadXML('<!DOCTYPE doc [<!ENTITY myentity SYSTEM "http://example.com/some.dtd">]> <root/>'); 5 6// DOMDocumentTypeからエンティティのコレクションを取得 7$entities = $dom->doctype->entities; 8 9// 最初のDOMEntityオブジェクトを取得 10$entity = $entities->item(0); 11 12// DOMEntityオブジェクトのprefixプロパティにアクセスする構文 13$prefixValue = $entity->prefix;
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
DOMEntityオブジェクトの接頭辞を表す文字列を返します。