Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】Dom\ProcessingInstruction::C14NFile()メソッドの使い方

C14NFileメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

C14NFileメソッドは、処理命令ノードをW3Cの勧告に従って正規化(Canonicalization, C14N)し、その結果を指定されたファイルに出力するメソッドです。正規化とは、XML文書の論理的に等価な表現を、物理的に一意なバイト表現に変換するプロセスのことです。例えば、属性の記述順序や空白文字の有無が異なる二つのXML文書でも、内容が同じであれば正規化後には全く同一のデータとなります。この特性は、XMLデジタル署名などでデータの完全性を検証する際に非常に重要です。このメソッドは、呼び出し元のDom\ProcessingInstructionオブジェクトを正規化の対象とし、第一引数で指定されたファイルパスにその結果を書き込みます。また、排他的正規化の有効化、コメントノードの包含有無、特定の名前空間の扱いなど、複数のオプションパラメータによって正規化の挙動を細かく制御することが可能です。処理が成功した場合はファイルに書き込まれたバイト数を、失敗した場合はfalseを返します。

構文(syntax)

1<?php
2$document = new DOMDocument();
3
4// Dom\ProcessingInstruction オブジェクトを生成します
5$pi = $document->createProcessingInstruction(
6    'xml-stylesheet',
7    'type="text/xsl" href="style.xsl"'
8);
9
10// オブジェクトの C14NFile() メソッドを呼び出し、
11// 正規化されたノードをファイルに出力します。
12$pi->C14NFile(
13    'path/to/output.xml', // uri
14    false,                // exclusive
15    false,                // withComments
16    null,                 // xpath
17    false                 // nsPrefixes
18);

引数(parameters)

string $uri, bool $exclusive = false, bool $withComments = false, ?array $xpath = null, ?array $nsPrefixes = null

  • string $uri: 正規化するXMLファイルへのURIを指定します。
  • bool $exclusive = false: 排他ノードセットを行使するかどうかを指定します。
  • bool $withComments = false: コメントを含めて正規化するかどうかを指定します。
  • ?array $xpath = null: 正規化の対象となるノードをXPathで指定します。
  • ?array $nsPrefixes = null: 名前空間のプレフィックスをマッピングする連想配列を指定します。

戻り値(return)

int|false

C14NFileメソッドは、DOM構造をC14N形式でシリアライズする際のバイト数を返します。処理が成功した場合はそのバイト数(整数)を返し、失敗した場合はfalseを返します。

関連コンテンツ

関連プログラミング言語