【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 を返します。

関連コンテンツ

関連プログラミング言語