【PHP8.x】nodeValueプロパティの使い方
nodeValueプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
nodeValueプロパティは、DOMNotationクラスに属し、ノードのテキスト値を保持するプロパティです。
DOMNotationクラスは、XMLドキュメントのDTD(Document Type Definition、文書型定義)内で宣言される「記法」を表します。記法とは、例えばXMLドキュメント内で参照される外部のデータ(画像ファイルや動画ファイルなど)の種類やフォーマットを識別するために用いられるものです。具体的には、外部の非XMLデータがどのような形式であるかを名前で示す役割を持っています。
一般的に、DOM(Document Object Model)を構成するさまざまなノードタイプの多くでは、このnodeValueプロパティを使って、そのノードが直接持つテキストコンテンツや値を読み書きします。例えば、XML要素内のテキストデータや、属性の値などは、このnodeValueプロパティでアクセスされることがほとんどです。
しかし、DOMNotationノードの場合、その性質上、テキストコンテンツを直接保持しません。DOMNotationノード自体は、外部データの形式を定義する「名前」と、その名前に関連付けられた「識別子」(publicIdやsystemId)という情報を持っています。そのため、DOMNotationオブジェクトのnodeValueプロパティを参照すると、常にNULLを返します。これはエラーではなく、DOMNotationノードの特性に基づいた正常な動作です。DOMNotationノードが持つ名前や識別子の情報は、nodeNameプロパティやpublicId、systemIdといった別のプロパティを通じて取得することになります。
XMLドキュメントをプログラムで扱う際には、それぞれのノードタイプがどのような情報をどのプロパティで保持するのかを理解することが、正確な処理を行う上で非常に重要です。
構文(syntax)
1<?php 2// DTD に表記 (NOTATION) を含む XML を読み込む準備をします 3$dom = new DOMDocument(); 4$dom->loadXML('<!DOCTYPE example [<!NOTATION gif SYSTEM "image/gif">]><root/>'); 5 6// DOMDocumentType (DTD) から DOMNotation インスタンスを取得します 7// DOMNotation ノードは通常 DOMDocumentType::notations からアクセスされます 8$notation = $dom->doctype->notations->item(0); 9 10// DOMNotation::nodeValue プロパティにアクセスして値を取得します 11// DOMNotation の nodeValue は常に NULL です 12$nodeValue = $notation->nodeValue; 13?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
null
DOMNotation クラスの nodeValue プロパティは、ノードのテキスト内容を表します。このプロパティに値を設定することはできません。