【PHP8.x】C14Nメソッドの使い方
C14Nメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
C14Nメソッドは、XMLコメントノードの内容をCanonical XML(正規化XML)の規則に従って文字列として出力するメソッドです。Canonical XMLは、XML文書の異なる物理的表現が、論理的に同じものである場合に、それらを同一の形式に標準化するための仕様です。これにより、XML文書の比較やデジタル署名といった用途において、一貫性のある表現を保証することが可能になります。
Dom\Commentクラスのインスタンスに対してこのC14Nメソッドを呼び出すと、対象となるコメントノードとその内容が、Canonical XMLの規則に則って文字列形式に変換されます。コメントノードには属性や子要素といった複雑な構造がないため、正規化処理の結果は基本的にコメントの内容がそのままXMLコメント構文として表現された文字列となります。例えば、<!-- これはコメントです -->というコメントノードにこのメソッドを適用すると、<!-- これはコメントです -->という文字列が返されます。
このメソッドは、XMLドキュメント全体または特定の部分を正規化する際に、コメントノードを正しく含めて処理する必要がある場合に特に役立ちます。XML署名においてコメントノードが署名の対象に含まれる場合や、XML文書の内容が完全に一致することを検証する際に、コメントノードも正規化された形式で取得し、その一貫性を確保するために利用されます。戻り値は、正規化されたコメントのXML文字列です。
構文(syntax)
1<?php 2use Dom\Document; 3use Dom\Comment; 4 5$document = new Document(); 6$commentNode = new Comment('This is an example comment.', $document); 7$document->appendChild($commentNode); 8 9$canonicalizedString = $commentNode->C14N(); 10?>
引数(parameters)
bool $exclusive = false, bool $with_comments = false, ?array $xpath = null, ?array $ns_prefixes = null
PHP:
- bool $exclusive = false: trueの場合、コメントノード自身は正規化の対象外となります。
- bool $with_comments = false: trueの場合、コメントノードも正規化の対象に含めます。
- ?array $xpath = null: 正規化の対象とするXPathクエリの配列を指定します。
- ?array $ns_prefixes = null: XPathクエリで使用する名前空間プレフィックスの配列を指定します。
戻り値(return)
string|false
このメソッドは、XMLコメントノードを正規化された文字列として返します。正規化に失敗した場合は false を返します。