File: DomNode-append-child.xml

package info (click to toggle)
php-doc 20061001-1
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 45,764 kB
  • ctags: 1,611
  • sloc: xml: 502,485; php: 7,645; cpp: 500; makefile: 297; perl: 161; sh: 141; awk: 28
file content (226 lines) | stat: -rw-r--r-- 6,351 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.14 $ -->
<refentry id='function.domnode-append-child'>
 <refnamediv>
  <refname>DomNode->append_child</refname>
  <refpurpose>
   Adds a new child at the end of the children
  </refpurpose>
 </refnamediv>
 <refsect1 role="description">
  &reftitle.description;
  <classsynopsis>
   <ooclass><classname>DOMNode</classname></ooclass>
   <methodsynopsis>
    <type>DOMNode</type><methodname>append_child</methodname>
    <methodparam><type>DOMNode</type><parameter>newnode</parameter></methodparam>
   </methodsynopsis>
  </classsynopsis>
  <para>
   This functions appends a child to an existing list of children or creates
   a new list of children.
  </para>
 </refsect1>
 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>newnode</parameter></term>
     <listitem>
      <para>
       The node being appended. It can be created with e.g.
       <xref linkend="function.domdocument-create-element" />,
       <xref linkend="function.domdocument-create-text-node" /> etc. or 
       simply by using any other node.
      </para>
      <note>
       <para>
        You can not append a <classname>DOMAttribute</classname> using this
        method. Use <xref linkend="function.domelement-set-attribute" /> 
        instead.
       </para>
      </note>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>
 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   Returns the appended node on success or &false; on failure.
  </para>
 </refsect1>
 <refsect1 role="changelog">
  &reftitle.changelog;
  <para>
   <informaltable>
    <tgroup cols="2">
     <thead>
      <row>
       <entry>&Version;</entry>
       <entry>&Description;</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>4.3.0</entry>
       <entry>
        You are not allowed anymore to insert a node from another document.
       </entry>
      </row>
      <row>
       <entry>4.3.0</entry>
       <entry>
        Prior to PHP 4.3.0, the new child is duplicated before being 
        appended.
        Therefore the new child is a completely new copy which can be 
        modified without changing the node which was passed to this function.
        If the node passed has children itself, they will be duplicated as 
        well, which makes it quite easy to duplicate large parts of an XML 
        document. The return value is the appended child. If you plan to do
        further modifications on the appended child you must use the returned 
        node.
       </entry>
      </row>
      <row>
       <entry>4.3.0 and 4.3.1</entry>
       <entry>
        The new child <parameter>newnode</parameter> is first unlinked from 
        its existing context, if it's already a child of DomNode. Therefore
        the <parameter>newnode</parameter> is moved and not copies anymore.
        This is the behaviour according to the W3C specifications. If you 
        need the old behaviour, use <xref 
        linkend="function.domnode-clone-node" /> before appending.
       </entry>
      </row>
      <row>
       <entry>4.3.2</entry>
       <entry>
        The new child <parameter>newnode</parameter> is first unlinked from 
        its existing context, if it's already in the tree. Same rules apply.
       </entry>
      </row>
     </tbody>
    </tgroup>
   </informaltable>
  </para>
 </refsect1> 
 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   The following example adds a new element node to a fresh document and sets
   the attribute <literal>align</literal> to <literal>left</literal>.
  </para>
  <para>
   <example>
    <title>Adding a child</title>
    <programlisting role="php">
<![CDATA[
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>
]]>
    </programlisting>
   </example>
  </para>
  <para>
   The above example could also be written as the following:
  </para>
  <para>
   <example>
    <title>Adding a child</title>
    <programlisting role="php">
<![CDATA[
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node->set_attribute("align", "left");
$newnode = $doc->append_child($node);
?>
]]>
    </programlisting>
   </example>
  </para>
  <para>
   A more complex example is the one below. It first searches for a certain
   element, duplicates it including its children and adds it as a sibling.
   Finally a new attribute is added to one of the children of the new sibling
   and the whole document is dumped.
  </para>
  <para>
   <example>
    <title>Adding a child</title>
    <programlisting role="php">
<![CDATA[
<?php
include("example.inc");

if (!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];

$parent = $element->parent_node();
$newnode = $parent->append_child($element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");

$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
?>
]]>
    </programlisting>
   </example>
  </para>
  <para>
   The above example could also be done with
   <xref linkend="function.domnode-insert-before" /> instead of
   <xref linkend="function.domnode-append-child" />.
  </para>
 </refsect1>
 <refsect1 role="migration">
  <title>Migrating to PHP 5</title>
  <para>
   You should use <xref linkend='function.dom-domnode-appendchild' />.
  </para>
 </refsect1>
 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><xref linkend="function.domnode-insert-before" /></member>
    <member><xref linkend="function.domnode-clone-node" /></member>
   </simplelist>
  </para>
 </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->