【PHP8.x】attributesプロパティの使い方
attributesプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
attributesプロパティは、DOMNotationクラスのインスタンスが持つ属性を保持するプロパティです。DOMNotationクラスは、XMLドキュメントのDTD(Document Type Definition)内で定義される『記法』(NOTATION)を表します。記法とは、例えばXMLドキュメント内で外部の画像ファイル形式(JPEG、PNGなど)を指定する際に、その形式を識別するために使用される宣言のようなものです。
一般的に、XMLの要素は名前と値のペアである属性を持つことがありますが、DOMNotationオブジェクトが表すNOTATIONノード自体は、通常、属性を持ちません。そのため、このattributesプロパティにアクセスしても、ほとんどの場合、属性が存在しないことを示すNULL値、または空のDOMNamedNodeMapオブジェクトが返されます。
このプロパティは、DOMNodeクラスから継承されたもので、本来であればノードの属性コレクションを返すべきものですが、DOMNotationの性質上、特別な振る舞いをします。システムエンジニアを目指す方々にとって、XMLドキュメントのDTDを解析し、その詳細を深く理解する必要がある場合に、このプロパティが関わることもありますが、通常のXML処理において直接利用する機会は稀である点を理解しておくことが重要です。
構文(syntax)
1<?php 2 3$xmlString = <<<XML 4<?xml version="1.0" encoding="utf-8" ?> 5<!DOCTYPE doc [ 6 <!NOTATION my_notation SYSTEM "some_system_id"> 7]> 8<doc></doc> 9XML; 10 11$dom = new DOMDocument(); 12$dom->loadXML($xmlString); 13 14$notation = $dom->doctype->notations->getNamedItem('my_notation'); 15 16$attributes = $notation->attributes; 17 18?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
?DOMNamedNodeMap
DOMNotationクラスのattributesプロパティは、ノードが持つ属性のコレクションであるDOMNamedNodeMap、または属性が存在しない場合はnullを返します。