DOM 標準に沿っておらず、もう使うべきではない関数がごく少数あります。 これらの関数を以下の表に示します。 関数 DomNode_append_child() はその動作が変更されました。 この関数は、子を追加しますが、兄弟は追加しません。 これにより、アプリケーションの動作に影響が生じる場合、DOM ではない関数 DomNode_append_sibling() を使用してください。
| 古い関数 | 新しい関数 | 
|---|---|
| xmldoc | domxml_open_mem() | 
| xmldocfile | domxml_open_file() | 
| domxml_new_xmldoc | domxml_new_doc() | 
| domxml_dump_mem | DomDocument_dump_mem() | 
| domxml_dump_mem_file | DomDocument_dump_file() | 
| DomDocument_dump_mem_file | DomDocument_dump_file() | 
| DomDocument_add_root | DomDocument_create_element() followed by DomNode_append_child() | 
| DomDocument_dtd | DomDocument_doctype() | 
| DomDocument_root | DomDocument_document_element() | 
| DomDocument_children | DomNode_child_nodes() | 
| DomDocument_imported_node | 代替関数なし。 | 
| DomNode_add_child | 例えば DomDocument_create_element() により、 新しいノードを作成し、 DomNode_append_child() により追加します。 | 
| DomNode_children | DomNode_child_nodes() | 
| DomNode_parent | DomNode_parent_node() | 
| DomNode_new_child | 例えば DomDocument_create_element() で 新規ノードを作成し、 DomNode_append_child() で追加します。 | 
| DomNode_set_content | 例えば DomDocument_create_element() で 新規ノードを作成し、 DomNode_append_child() で追加します。 | 
| DomNode_get_content | コンテンツは単なるテキストノードであり、 DomNode_child_nodes() でアクセス可能です。 | 
| DomNode_set_content | コンテンツは単なるテキストノードであり、 DomNode_append_child() で追加できます。 | 
モジュールの API は、DOM レベル 2 標準に可能な限り基づいています。 結果的に API は完全にオブジェクト指向です。このモジュールを使用する際に DOM 標準が利用できることは望ましいことです。 この API はオブジェクト指向ですが、 最初の引数として処理するオブジェクトを渡すことによってコールできる、 オブジェクト指向でない関数も多くあります。 これらの関数は、主に過去のバージョンとの互換性確保のために維持されていますが、 新規開発での使用はもはや推奨されません。
この API は、公式な DOM API とは二つの点で異なっています。まず、 全てのクラスの属性は、同じ名前を有する関数として実装され、関数名は PHP の命名表記に基づいています。これは、DOM 関数 lastChild() が last_child() と書かれることを意味します。
このモジュールは、一連のクラスを定義します。メソッドも含めたリストを 以下の表に示します。クラスは、DOM 標準で DOMxxx という名前のものと等価です。
| クラス名 | 親クラス | 
|---|---|
| DomAttribute | DomNode | 
| DomCData | DomNode | 
| DomComment | DomCData : DomNode | 
| DomDocument | DomNode | 
| DomDocumentType | DomNode | 
| DomElement | DomNode | 
| DomEntity | DomNode | 
| DomEntityReference | DomNode | 
| DomProcessingInstruction | DomNode | 
| DomText | DomCData : DomNode | 
| Parser | 現在はまだ DomParser と呼ばれています | 
| XPathContext | 
| メソッド名 | 関数名 | 注意 | 
|---|---|---|
| doctype | DomDocument_doctype() | |
| document_element | DomDocument_document_element() | |
| create_element | DomDocument_create_element() | |
| create_text_node | DomDocument_create_text_node() | |
| create_comment | DomDocument_create_comment() | |
| create_cdata_section | DomDocument_create_cdata_section() | |
| create_processing_instruction | DomDocument_create_processing_instruction() | |
| create_attribute | DomDocument_create_attribute() | |
| create_entity_reference | DomDocument_create_entity_reference() | |
| get_elements_by_tagname | DomDocument_get_elements_by_tagname() | |
| get_element_by_id | DomDocument_get_element_by_id() | |
| dump_mem | DomDocument_dump_mem() | DOM 標準ではありません | 
| dump_file | DomDocument_dump_file() | DOM 標準ではありません | 
| html_dump_mem | DomDocument_html_dump_mem() | DOM 標準ではありません | 
| xpath_init | xpath_init | DOM 標準ではありません | 
| xpath_new_context | xpath_new_context | DOM 標準ではありません | 
| xptr_new_context | xptr_new_context | DOM 標準ではありません | 
| メソッド名 | 関数名 | 注意 | 
|---|---|---|
| tagname | DomElement_tagname() | |
| get_attribute | DomElement_get_attribute() | |
| set_attribute | DomElement_set_attribute() | |
| remove_attribute | DomElement_remove_attribute() | |
| get_attribute_node | DomElement_get_attribute_node() | |
| set_attribute_node | DomElement_set_attribute_node() | |
| get_elements_by_tagname | DomElement_get_elements_by_tagname() | |
| has_attribute | DomElement_has_attribute() | 
| メソッド名 | 注意 | 
|---|---|
| DomNode_node_name() | |
| DomNode_node_value() | |
| DomNode_node_type() | |
| DomNode_last_child() | |
| DomNode_first_child() | |
| DomNode_child_nodes() | |
| DomNode_previous_sibling() | |
| DomNode_next_sibling() | |
| DomNode_parent_node() | |
| DomNode_owner_document() | |
| DomNode_insert_before() | |
| DomNode_append_child() | |
| DomNode_append_sibling() | DOM 標準ではありません。この関数は 先ほどの DomNode_append_child() の動作をエミュレートします。 | 
| DomNode_remove_child() | |
| DomNode_has_child_nodes() | |
| DomNode_has_attributes() | |
| DomNode_clone_node() | |
| DomNode_attributes() | |
| DomNode_unlink_node() | DOM 標準ではありません | 
| DomNode_replace_node() | DOM 標準ではありません | 
| DomNode_set_content() | DOM 標準にはなく、古いメソッドです | 
| DomNode_get_content() | DOM 標準にはなく、古いメソッドです | 
| DomNode_dump_node() | DOM 標準ではありません | 
| DomNode_is_blank_node() | DOM 標準ではありません | 
| メソッド名 | 注意 | |
|---|---|---|
| name | DomAttribute_name() | |
| value | DomAttribute_value() | |
| specified | DomAttribute_specified() | 
| メソッド名 | 関数名 | 注意 | 
|---|---|---|
| target | DomProcessingInstruction_target() | |
| data | DomProcessingInstruction_data() | 
| メソッド名 | 関数名 | 注記 | 
|---|---|---|
| add_chunk | Parser_add_chunk() | |
| end | Parser_end() | 
| メソッド名 | 関数名 | 注記 | 
|---|---|---|
| eval | XPathContext_eval() | |
| eval_expression | XPathContext_eval_expression() | |
| register_ns | XPathContext_register_ns() | 
| メソッド名 | 関数名 | 注記 | 
|---|---|---|
| name | DomDocumentType_name() | |
| entities | DomDocumentType_entities() | |
| notations | DomDocumentType_notations() | |
| public_id | DomDocumentType_public_id() | |
| system_id | DomDocumentType_system_id() | |
| internal_subset | DomDocumentType_internal_subset() | 
クラス DomDtd は DomNode から派生したものです。DomComment は DomCData から派生したものです。
このリファレンスにおける多くの例は、XML 文字列を必要とします。 この文字列を全ての例で繰りかえし記述するかわりに、ファイルに書き込んで 各例で読み込むことにします。この読み込まれるファイルは、 以下の例に示されています。XML ドキュメントを作成し、 DomDocument_open_file() で読み込むことも可能です。
例1 XML 文字列を有するファイル example.inc を読み込む
<?php
$xmlstr = "<?xml version='1.0' standalone='yes'?>
<!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'
[ <!ENTITY sp \"spanish\">
]>
<!-- lsfj  -->
<chapter language='en'><title language='en'>Title</title>
 <para language='ge'>
  &sp;
  <!-- comment -->
  <informaltable ID='findme' language='&sp;'>
   <tgroup cols='3'>
    <tbody>
     <row><entry>a1</entry><entry
morerows='1'>b1</entry><entry>c1</entry></row>
<row><entry>a2</entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
</chapter>";
?>