【PHP8.x】C14Nメソッドの使い方
C14Nメソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『C14Nメソッドは、DocumentTypeノードをW3C勧告の仕様に基づいて正規化(Canonicalize)し、その結果を文字列として取得するために実行するメソッドです。正規化とは、XML文書の論理的な意味を変えることなく、属性の順序や空白の扱いなどを定められたルールに従って統一的な形式に変換する処理を指します。この処理により、例えば電子署名などで文書の同一性を検証する際に、異なる環境で生成されたXML文書でもバイト単位で厳密に比較することが可能になります。このメソッドは、XML文書全体ではなく、<!DOCTYPE ...>で表される文書型定義(DTD)の部分のみを対象とします。引数を通じて、正規化のモードを細かく制御することが可能です。例えば、第一引数の exclusive で排他的正規化を行うか、第二引数の withComments でコメントノードを結果に含めるかを真偽値で指定できます。処理が成功すると正規化されたDTDの文字列が返され、失敗した場合は false が返ります。』
構文(syntax)
1<?php 2 3$dom = new DOMDocument(); 4$dom->loadHTML('<!DOCTYPE html><html><body><p>Hello</p></body></html>'); 5 6$doctype = $dom->doctype; 7 8if ($doctype instanceof \Dom\DocumentType) { 9 // DocumentTypeノードを正規化された文字列形式に変換します 10 $canonicalString = $doctype->C14N(); 11 12 echo $canonicalString; 13} 14 15?>
引数(parameters)
bool $exclusive = false, bool $withComments = false, ?array $xpath = null, ?array $nsPrefixes = null
- bool $exclusive = false: 排他セレクタを使用して正規化するかどうかを決定するブール値。
trueに設定すると、指定されたXPath式に一致する要素のみが正規化されます。 - bool $withComments = false: コメントを含めて正規化するかどうかを決定するブール値。
- ?array $xpath = null: 正規化の対象となる要素を指定するXPath式の配列。
nullの場合は、ドキュメント全体が対象となります。 - ?array $nsPrefixes = null: 正規化の際に含める名前空間プレフィックスの配列。
nullの場合は、使用されているすべての名前空間が考慮されます。
戻り値(return)
string|false
C14Nメソッドは、XML文書の正規化された文字列表現を返します。正規化に失敗した場合はfalseを返します。