PHP5.0.0のDOM Functionに関する諸情報
ページ情報
制作日
2004-07-21
最終更新日
2004-07-21
参照用URI
http://www.arielworks.net/articles/2004/0721a [^]
分野
PHP
XSLT
ページ内目次
エンコーディングの設定
出力時の整形(インデント)
空白ノードの除去
child_nodes()系
XSL文章の基底URI
消えたメソッド
ソースコードを読む
PHP4系列からDOMの仕様が大分変わったため、移行が若干面倒だ。消滅してしまったメソッドもある。
ページ情報
制作日
2004-07-21
最終更新日
2004-07-21
参照用URI
http://www.arielworks.net/articles/2004/0721a [^]
分野
PHP
XSLT
ページ内目次
エンコーディングの設定
出力時の整形(インデント)
空白ノードの除去
child_nodes()系
XSL文章の基底URI
消えたメソッド
ソースコードを読む
PHP4系列からDOMの仕様が大分変わったため、移行が若干面倒だ。消滅してしまったメソッドもある。
エンコーディングの設定
ツリーを文字列に変換する際、PHP4は
ツリーを文字列に変換する際、PHP4は
$DOMObject->dump_mem(TRUE, "UTF-8")
のようにエンコーディングを指定できた。エンコーディングを指定しないと環境によっては文字が実態参照に変換される場合があるのはPHP5.0.0でも同様だが、
のようにエンコーディングを指定できた。エンコーディングを指定しないと環境によっては文字が実態参照に変換される場合があるのはPHP5.0.0でも同様だが、
$DOMObject->saveXML()
は引数にエンコーディングを持つことが出来ない。PHP5.0.0では変数でエンコーディングを指定することになる。
は引数にエンコーディングを持つことが出来ない。PHP5.0.0では変数でエンコーディングを指定することになる。
$DOMObject->encoding = string encoding;
この変更はDOM3の草案によるようだが、なんと勧告ではさらに変更になっている。将来的にはPHP側でも変更になるだろう。
この変更はDOM3の草案によるようだが、なんと勧告ではさらに変更になっている。将来的にはPHP側でも変更になるだろう。
出力時の整形(インデント)
これもPHP4では引数として値を渡していたが、PHP5では変数となった。
これもPHP4では引数として値を渡していたが、PHP5では変数となった。
$DOMObject->formatOutput = TRUE;
で設定できる。なお、xml:spaceの値は無視されるようだ。
で設定できる。なお、xml:spaceの値は無視されるようだ。
空白ノードの除去
PHP4では
PHP4では
domxml_open_file(str filename, DOMXML_LOAD_DONT_KEEP_BLANKS)
でツリー制作時に空白ノードを除去できた。PHP5ではこれもやはり変数で設定することになる。
でツリー制作時に空白ノードを除去できた。PHP5ではこれもやはり変数で設定することになる。
$DOMObject->preserveWhiteSpace = FALSE;
FALSEにすることで空白ノードが除去される。xml:spaceがpreserveになっている範囲の空白ノードは保持される。
FALSEにすることで空白ノードが除去される。xml:spaceがpreserveになっている範囲の空白ノードは保持される。
child_nodes()系
first_child()やlast_childなどはメソッドではなくなったので()を付けるとエラーになる。
first_child()やlast_childなどはメソッドではなくなったので()を付けるとエラーになる。
$node_list = $DOMNode->firstChild
で$node_listにノードリストが格納される。
で$node_listにノードリストが格納される。
XSL文章の基底URI
XSL Functionで使うXSL文章はDOMオブジェクトとして渡す必要がある。XSLT文章を
XSL Functionで使うXSL文章はDOMオブジェクトとして渡す必要がある。XSLT文章を
$DOMObject->loadXML(string source)
で文字列からロードする場合、引数ではdocument()などで使われる基底URIが設定できない。PHP5.0.0では変数として設定することになる。
で文字列からロードする場合、引数ではdocument()などで使われる基底URIが設定できない。PHP5.0.0では変数として設定することになる。
$DOMObject->documentURI = "/foo/bar.xsl";
消えたメソッド
一部のメソッドは消滅した。例えばPHP4のset_name()はPHP5.0.0には存在しない上代替メソッドもない。
消えたメソッド
一部のメソッドは消滅した。例えばPHP4のset_name()はPHP5.0.0には存在しない上代替メソッドもない。
renameNode()というメソッドがDOM Level3には存在するが、PHP5.0.0はDOM Level2までしかサポートしていないため、まだ実装されていない。
ソースコードを読む
「あの機能は何処へ行った」と思ったらソースコードをgrepしてみると見つかることが多い。マニュアルに記載されていない情報がかなり得られるので是非ともお奨めしたい。DOM Level3の内容も一部実装されている。
「あの機能は何処へ行った」と思ったらソースコードをgrepしてみると見つかることが多い。マニュアルに記載されていない情報がかなり得られるので是非ともお奨めしたい。DOM Level3の内容も一部実装されている。
また、PHP5からはかなりDOMの仕様に忠実になったためDOMの仕様書から必要なメソッドを探すことも出来る。