Browse Source

[DOCUMENTATION] English:
- explode Zend_Ldap-API in multiple subfiles

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@16640 44c647ce-9c0f-0410-b52a-842ac1e357ba

mikaelkael 16 years ago
parent
commit
3aa9b7a500
1 changed files with 69 additions and 3070 deletions
  1. 69 3070
      documentation/manual/en/module_specs/Zend_Ldap-API.xml

+ 69 - 3070
documentation/manual/en/module_specs/Zend_Ldap-API.xml

@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Reviewed: no -->
-<sect1 id="zend.ldap.api">
+<sect1 id="zend.ldap.api" xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>API overview</title>
 
     <sect2 id="zend.ldap.api.configuration">
         <title>Configuration / options</title>
 
         <para>
-            The <code>Zend_Ldap</code> component accepts an array of options either supplied
-            to the constructor or through the <code>setOptions()</code> method. The permitted
-            options are as follows:
+            The <classname>Zend_Ldap</classname> component accepts an array of options either
+            supplied to the constructor or through the <methodname>setOptions()</methodname>
+            method. The permitted options are as follows:
         </para>
 
         <table id="zend.ldap.api.configuration.table">
@@ -26,47 +26,51 @@
                     <row>
                         <entry>host</entry>
                         <entry>
-                            The default hostname of LDAP server if not supplied to
-                            <code>connect()</code> (also may be used when trying to canonicalize
-                            usernames in <code>bind()</code>).
+                            The default hostname of <acronym>LDAP</acronym> server if not
+                            supplied to <methodname>connect()</methodname> (also may be used
+                            when trying to canonicalize usernames in
+                            <methodname>bind()</methodname>).
                         </entry>
                     </row>
                     <row>
                         <entry>port</entry>
                         <entry>
-                            Default port of LDAP server if not supplied to
-                            <code>connect()</code>.
+                            Default port of <acronym>LDAP</acronym> server if not supplied to
+                            <methodname>connect()</methodname>.
                         </entry>
                     </row>
                     <row>
                         <entry>useStartTls</entry>
                         <entry>
-                            Whether or not the LDAP client should use TLS (aka SSLv2)
-                            encrypted transport. A value of <code>true</code> is strongly favored
+                            Whether or not the <acronym>LDAP</acronym> client should use
+                            <acronym>TLS</acronym> (aka <acronym>SSLv2</acronym>) encrypted
+                            transport. A value of <constant>TRUE</constant> is strongly favored
                             in production environments to prevent passwords from be transmitted in
-                            clear text. The default value is <code>false</code>, as servers
+                            clear text. The default value is <constant>FALSE</constant>, as servers
                             frequently require that a certificate be installed separately after
-                            installation. The <code>useSsl</code> and <code>useStartTls</code>
-                            options are mutually exclusive. The <code>useStartTls</code> option
-                            should be favored over <code>useSsl</code> but not all servers support
+                            installation. The <emphasis>useSsl</emphasis> and
+                            <emphasis>useStartTls</emphasis> options are mutually exclusive.
+                            The <emphasis>useStartTls</emphasis> option should be favored
+                            over <emphasis>useSsl</emphasis> but not all servers support
                             this newer mechanism.
                         </entry>
                     </row>
                     <row>
                         <entry>useSsl</entry>
                         <entry>
-                            Whether or not the LDAP client should use SSL encrypted
-                            transport. The <code>useSsl</code> and <code>useStartTls</code> options
-                            are mutually exclusive.
+                            Whether or not the <acronym>LDAP</acronym> client should use
+                            <acronym>SSL</acronym> encrypted transport. The
+                            <emphasis>useSsl</emphasis> and <emphasis>useStartTls</emphasis>
+                            options are mutually exclusive.
                         </entry>
                     </row>
                     <row>
                         <entry>username</entry>
                         <entry>
                             The default credentials username. Some servers require that this
-                            be in DN form. This must be given in DN form if the LDAP server
-                            requires a DN to bind and binding should be possible with simple
-                            usernames.
+                            be in DN form. This must be given in DN form if the
+                            <acronym>LDAP</acronym> server requires a DN to bind and binding
+                            should be possible with simple usernames.
                         </entry>
                     </row>
                     <row>
@@ -79,9 +83,10 @@
                     <row>
                         <entry>bindRequiresDn</entry>
                         <entry>
-                            If <code>true</code>, this instructs <code>Zend_Ldap</code> to
-                            retrieve the DN for the account used to bind if the username is not
-                            already in DN form. The default value is <code>false</code>.
+                            If <constant>TRUE</constant>, this instructs
+                            <classname>Zend_Ldap</classname> to retrieve the DN for the
+                            account used to bind if the username is not
+                            already in DN form. The default value is <constant>FALSE</constant>.
                         </entry>
                     </row>
                     <row>
@@ -97,67 +102,70 @@
                         <entry>
                             A small integer indicating the form to which account names
                             should be canonicalized. See the <link
-                                linkend="zend.ldap.introduction.theory-of-operations.account-name-canonicalization"> <emphasis>Account Name Canonicalization</emphasis></link>
+                                linkend="zend.ldap.introduction.theory-of-operations.account-name-canonicalization"><emphasis>Account
+                                Name Canonicalization</emphasis></link>
                             section below.
                         </entry>
                     </row>
                     <row>
                         <entry>accountDomainName</entry>
                         <entry>
-                            The FQDN domain for which the target LDAP server is an authority
-                            (e.g., example.com).
+                            The FQDN domain for which the target <acronym>LDAP</acronym> server
+                            is an authority (e.g., example.com).
                         </entry>
                     </row>
                     <row>
                         <entry>accountDomainNameShort</entry>
                         <entry>
-                            The 'short' domain for which the target LDAP server is an
-                            authority. This is usually used to specify the NetBIOS domain name for
-                            Windows networks but may also be used by non-AD servers.
+                            The 'short' domain for which the target <acronym>LDAP</acronym> server
+                            is an authority. This is usually used to specify the NetBIOS
+                            domain name for Windows networks but may also be used by non-AD servers.
                         </entry>
                     </row>
                     <row>
                         <entry>accountFilterFormat</entry>
                         <entry>
-                            The LDAP search filter used to search for accounts. This string
-                            is a  <ulink url="http://php.net/sprintf"><code>sprintf()</code></ulink>
-                            style expression that must contain one '<code>%s</code>' to accommodate
-                            the username. The default value is
-                            '<code>(&amp;(objectClass=user)(sAMAccountName=%s))</code>' unless
-                            <code>bindRequiresDn</code> is set to <code>true</code>, in which case
-                            the default is
-                            '<code>(&amp;(objectClass=posixAccount)(uid=%s))</code>'. Users of
-                            custom schemas may need to change this option.
+                            The <acronym>LDAP</acronym> search filter used to search for accounts.
+                            This string is a <ulink
+                                url="http://php.net/sprintf"><code>sprintf()</code></ulink>
+                            style expression that must contain one '<emphasis>%s</emphasis>' to
+                            accommodate the username. The default value is
+                            '<emphasis>(&amp;(objectClass=user)(sAMAccountName=%s))</emphasis>'
+                            unless <emphasis>bindRequiresDn</emphasis> is set to
+                            <constant>TRUE</constant>, in which case the default is
+                            '<emphasis>(&amp;(objectClass=posixAccount)(uid=%s))</emphasis>'.
+                            Users of custom schemas may need to change this option.
                         </entry>
                     </row>
                     <row>
                         <entry>allowEmptyPassword</entry>
                         <entry>
-                            Some LDAP servers can be configured to accept an empty string
-                            password as an anonymous bind. This behavior is almost always
-                            undesirable. For this reason, empty passwords are explicitly
-                            disallowed. Set this value to <code>true</code> to allow an empty
-                            string password to be submitted during the bind.
+                            Some <acronym>LDAP</acronym> servers can be configured to accept an
+                            empty string password as an anonymous bind. This behavior is almost
+                            always undesirable. For this reason, empty passwords are explicitly
+                            disallowed. Set this value to <constant>TRUE</constant> to allow an
+                            empty string password to be submitted during the bind.
                         </entry>
                     </row>
                     <row>
                         <entry>optReferrals</entry>
                         <entry>
-                            If set to <code>true</code>, this option indicates to the LDAP
-                            client that referrals should be followed. The default value is
-                            <code>false</code>.
+                            If set to <constant>TRUE</constant>, this option indicates to the
+                            <acronym>LDAP</acronym> client that referrals should be followed.
+                            The default value is <constant>FALSE</constant>.
                         </entry>
                     </row>
                     <row>
                         <entry>tryUsernameSplit</entry>
                         <entry>
-                            If set to <code>false</code>, this option indicates that the
-                            given username should not be split at the first <code>@</code> or
-                            <code>\</code> character to seperate the username from the domain
-                            during the binding-procedure. This allows the user to use usernames
-                            that contain an <code>@</code> or <code>\</code> character that do not
+                            If set to <constant>FALSE</constant>, this option indicates that the
+                            given username should not be split at the first <emphasis>@</emphasis>
+                            or <emphasis>\</emphasis> character to seperate the username from
+                            the domain during the binding-procedure. This allows the user to
+                            use usernames that contain an <emphasis>@</emphasis> or
+                            <emphasis>\</emphasis> character that do not
                             inherit some domain-information, e.g. using email-addresses for
-                            binding. The default value is <code>true</code>.
+                            binding. The default value is <constant>TRUE</constant>.
                         </entry>
                     </row>
                 </tbody>
@@ -172,3022 +180,13 @@
             <para>Method names in <emphasis>italics</emphasis> are static methods.</para>
         </note>
 
-        <sect3 id="zend.ldap.api.reference.zend-ldap">
-            <title>Zend_Ldap</title>
-
-            <para>
-                <code>Zend_Ldap</code> is the base interface into a LDAP server. It provides
-                connection and binding methods as well as methods to operate on the LDAP
-                tree.
-            </para>
-
-            <table id="zend.ldap.api.reference.zend-ldap.table">
-                <title>Zend_Ldap API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string filterEscape(string $str)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Escapes a value to be used in a LDAP filter according to RFC
-                                2254. This method is <emphasis>deprecated</emphasis>, please use
-                                <code>Zend_Ldap_Filter_Abstract::escapeValue()</code>
-                                instead.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>boolean explodeDn($dn, array &amp;$keys =
-                                null, array &amp;$vals = null)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Checks if a given DN <code>$dn</code> is malformed. If
-                                <code>$keys</code> or <code>$keys</code> and <code>$vals</code> are
-                                given, these arrays will be filled with the appropriate DN keys and
-                                values. This method is <emphasis>deprecated</emphasis>, please use
-                                <code>Zend_Ldap_Dn::checkDn()</code> instead.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>__construct($options)</code></entry>
-                            <entry>
-                                Constructor. The <code>$options</code> parameter is optional
-                                and can be set to an array or a <code>Zend_Config</code> instance.
-                                If no options are provided at instantiation, the connection
-                                parameters must be passed to the instance using
-                                <code>Zend_Ldap::setOptions()</code>. The allowed options are
-                                specified in <link
-                                    linkend="zend.ldap.using.theory-of-operation.options.table">Zend_Ldap
-                                    Options</link>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>resource getResource()</code></entry>
-                            <entry>Returns the raw LDAP extension (ext/ldap) resource.</entry>
-                        </row>
-                        <row>
-                            <entry><code>integer getLastErrorCode()</code></entry>
-                            <entry>
-                                Returns the LDAP error number of the last LDAP
-                                command.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>string getLastError(integer &amp;$errorCode, array
-                                &amp;$errorMessages)</code>
-                            </entry>
-                            <entry>
-                                Returns the LDAP error message of the last LDAP command. The
-                                optional <code>$errorCode</code> parameter is set to the LDAP error
-                                number when given. The optional <code>$errorMessages</code> array
-                                will be filled with the raw error messages when given. The various
-                                LDAP error retrieval functions can return different things, so they
-                                are all collected if <code>$errorMessages</code> is given.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap setOptions($options)</code></entry>
-                            <entry>
-                                Sets the LDAP connection and binding parameters.
-                                <code>$options</code> can be an array or an instance of
-                                <code>Zend_Config</code>. The allowed options are specified in 
-                                <link
-                                    linkend="zend.ldap.using.theory-of-operation.options.table">Zend_Ldap Options</link>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getOptions()</code></entry>
-                            <entry>
-                                Returns the current connection and binding
-                                parameters.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string getBaseDn()</code></entry>
-                            <entry>
-                                Returns the base DN this LDAP connection is bound
-                                to.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>string getCanonicalAccountName(string $acctname,
-                                integer $form)</code>
-                            </entry>
-                            <entry>
-                                Returns the canonical account name of the given account name
-                                <code>$acctname</code>. <code>$form</code> specifies the <link
-                                    linkend="zend.ldap.using.theory-of-operation.account-name-canonicalization.table">format</link>
-                                into which the account name is canonicalized. See <link
-                                    linkend="zend.ldap.introduction.theory-of-operations.account-name-canonicalization">Account Name Canonicalization</link>
-                                for more details.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap disconnect()</code></entry>
-                            <entry>
-                                Disconnects the Zend_Ldap instance from the LDAP
-                                server.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap connect(string $host, integer $port, boolean
-                                $useSsl, boolean $useStartTls)</code>
-                            </entry>
-                            <entry>
-                                Connects the Zend_Ldap instance to the given LDAP server.
-                                All parameters are optional and will be taken from the LDAP
-                                connection and binding parameters passed to the instance via the
-                                construtor or via <code>Zend_Ldap::setOptions()</code> when set to
-                                <code>null</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap bind(string $username, string
-                                $password)</code>
-                            </entry>
-                            <entry>
-                                Authenticates <code>$username</code> with
-                                <code>$password</code> at the LDAP server. If both paramaters are
-                                omitted the binding will be carried out with the credentials given
-                                in the connection and binding parameters. If no credentials are
-                                given in the connection and binding parameters an anonymous bind
-                                will be performed. Note that this requires anonymous binds to be
-                                allowed on the LDAP server. An empty string <code>''</code> can be
-                                passed as <code>$password</code> together with a username if, and
-                                only if, <code>allowEmptyPassword</code> is set to
-                                <code>true</code> in the connection and binding parameters.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Collection
-                                search(string|Zend_Ldap_Filter_Abstract $filter,
-                                string|Zend_Ldap_Dn $basedn, integer $scope, array $attributes,
-                                string $sort, string $collectionClass)</code>
-                            </entry>
-                            <entry>
-                                Searches the LDAP tree with the given <code>$filter</code>
-                                and the given search parameters. 
-                                <variablelist>
-                                    <varlistentry>
-                                        <term><code>string|Zend_Ldap_Filter_Abstract
-                                        $filter</code></term>
-
-                                        <listitem>The filter string to be used in the search, e.g.
-                                        <code>(objectClass=posixAccount)</code>.</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term><code>string|Zend_Ldap_Dn $basedn</code></term>
-
-                                        <listitem>The search base for the search. If omitted or
-                                        <code>null</code>, the <code>baseDn</code> from the
-                                        connection and binding parameters is used.</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term><code>integer $scope</code></term>
-
-                                        <listitem>The search scope.
-                                        <code>Zend_Ldap::SEARCH_SCOPE_SUB</code> searches the
-                                        complete subtree including the <code>$baseDn</code> node.
-                                        <code>Zend_Ldap::SEARCH_SCOPE_ONE</code> restricts search
-                                        to one level below <code>$baseDn</code>.
-                                        <code>Zend_Ldap::SEARCH_SCOPE_BASE</code> restricts search
-                                        to the <code>$baseDn</code> itself; this can be used to
-                                        efficiently retrieve a single entry by its DN. The default
-                                        value is
-                                        <code>Zend_Ldap::SEARCH_SCOPE_SUB</code>.</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term><code>array $attributes</code></term>
-
-                                        <listitem>Specifies the attributes contained in the
-                                        returned entries. To include all possible attributes (ACL
-                                        restrictions can disallow certain attribute to be retrieved
-                                        by a given user) pass either an empty array
-                                        <code>array()</code> or <code>array('*')</code> to the
-                                        method. On some LDAP servers you can retrieve special
-                                        internal attributes by passing <code>array('*', '+')</code>
-                                        to the method.</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term><code>string $sort</code></term>
-
-                                        <listitem>If given the result collection will be sorted
-                                        after the attribute <code>$sort</code>. Results can only be
-                                        sorted after one single attribute as this parameter uses
-                                        the ext/ldap function <code>ldap_sort()</code>.</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term><code>string $collectionClass</code></term>
-
-                                        <listitem>If given the result will be wrapped in an object
-                                        of type <code>$collectionClass</code>. By default an object
-                                        of type <code>Zend_Ldap_Collection</code> will be returned.
-                                        The custom class must extend
-                                        <code>Zend_Ldap_Collection</code> and will be passed a
-                                        <code>Zend_Ldap_Collection_Iterator_Default</code> on
-                                        instantiation.</listitem>
-                                    </varlistentry>
-                                </variablelist>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>integer count(string|Zend_Ldap_Filter_Abstract
-                                $filter, string|Zend_Ldap_Dn $basedn, integer
-                                $scope)</code>
-                            </entry>
-                            <entry>
-                                Counts the elements returned by the given search parameters.
-                                See <code>Zend_Ldap::search()</code> for a detailed description of
-                                the method parameters.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>integer countChildren(string|Zend_Ldap_Dn
-                                $dn)</code>
-                            </entry>
-                            <entry>
-                                Counts the direct descendants (children) of the entry
-                                identified by the given <code>$dn</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean exists(string|Zend_Ldap_Dn $dn)</code></entry>
-                            <entry>
-                                Checks whether the entry identified by the given
-                                <code>$dn</code> exists.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array searchEntries(string|Zend_Ldap_Filter_Abstract
-                                $filter, string|Zend_Ldap_Dn $basedn, integer $scope, array
-                                $attributes, string $sort)</code>
-                            </entry>
-                            <entry>
-                                Performs a search operation and returns the result as an PHP
-                                array. This is essentially the same method as
-                                <code>Zend_Ldap::search()</code> except for the return type. See
-                                <code>Zend_Ldap::search()</code> for a detailed description of the
-                                method parameters.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array getEntry(string|Zend_Ldap_Dn $dn, array
-                                $attributes, boolean $throwOnNotFound)</code>
-                            </entry>
-                            <entry>
-                                Retrieves the LDAP entry identified by <code>$dn</code> with
-                                the attributes specified in <code>$attributes</code>. If
-                                <code>$attributes</code> is ommitted, all attributes
-                                (<code>array()</code>) are included in the result.
-                                <code>$throwOnNotFound</code> is <code>false</code> by default, so
-                                the method will return <code>null</code> if the specified entry
-                                cannot be found. If set to <code>true</code>, a
-                                <code>Zend_Ldap_Exception</code> will be thrown instead.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>void prepareLdapEntryArray(array
-                                &amp;$entry)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Prepare an array for the use in LDAP modification
-                                operations. This method does not need to be called by the end-user
-                                as it's implicitly called on every data modification
-                                method.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap add(string|Zend_Ldap_Dn $dn, array
-                                $entry)</code>
-                            </entry>
-                            <entry>
-                                Adds the entry identified by <code>$dn</code> with its
-                                attributes <code>$entry</code> to the LDAP tree. Throws a
-                                <code>Zend_Ldap_Exception</code> if the entry could not be
-                                added.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap update(string|Zend_Ldap_Dn $dn, array
-                                $entry)</code>
-                            </entry>
-                            <entry>
-                                Updates the entry identified by <code>$dn</code> with its
-                                attributes <code>$entry</code> to the LDAP tree. Throws a
-                                <code>Zend_Ldap_Exception</code> if the entry could not be
-                                modified.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap save(string|Zend_Ldap_Dn $dn, array
-                                $entry)</code>
-                            </entry>
-                            <entry>
-                                Saves the entry identified by <code>$dn</code> with its
-                                attributes <code>$entry</code> to the LDAP tree. Throws a
-                                <code>Zend_Ldap_Exception</code> if the entry could not be saved.
-                                This method decides by querying the LDAP tree if the entry will be
-                                added or updated.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap delete(string|Zend_Ldap_Dn $dn, boolean
-                                $recursively)</code>
-                            </entry>
-                            <entry>
-                                Deletes the entry identified by <code>$dn</code> from the
-                                LDAP tree. Throws a <code>Zend_Ldap_Exception</code> if the entry
-                                could not be deleted. <code>$recursively</code> is
-                                <code>false</code> by default. If set to <code>true</code> the
-                                deletion will be carried out recursively and will effectively
-                                delete a complete subtree. Deletion will fail if
-                                <code>$recursively</code> is <code>false</code> and the entry
-                                <code>$dn</code> is not a leaf entry.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap moveToSubtree(string|Zend_Ldap_Dn $from,
-                                string|Zend_Ldap_Dn $to, boolean $recursively, boolean
-                                $alwaysEmulate)</code>
-                            </entry>
-                            <entry>
-                                Moves the entry identified by <code>$from</code> to a
-                                location below <code>$to</code> keeping its RDN unchanged.
-                                <code>$recursively</code> specifies if the operation will be
-                                carried out recursively (<code>false</code> by default) so that the
-                                entry <code>$from</code> and all its descendants will be moved.
-                                Moving will fail if <code>$recursively</code> is <code>false</code>
-                                and the entry <code>$from</code> is not a leaf entry.
-                                <code>$alwaysEmulate</code> controls whether the ext/ldap function
-                                <code>ldap_rename()</code> should be used if available. This can
-                                only work for leaf entries and for servers and for ext/ldap
-                                supporting this function. Set to <code>true</code> to always use an
-                                emulated rename operation. 
-                                <note>
-                                    <para>All move-operations are carried out by copying and then
-                                    deleting the corresponding entries in the LDAP tree. These
-                                    operations are not <emphasis>atomic</emphasis> so that failures
-                                    during the operation will result in an
-                                    <emphasis>inconsistent</emphasis> state on the LDAP server. The
-                                    same is true for all recursive operations. They also are by no
-                                    means atomic. Please keep this in mind.
-                                </para>
-                            </note></entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap move(string|Zend_Ldap_Dn $from,
-                                string|Zend_Ldap_Dn $to, boolean $recursively, boolean
-                                $alwaysEmulate)</code>
-                            </entry>
-                            <entry>
-                                This is an alias for
-                                <code>Zend_Ldap::rename()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap rename(string|Zend_Ldap_Dn $from,
-                                string|Zend_Ldap_Dn $to, boolean $recursively, boolean
-                                $alwaysEmulate)</code>
-                            </entry>
-                            <entry>
-                                Renames the entry identified by <code>$from</code> to
-                                <code>$to</code>. <code>$recursively</code> specifies if the
-                                operation will be carried out recursively (<code>false</code> by
-                                default) so that the entry <code>$from</code> and all its
-                                descendants will be moved. Moving will fail if
-                                <code>$recursively</code> is <code>false</code> and the entry
-                                <code>$from</code> is not a leaf entry. <code>$alwaysEmulate</code>
-                                controls whether the ext/ldap function <code>ldap_rename()</code>
-                                should be used if available. This can only work for leaf entries
-                                and for servers and for ext/ldap supporting this function. Set to
-                                <code>true</code> to always use an emulated rename
-                                operation.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap copyToSubtree(string|Zend_Ldap_Dn $from,
-                                string|Zend_Ldap_Dn $to, boolean $recursively)</code>
-                            </entry>
-                            <entry>
-                                Copies the entry identified by <code>$from</code> to a
-                                location below <code>$to</code> keeping its RDN unchanged.
-                                <code>$recursively</code> specifies if the operation will be
-                                carried out recursively (<code>false</code> by default) so that the
-                                entry <code>$from</code> and all its descendants will be copied.
-                                Copying will fail if <code>$recursively</code> is
-                                <code>false</code> and the entry <code>$from</code> is not a leaf
-                                entry.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap copy(string|Zend_Ldap_Dn $from,
-                                string|Zend_Ldap_Dn $to, boolean $recursively)</code>
-                            </entry>
-                            <entry>
-                                Copies the entry identified by <code>$from</code> to
-                                <code>$to</code>. <code>$recursively</code> specifies if the
-                                operation will be carried out recursively (<code>false</code> by
-                                default) so that the entry <code>$from</code> and all its
-                                descendants will be copied. Copying will fail if
-                                <code>$recursively</code> is <code>false</code> and the entry
-                                <code>$from</code> is not a leaf entry.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node getNode(string|Zend_Ldap_Dn
-                                $dn)</code>
-                            </entry>
-                            <entry>
-                                Returns the entry <code>$dn</code> wrapped in a
-                                <code>Zend_Ldap_Node</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Node getBaseNode()</code></entry>
-                            <entry>
-                                Returns the entry for the base DN <code>$baseDn</code>
-                                wrapped in a <code>Zend_Ldap_Node</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Node_RootDse getRootDse()</code></entry>
-                            <entry>Returns the RootDSE for the current server.</entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Node_Schema getSchema()</code></entry>
-                            <entry>Returns the LDAP schema for the current server.</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-
-            </table>
-
-            <sect4 id="zend.ldap.api.reference.zend-ldap.zend-ldap-collection">
-                <title>Zend_Ldap_Collection</title>
-
-                <para>
-                    <code>Zend_Ldap_Collection</code> implements <code>Iterator</code> to
-                    allow for item traversal using <code>foreach()</code> and
-                    <code>Countable</code> to be able to respond to <code>count()</code>. With its
-                    protected <code>_createEntry()</code> method it provides a simple extension
-                    point for developers needing custom result objects.
-                </para>
-
-                <table id="zend.ldap.api.reference.zend-collection.table">
-                    <title>Zend_Ldap_Collection API</title>
-
-                    <tgroup cols="2">zend.ldap.api.reference.zend-ldap.zend-ldap-collection 
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry>
-                                <code>__construct(Zend_Ldap_Collection_Iterator_Interface
-                                $iterator)</code>
-                            </entry>
-                            <entry>
-                                Constructor. The constrcutor must be provided by a
-                                <code>Zend_Ldap_Collection_Iterator_Interface</code> which does the
-                                real result iteration.
-                                <code>Zend_Ldap_Collection_Iterator_Default</code> is the default
-                                implementation for iterating ext/ldap results.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean close()</code></entry>
-                            <entry>
-                                Closes the internal iterator. This is also called in the
-                                destructor.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array toArray()</code></entry>
-                            <entry>Returns all entries as an array.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getFirst()</code></entry>
-                            <entry>
-                                Returns the first entry in the collection or
-                                <code>null</code> if the collection is empty.
-                            </entry>
-                        </row>
-                    </tbody></tgroup>
-
-                </table>
-
-            </sect4>
-
-        </sect3>
-
-        <sect3 id="zend.ldap.api.reference.zend-ldap-attribute">
-            <title>Zend_Ldap_Attribute</title>
-
-            <para>
-                <code>Zend_Ldap_Attribute</code> is a helper class providing only static
-                methods to manipulate arrays suitable to the structure used in
-                <code>Zend_Ldap</code> data modification methods and to the data format required by
-                the LDAP server. PHP data types are converted the following way:
-            </para>
-
-            <variablelist>
-                <varlistentry>
-                    <term><code>string</code></term>
-                    <listitem>No conversion will be done.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term><code>integer</code> and <code>float</code></term>
-                    <listitem>The value will be converted to a string.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term><code>boolean</code></term>
-                    <listitem><code>true</code> will be converted to <code>'TRUE'</code> and
-                    <code>false</code> to <code>'FALSE'</code></listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term><code>object</code> and <code>array</code></term>
-                    <listitem>The value will be converted to a string by using
-                    <code>serialize()</code>.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term><code>resource</code></term>
-                    <listitem>If a <code>stream</code> resource is given, the data will be
-                    fetched by calling <code>stream_get_contents()</code>.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term>others</term>
-                    <listitem>All other data types (namely non-stream resources) will be
-                    ommitted.</listitem>
-                </varlistentry>
-
-            </variablelist>
-
-            <para>On reading attribute values the following conversion will take place:</para>
-
-            <variablelist>
-                <varlistentry>
-                    <term><code>'TRUE'</code></term>
-                    <listitem>Converted to <code>true</code>.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term><code>'FALSE'</code></term>
-                    <listitem>Converted to <code>false</code>.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term>others</term>
-                    <listitem>All other strings won't be automatically converted and are passed
-                    as they are.</listitem>
-                </varlistentry>
-
-            </variablelist>
-
-            <table id="zend.ldap.api.reference.zend-ldap-attribute">
-                <title>Zend_Ldap_Attribute API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry>
-                                <emphasis> <code>void setAttribute(array &amp;$data, string
-                                $attribName, mixed $value, boolean $append)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Sets the attribute <code>$attribName</code> in
-                                <code>$data</code> to the value <code>$value</code>. If
-                                <code>$append</code> is <code>true</code> (<code>false</code> by
-                                default) <code>$value</code> will be appended to the attribute.
-                                <code>$value</code> can be a scalar value or an array of scalar
-                                values. Conversion will take place.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>array|mixed getAttribute(array $data,
-                                string $attribName, integer|null $index)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Returns the attribute <code>$attribName</code> from
-                                <code>$data</code>. If <code>$index</code> is <code>null</code>
-                                (default) an array will be returned containing all the values for
-                                the given attribute. An empty array will be returned if the
-                                attribute does not exist in the given array. If an integer index is
-                                specified the corresponding value at the given index will be
-                                returned. If the index is out of bounds, <code>null</code> will be
-                                returned. Conversion will take place.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>boolean attributeHasValue(array &amp;$data,
-                                string $attribName, mixed|array $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Checks if the attribute <code>$attribName</code> in
-                                <code>$data</code> has the value(s) given in <code>$value</code>.
-                                The method returns <code>true</code> only if all values in
-                                <code>$value</code> are present in the attribute. Comparison is
-                                done strictly (respecting the data type).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>void removeDuplicatesFromAttribute(array
-                                &amp;$data, string $attribName)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Removes all duplicates from the attribute
-                                <code>$attribName</code> in <code>$data</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>void removeFromAttribute(array &amp;$data,
-                                string $attribName, mixed|array $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Removes the the value(s) given in <code>$value</code> from
-                                the attribute <code>$attribName</code> in
-                                <code>$data</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string|null convertToLdapValue(mixed
-                                $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Converts a PHP data type into its LDAP representation. See
-                                introduction for details.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>mixed convertFromLdapValue(string
-                                $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Converts an LDAP value into its PHP data type. See
-                                introduction for details.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string|null
-                                convertToLdapDateTimeValue(integer $value, boolean $utc)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Converts a timestamp into its LDAP date/time representation.
-                                If <code>$utc</code> is <code>true</code> (<code>false</code> by
-                                default) the resulting LDAP date/time string will be in UTC,
-                                otherwise a local date/time string will be returned.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>integer|null
-                                convertFromLdapDateTimeValue(string $value)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Converts LDAP date/time representation into a timestamp. The
-                                method returns <code>null</code> if <code>$value</code> can not be
-                                converted back into a PHP timestamp.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>void setPassword(array &amp;$data, string
-                                $password, string $hashType, string $attribName)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Sets a LDAP password for the the attribute
-                                <code>$attribName</code> in <code>$data</code>.
-                                <code>$attribName</code> defaults to <code>'userPassword'</code>
-                                which is the standard password attribute. The password hash can be
-                                specified with <code>$hashType</code>. The default value here is
-                                <code>Zend_Ldap_Attribute::PASSWORD_HASH_MD5</code> with
-                                <code>Zend_Ldap_Attribute::PASSWORD_HASH_SHA</code> as the other
-                                possibilty.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string createPassword(string $password,
-                                string $hashType)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates a LDAP password. The password hash can be specified
-                                with <code>$hashType</code>. The default value here is
-                                <code>Zend_Ldap_Attribute::PASSWORD_HASH_MD5</code> with
-                                <code>Zend_Ldap_Attribute::PASSWORD_HASH_SHA</code> as the other
-                                possibilty.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>void setDateTimeAttribute(array &amp;$data,
-                                string $attribName, integer|array $value, boolean $utc, boolean
-                                $append)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Sets the attribute <code>$attribName</code> in
-                                <code>$data</code> to the date/time value <code>$value</code>. If
-                                <code>$append</code> is <code>true</code> (<code>false</code> by
-                                default) <code>$value</code> will be appended to the attribute.
-                                <code>$value</code> can be an integer value or an array of
-                                integers. Date-time-conversion according to
-                                <code>Zend_Ldap_Attribute::convertToLdapDateTimeValue()</code> will
-                                take place.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>array|integer getDateTimeAttribute(array
-                                $data, string $attribName, integer|null $index)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Returns the date/time attribute <code>$attribName</code>
-                                from <code>$data</code>. If <code>$index</code> is
-                                <code>null</code> (default) an array will be returned containing
-                                all the date/time values for the given attribute. An empty array
-                                will be returned if the attribute does not exist in the given
-                                array. If an integer index is specified the corresponding date/time
-                                value at the given index will be returned. If the index is out of
-                                bounds, <code>null</code> will be returned. Date-time-conversion
-                                according to
-                                <code>Zend_Ldap_Attribute::convertFromLdapDateTimeValue()</code>
-                                will take place.
-                            </entry>
-                        </row>
-                    </tbody>
-
-                </tgroup>
-
-            </table>
-
-        </sect3>
-
-        <sect3 id="zend.ldap.api.reference.zend-ldap-dn">
-            <title>Zend_Ldap_Dn</title>
-
-            <para>
-                <code>Zend_Ldap_Dn</code> provides an object-oriented interface to
-                manipulating LDAP distinguished names (DN). The parameter <code>$caseFold</code>
-                that is used in several methods determines the way DN attributes are handled
-                regarding their case. Allowed values for this paraneter are:
-            </para>
-
-            <variablelist>
-                <varlistentry>
-                    <term><code>Zend_Ldap_Dn::ATTR_CASEFOLD_NONE</code></term>
-                    <listitem>No case-folding will be done.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term><code>Zend_Ldap_Dn::ATTR_CASEFOLD_UPPER</code></term>
-                    <listitem>All attributes will be converted to upper-case.</listitem>
-                </varlistentry>
-
-                <varlistentry>
-                    <term><code>Zend_Ldap_Dn::ATTR_CASEFOLD_LOWER</code></term>
-                    <listitem>All attributes will be converted to lower-case.</listitem>
-                </varlistentry>
-            </variablelist>
-
-            <para>
-                The default case-folding is <code>Zend_Ldap_Dn::ATTR_CASEFOLD_NONE</code> and
-                can be set with <code>Zend_Ldap_Dn::setDefaultCaseFold()</code>. Each instance of
-                <code>Zend_Ldap_Dn</code> can have its own case-folding-setting. If the
-                <code>$caseFold</code> parameter is ommitted in method-calls it defaults to the
-                instance's case-folding setting.
-            </para>
-
-            <para>
-                The class implements <code>ArrayAccess</code> to allow indexer-access to the
-                different parts of the DN. The <code>ArrayAccess</code>-methods proxy to
-                <code>Zend_Ldap_Dn::get($offset, 1, null)</code> for <code>offsetGet(integer
-                $offset)</code>, to <code>Zend_Ldap_Dn::set($offset, $value)</code> for
-                <code>offsetSet()</code> and to <code>Zend_Ldap_Dn::remove($offset, 1)</code> for
-                <code>offsetUnset()</code>. <code>offsetExists()</code> simply checks if the index
-                is within the bounds.
-            </para>
-
-            <table id="zend.ldap.api.reference.zend-ldap-dn">
-                <title>Zend_Ldap_Dn API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Dn factory(string|array $dn,
-                                string|null $caseFold)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates a <code>Zend_Ldap_Dn</code> instance from an array
-                                or a string. The array must conform to the array structure detailed
-                                under <code>Zend_Ldap_Dn::implodeDn()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Dn fromString(string $dn,
-                                string|null $caseFold)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates a <code>Zend_Ldap_Dn</code> instance from a
-                                string.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Dn fromArray(array $dn,
-                                string|null $caseFold)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates a <code>Zend_Ldap_Dn</code> instance from an array.
-                                The array must conform to the array structure detailed under
-                                <code>Zend_Ldap_Dn::implodeDn()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getRdn(string|null $caseFold)</code></entry>
-                            <entry>
-                                Gets the RDN of the current DN. The return value is an array
-                                with the RDN attribute names its keys and the RDN attribute
-                                values.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>string getRdnString(string|null
-                                $caseFold)</code>
-                            </entry>
-                            <entry>
-                                Gets the RDN of the current DN. The return value is a
-                                string.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Dn getParentDn(integer
-                                $levelUp)</code>
-                            </entry>
-                            <entry>
-                                Gets the DN of the current DN's ancestor
-                                <code>$levelUp</code> levels up the tree. <code>$levelUp</code>
-                                defaults to <code>1</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array get(integer $index, integer $length, string|null
-                                $caseFold)</code>
-                            </entry>
-                            <entry>
-                                Returns a slice of the current DN determined by
-                                <code>$index</code> and <code>$length</code>. <code>$index</code>
-                                starts with <code>0</code> on the DN part from the left.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Dn set(integer $index, array
-                                $value)</code>
-                            </entry>
-                            <entry>
-                                Replaces a DN part in the current DN. This operation
-                                manipulates the current instance.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Dn remove(integer $index, integer
-                                $length)</code>
-                            </entry>
-                            <entry>
-                                Removes a DN part from the current DN. This operation
-                                manipulates the current instance. <code>$length</code> defaults to
-                                <code>1</code>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Dn append(array $value)</code></entry>
-                            <entry>
-                                Appends a DN part to the current DN. This operation
-                                manipulates the current instance.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Dn prepend(array $value)</code></entry>
-                            <entry>
-                                Prepends a DN part to the current DN. This operation
-                                manipulates the current instance.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Dn insert(integer $index, array
-                                $value)</code>
-                            </entry>
-                            <entry>
-                                Inserts a DN part after the index <code>$index</code> to the
-                                current DN. This operation manipulates the current
-                                instance.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>void setCaseFold(string|null $caseFold)</code></entry>
-                            <entry>
-                                Sets the case-folding option to the current DN instance. If
-                                <code>$caseFold</code> is null the default case-folding setting
-                                (<code>Zend_Ldap_Dn::ATTR_CASEFOLD_NONE</code> by default or set
-                                via <code>Zend_Ldap_Dn::setDefaultCaseFold()</code> will be set for
-                                the current instance.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string toString(string|null $caseFold)</code></entry>
-                            <entry>Returns DN as a string.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array toArray(string|null $caseFold)</code></entry>
-                            <entry>Returns DN as an array.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string __toString()</code></entry>
-                            <entry>
-                                Returns DN as a string - proxies to
-                                <code>Zend_Ldap_Dn::toString(null)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>void setDefaultCaseFold(string
-                                $caseFold)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Sets the default case-folding option used by all instances
-                                on creation by default. Already existing instances are not affected
-                                by this setting.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>array escapeValue(string|array
-                                $values)</code> </emphasis>
-                            </entry>
-                            <entry>Escapes a DN value according to RFC 2253.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>array unescapeValue(string|array
-                                $values)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Undoes the conversion done by
-                                <code>Zend_Ldap_Dn::escapeValue()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>array explodeDn(string $dn, array
-                                &amp;$keys, array &amp;$vals, string|null $caseFold)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Explodes the DN <code>$dn</code> into an array containing
-                                all parts of the given DN. <code>$keys</code> optinally receive DN
-                                keys (e.g. CN, OU, DC, ...). <code>$vals</code> optionally receive
-                                DN values. The resulting array will be of type 
-                            <programlisting role="php"><![CDATA[
-array(
-    array("cn" => "name1", "uid" => "user"),
-    array("cn" => "name2"),
-    array("dc" => "example"),
-    array("dc" => "org")
-)
-    ]]></programlisting>for a DN of <code>cn=name1+uid=user,cn=name2,dc=example,dc=org</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>boolean checkDn(string $dn, array
-                                &amp;$keys, array &amp;$vals, string|null $caseFold)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Checks if a given DN <code>$dn</code> is malformed. If
-                                <code>$keys</code> or <code>$keys</code> and <code>$vals</code> are
-                                given, these arrays will be filled with the appropriate DN keys and
-                                values.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string implodeRdn(array $part, string|null
-                                $caseFold)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Returns a DN part in the form
-                                <code>$attribute=$value</code>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string implodeDn(array $dnArray,
-                                string|null $caseFold, string $separator)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Implodes an array in the form delivered by
-                                <code>Zend_Ldap_Dn::explodeDn()</code> to a DN string.
-                                <code>$separator</code> defaults to <code>','</code> but some LDAP
-                                servers also understand <code>';'</code>. <code>$dnArray</code>
-                                must of type 
-                            <programlisting role="php"><![CDATA[
-array(
-    array("cn" => "name1", "uid" => "user"),
-    array("cn" => "name2"),
-    array("dc" => "example"),
-    array("dc" => "org")
-)
-    ]]></programlisting>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>boolean isChildOf(string|Zend_Ldap_Dn
-                                $childDn, string|Zend_Ldap_Dn $parentDn)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Checks if given <code>$childDn</code> is beneath
-                                <code>$parentDn</code> subtree.
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-        </sect3>
-
-        <sect3 id="zend.ldap.api.reference.zend-ldap-filter">
-            <title>Zend_Ldap_Filter</title>
-
-            <table id="zend.ldap.api.reference.zend-filter.table">
-                <title>Zend_Ldap_Filter API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter equals(string $attr,
-                                string $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'equals' filter:
-                                <code>(attr=value)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter begins(string $attr,
-                                string $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'begins with' filter:
-                                <code>(attr=value*)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter ends(string $attr, string
-                                $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'ends with' filter:
-                                <code>(attr=*value)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter contains(string $attr,
-                                string $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'contains' filter:
-                                <code>(attr=*value*)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter greater(string $attr,
-                                string $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'greater' filter:
-                                <code>(attr&gt;value)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter greaterOrEqual(string
-                                $attr, string $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'greater or equal' filter:
-                                <code>(attr&gt;=value)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter less(string $attr, string
-                                $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'less' filter:
-                                <code>(attr&lt;value)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter lessOrEqual(string $attr,
-                                string $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'less or equal' filter:
-                                <code>(attr&lt;=value)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter approx(string $attr,
-                                string $value)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates an 'approx' filter:
-                                <code>(attr~=value)</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter any(string $attr)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>Creates an 'any' filter: <code>(attr=*)</code>.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter string(string
-                                $filter)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates a simple custom string filter. The user is
-                                responsible for all value-escaping as the filter is used as
-                                is.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter mask(string $mask, string
-                                $value,...)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Creates a filter from a string mask. All <code>$value</code>
-                                parameters will be escaped and substituted into <code>$mask</code>
-                                by using 
-                                <ulink url="http://php.net/sprintf">
-                                <code>sprintf()</code></ulink>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter
-                                andFilter(Zend_Ldap_Filter_Abstract $filter,...)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>Creates an 'and' filter from all arguments given.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Filter
-                                orFilter(Zend_Ldap_Filter_Abstract $filter,...)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>Creates an 'or' filter from all arguments given.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>__construct(string $attr, string $value, string
-                                $filtertype, string|null $prepend, string|null
-                                $append)</code>
-                            </entry>
-                            <entry>
-                                Constructor. Creates an arbitrary filter according to the
-                                parameters supplied. The resulting filter will be a concatenation
-                                <code>$attr . $filtertype . $prepend . $value . $append</code>.
-                                Normally this constructor is not needed as all filters can be
-                                created by using the apprpriate factory methods.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string toString()</code></entry>
-                            <entry>Returns a string representation of the filter.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string __toString()</code></entry>
-                            <entry>
-                                Returns a string representation of the filter. Proxies to
-                                <code>Zend_Ldap_Filter::toString()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Filter_Abstract negate()</code></entry>
-                            <entry>Negates the current filter.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Filter_Abstract
-                                addAnd(Zend_Ldap_Filter_Abstract $filter,...)</code>
-                            </entry>
-                            <entry>
-                                Creates an 'and' filter from the current filter and all
-                                filters passed in as the arguments.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Filter_Abstract
-                                addOr(Zend_Ldap_Filter_Abstract $filter,...)</code>
-                            </entry>
-                            <entry>
-                                Creates an 'or' filter from the current filter and all
-                                filters passed in as the arguments.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string|array escapeValue(string|array
-                                $values)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Escapes the given <code>$values</code> according to RFC 2254
-                                so that they can be safely used in LDAP filters. If a single string
-                                is given, a string is returned - otherwise an array is returned.
-                                Any control characters with an ACII code &lt; 32 as well as the
-                                characters with special meaning in LDAP filters "*", "(", ")", and
-                                "\" (the backslash) are converted into the representation of a
-                                backslash followed by two hex digits representing the hexadecimal
-                                value of the character.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string|array unescapeValue(string|array
-                                $values)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Undoes the conversion done by
-                                <code>Zend_Ldap_Filter::escapeValue()</code>. Converts any
-                                sequences of a backslash followed by two hex digits into the
-                                corresponding character.
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-        </sect3>
-
-        <sect3 id="zend.ldap.api.reference.zend-ldap-node">
-            <title>Zend_Ldap_Node</title>
-
-            <para>
-                <code>Zend_Ldap_Node</code> includes the magic propery accessors
-                <code>__set()</code>, <code>__get()</code>, <code>__unset()</code> and
-                <code>__isset()</code> to access the attributes by their name. They proxy to
-                <code>Zend_Ldap_Node::setAttribute()</code>,
-                <code>Zend_Ldap_Node::getAttribute()</code>,
-                <code>Zend_Ldap_Node::deleteAttribute()</code> and
-                <code>Zend_Ldap_Node::existsAttribute()</code> respectively. Furthermore the class
-                implements <code>ArrayAccess</code> for array-style-access to the attributes.
-                <code>Zend_Ldap_Node</code> also implements <code>Iterator</code> and
-                <code>RecursiveIterato</code> to allow for recursive tree-traversal.
-            </para>
-
-            <table id="zend.ldap.api.reference.zend-ldap-node.table">
-                <title>Zend_Ldap_Node API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry><code>Zend_Ldap getLdap()</code></entry>
-                            <entry>
-                                Returns the current LDAP connection. Throws
-                                <code>Zend_Ldap_Exception</code> if current node is in detached
-                                mode (not connected to a <code>Zend_Ldap</code> instance).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node attachLdap(Zend_Ldap
-                                $ldap)</code>
-                            </entry>
-                            <entry>
-                                Attach the current node to the <code>$ldap</code>
-                                <code>Zend_Ldap</code> instance. Throws
-                                <code>Zend_Ldap_Exception</code> if <code>$ldap</code> is not
-                                responsible for the current node (node is not a child of the
-                                <code>$ldap</code> base DN).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Node detachLdap()</code></entry>
-                            <entry>Detach node from LDAP connection.</entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean isAttached()</code></entry>
-                            <entry>
-                                Checks if the current node is attached to a LDAP
-                                connection.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Node
-                                create(string|array|Zend_Ldap_Dn $dn, array $objectClass)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Factory method to create a new detached
-                                <code>Zend_Ldap_Node</code> for a given DN. Creates a new
-                                <code>Zend_Ldap_Node</code> with the DN <code>$dn</code> and the
-                                object-classes <code>$objectClass</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Node
-                                fromLdap(string|array|Zend_Ldap_Dn $dn, Zend_Ldap $ldap)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Factory method to create an attached
-                                <code>Zend_Ldap_Node</code> for a given DN. Loads an existing
-                                <code>Zend_Ldap_Node</code> with the DN <code>$dn</code> from the
-                                LDAP connection <code>$ldap</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Node fromArray((array $data,
-                                boolean $fromDataSource)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Factory method to create a detached
-                                <code>Zend_Ldap_Node</code> from array data <code>$data</code>. If
-                                <code>$fromDataSource</code> is <code>true</code>
-                                (<code>false</code> by default), the data is treated as beeing
-                                present in a LDAP tree.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean isNew()</code></entry>
-                            <entry>
-                                Tells if the node is consiedered as new (not present on the
-                                server). Please note, that this doesn't tell if the node is really
-                                present on the server. Use <code>Zend_Ldap_Node::exists()</code> to
-                                see if a node is already there.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean willBeDeleted()</code></entry>
-                            <entry>
-                                Tells if this node is going to be deleted once
-                                <code>Zend_Ldap_Node::update()</code> is called.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Node delete()</code></entry>
-                            <entry>
-                                Marks this node as to be deleted. Node will be deleted on
-                                calling <code>Zend_Ldap_Node::update()</code> if
-                                <code>Zend_Ldap_Node::willBeDeleted()</code> is true.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean willBeMoved()</code></entry>
-                            <entry>
-                                Tells if this node is going to be moved once
-                                <code>Zend_Ldap_Node::update()</code> is called.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Node update(Zend_Ldap $ldap)</code></entry>
-                            <entry>
-                                Sends all pending changes to the LDAP server. If
-                                <code>$ldap</code> is omitted the current LDAP connection is used.
-                                If the current node is detached from a LDAP connection a
-                                <code>Zend_Ldap_Exception</code> will be thrown. If
-                                <code>$ldap</code> is provided the current node will be attached to
-                                the given LDAP connection.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Dn getCurrentDn()</code></entry>
-                            <entry>
-                                Gets the current DN of the current node as a Zend_Ldap_Dn.
-                                This does not reflect possible rename-operations.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Dn getDn()</code></entry>
-                            <entry>
-                                Gets the original DN of the current node as a Zend_Ldap_Dn.
-                                This reflects possible rename-operations.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string getDnString(string $caseFold)</code></entry>
-                            <entry>
-                                Gets the original DN of the current node as a string. This
-                                reflects possible rename-operations.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getDnArray(string $caseFold)</code></entry>
-                            <entry>
-                                Gets the original DN of the current node as an array. This
-                                reflects possible rename-operations.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string getRdnString(string $caseFold)</code></entry>
-                            <entry>
-                                Gets the RDN of the current node as a string. This reflects
-                                possible rename-operations.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getRdnArray(string $caseFold)</code></entry>
-                            <entry>
-                                Gets the RDN of the current node as an array. This reflects
-                                possible rename-operations.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node setDn(Zend_Ldap_Dn|string|array
-                                $newDn)</code>
-                            </entry>
-                            <entry>
-                                Sets the new DN for this node effectively moving the node
-                                once <code>Zend_Ldap_Node::update()</code> is called.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node move(Zend_Ldap_Dn|string|array
-                                $newDn)</code>
-                            </entry>
-                            <entry>
-                                This is an alias for
-                                <code>Zend_Ldap_Node::setDn()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node rename(Zend_Ldap_Dn|string|array
-                                $newDn)</code>
-                            </entry>
-                            <entry>
-                                This is an alias for
-                                <code>Zend_Ldap_Node::setDn()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getObjectClass()</code></entry>
-                            <entry>Returns the objectClass of the node.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node setObjectClass(array|string
-                                $value)</code>
-                            </entry>
-                            <entry>Sets the objectClass attribute.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node appendObjectClass(array|string
-                                $value)</code>
-                            </entry>
-                            <entry>Appends to the objectClass attribute.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string toLdif(array $options)</code></entry>
-                            <entry>
-                                Returns a LDIF representation of the current node.
-                                <code>$options</code> will be passed to the
-                                <code>Zend_Ldap_Ldif_Encoder</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getChangedData()</code></entry>
-                            <entry>
-                                Gets changed node data. The array contains all changed
-                                attributes. This format can be used in
-                                <code>Zend_Ldap::add()</code> and
-                                <code>Zend_Ldap::update()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getChanges()</code></entry>
-                            <entry>Returns all changes made.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string toString()</code></entry>
-                            <entry>
-                                Returns the DN of the current node - proxies to
-                                <code>Zend_Ldap_Dn::getDnString()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string __toString()</code></entry>
-                            <entry>
-                                Casts to string representation - proxies to
-                                <code>Zend_Ldap_Dn::toString()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array toArray(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns an array representation of the current node. If
-                                <code>$includeSystemAttributes</code> is <code>false</code>
-                                (defaults to <code>true</code>) the system specific attributes are
-                                stripped from the array. Unlike
-                                <code>Zend_Ldap_Node::getAttributes()</code> the resulting array
-                                contains the DN with key <code>'dn'</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>string toJson(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns a JSON representation of the current node using
-                                <code>Zend_Ldap_Node::toArray()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array getData(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns the node's attributes. The array contains all
-                                attributes in its internal format (no conversion).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean existsAttribute(string $name, boolean
-                                $emptyExists)</code>
-                            </entry>
-                            <entry>
-                                Checks whether a given attribute exists. If
-                                <code>$emptyExists</code> is <code>false</code> empty attributes
-                                (containing only array()) are treated as non-existent returning
-                                <code>false</code>. If <code>$emptyExists</code> is true empty
-                                attributes are treated as existent returning <code>true</code>. In
-                                this case teh method returns <code>false</code> only if the
-                                attribute name is missing in the key-collection.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean attributeHasValue(string $name, mixed|array
-                                $value)</code>
-                            </entry>
-                            <entry>
-                                Checks if the given value(s) exist in the attribute. The
-                                method returns <code>true</code> only if all values in
-                                <code>$value</code> are present in the attribute. Comparison is
-                                done strictly (respecting the data type).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>integer count()</code></entry>
-                            <entry>
-                                Returns the number of attributes in the node. Implements
-                                Countable.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>mixed getAttribute(string $name, integer|null
-                                $index)</code>
-                            </entry>
-                            <entry>
-                                Gets a LDAP attribute. Data conversion is applied using
-                                <code>Zend_Ldap_Attribute::getAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array getAttributes(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Gets all attributes of node. If
-                                <code>$includeSystemAttributes</code> is <code>false</code>
-                                (defaults to <code>true</code>) the system specific attributes are
-                                stripped from the array.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node setAttribute(string $name, mixed
-                                $value)</code>
-                            </entry>
-                            <entry>
-                                Sets a LDAP attribute. Data conversion is applied using
-                                <code>Zend_Ldap_Attribute::setAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node appendToAttribute(string $name, mixed
-                                $value)</code>
-                            </entry>
-                            <entry>
-                                Appends to a LDAP attribute. Data conversion is applied
-                                using <code>Zend_Ldap_Attribute::setAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array|integer getDateTimeAttribute(string $name,
-                                integer|null $index)</code>
-                            </entry>
-                            <entry>
-                                Gets a LDAP date/time attribute. Data conversion is applied
-                                using
-                                <code>Zend_Ldap_Attribute::getDateTimeAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node setDateTimeAttribute(string $name,
-                                integer|array $value, boolean $utc)</code>
-                            </entry>
-                            <entry>
-                                Sets a LDAP date/time attribute. Data conversion is applied
-                                using
-                                <code>Zend_Ldap_Attribute::setDateTimeAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node appendToDateTimeAttribute(string $name,
-                                integer|array $value, boolean $utc)</code>
-                            </entry>
-                            <entry>
-                                Appends to a LDAP date/time attribute. Data conversion is
-                                applied using
-                                <code>Zend_Ldap_Attribute::setDateTimeAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node setPasswordAttribute(string $password,
-                                string $hashType, string $attribName)</code>
-                            </entry>
-                            <entry>
-                                Sets a LDAP password on <code>$attribName</code> (defaults
-                                to <code>'userPassword'</code>) to <code>$password</code> with the
-                                hash type <code>$hashType</code> (defaults to
-                                <code>Zend_Ldap_Attribute::PASSWORD_HASH_MD5</code>).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node deleteAttribute(string
-                                $name)</code>
-                            </entry>
-                            <entry>Deletes a LDAP attribute.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>void removeDuplicatesFromAttribute(string
-                                $name)</code>
-                            </entry>
-                            <entry>Removes duplicate values from a LDAP attribute.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>void removeFromAttribute(string $attribName,
-                                mixed|array $value)</code>
-                            </entry>
-                            <entry>Removes the given values from a LDAP attribute.</entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean exists(Zend_Ldap $ldap)</code></entry>
-                            <entry>
-                                Checks if the current node exists on the given LDAP server
-                                (current server is used if <code>null</code> is passed).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Node reload(Zend_Ldap $ldap)</code></entry>
-                            <entry>
-                                Reloads the current node's attributes from the given LDAP
-                                server (current server is used if <code>null</code> is
-                                passed).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node_Collection
-                                searchSubtree(string|Zend_Ldap_Filter_Abstract $filter, integer
-                                $scope, string $sort)</code>
-                            </entry>
-                            <entry>
-                                Searches the nodes's subtree with the given
-                                <code>$filter</code> and the given search parameters. See
-                                <code>Zend_Ldap::search()</code> for details on the parameters
-                                <code>$scope</code> and <code>$sort</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>integer countSubtree(string|Zend_Ldap_Filter_Abstract
-                                $filter, integer $scope)</code>
-                            </entry>
-                            <entry>
-                                Count the nodes's subtree items matching the the given
-                                <code>$filter</code> and the given search scope. See
-                                <code>Zend_Ldap::search()</code> for details on the
-                                <code>$scope</code> parameter.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>integer countChildren()</code></entry>
-                            <entry>Count the nodes's children.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node_Collection
-                                searchChildren(string|Zend_Ldap_Filter_Abstract $filter, string
-                                $sort)</code>
-                            </entry>
-                            <entry>
-                                Searches the nodes's children matching the given
-                                <code>$filter</code>. See <code>Zend_Ldap::search()</code> for
-                                details on the <code>$sort</code> parameter.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean hasChildren()</code></entry>
-                            <entry>Returns whether the current node has children.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node_ChildrenIterator
-                                getChildren()</code>
-                            </entry>
-                            <entry>Returns all children of the current node.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node getParent(Zend_Ldap
-                                $ldap)</code>
-                            </entry>
-                            <entry>
-                                Returns the parent of the current node using the LDAP
-                                connection <code>$ldap</code> (uses the current LDAP connection if
-                                omitted).
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-        </sect3>
-
-        <sect3 id="zend.ldap.api.reference.zend-ldap-node-rootdse">
-            <title>Zend_Ldap_Node_RootDse</title>
-
-            <para>The following methods are available on all vendor-specific subclasses.</para>
-
-            <para>
-                <code>Zend_Ldap_Node_RootDse</code> includes the magic propery accessors
-                <code>__get()</code> and <code>__isset()</code> to access the attributes by their
-                name. They proxy to <code>Zend_Ldap_Node_RootDse::getAttribute()</code> and
-                <code>Zend_Ldap_Node_RootDse::existsAttribute()</code> respectively.
-                <code>__set()</code> and <code>__unset()</code> are also implemented but they throw
-                a <code>BadMethodCallException</code> as modifications are not allowed on RootDSE
-                nodes. Furthermore the class implements <code>ArrayAccess</code> for
-                array-style-access to the attributes. <code>offsetSet()</code> and
-                <code>offsetUnset()</code> also throw a <code>BadMethodCallException</code> due ro
-                obvious reasons.
-            </para>
-
-            <table id="zend.ldap.api.reference.zend-ldap-node-rootdse.table">
-                <title>Zend_Ldap_Node_RootDse API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry><code>Zend_Ldap_Dn getDn()</code></entry>
-                            <entry>Gets the DN of the current node as a Zend_Ldap_Dn.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getDnString(string $caseFold)</code></entry>
-                            <entry>Gets the DN of the current node as a string.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getDnArray(string $caseFold)</code></entry>
-                            <entry>Gets the DN of the current node as an array.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getRdnString(string $caseFold)</code></entry>
-                            <entry>Gets the RDN of the current node as a string.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getRdnArray(string $caseFold)</code></entry>
-                            <entry>Gets the RDN of the current node as an array.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getObjectClass()</code></entry>
-                            <entry>Returns the objectClass of the node.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string toString()</code></entry>
-                            <entry>
-                                Returns the DN of the current node - proxies to
-                                <code>Zend_Ldap_Dn::getDnString()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string __toString()</code></entry>
-                            <entry>
-                                Casts to string representation - proxies to
-                                <code>Zend_Ldap_Dn::toString()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array toArray(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns an array representation of the current node. If
-                                <code>$includeSystemAttributes</code> is <code>false</code>
-                                (defaults to <code>true</code>) the system specific attributes are
-                                stripped from the array. Unlike
-                                <code>Zend_Ldap_Node_RootDse::getAttributes()</code> the resulting
-                                array contains the DN with key <code>'dn'</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>string toJson(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns a JSON representation of the current node using
-                                <code>Zend_Ldap_Node_RootDse::toArray()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array getData(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns the node's attributes. The array contains all
-                                attributes in its internal format (no conversion).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean existsAttribute(string $name, boolean
-                                $emptyExists)</code>
-                            </entry>
-                            <entry>
-                                Checks whether a given attribute exists. If
-                                <code>$emptyExists</code> is <code>false</code> empty attributes
-                                (containing only array()) are treated as non-existent returning
-                                <code>false</code>. If <code>$emptyExists</code> is true empty
-                                attributes are treated as existent returning <code>true</code>. In
-                                this case teh method returns <code>false</code> only if the
-                                attribute name is missing in the key-collection.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean attributeHasValue(string $name, mixed|array
-                                $value)</code>
-                            </entry>
-                            <entry>
-                                Checks if the given value(s) exist in the attribute. The
-                                method returns <code>true</code> only if all values in
-                                <code>$value</code> are present in the attribute. Comparison is
-                                done strictly (respecting the data type).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>integer count()</code></entry>
-                            <entry>
-                                Returns the number of attributes in the node. Implements
-                                Countable.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>mixed getAttribute(string $name, integer|null
-                                $index)</code>
-                            </entry>
-                            <entry>
-                                Gets a LDAP attribute. Data conversion is applied using
-                                <code>Zend_Ldap_Attribute::getAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array getAttributes(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Gets all attributes of node. If
-                                <code>$includeSystemAttributes</code> is <code>false</code>
-                                (defaults to <code>true</code>) the system specific attributes are
-                                stripped from the array.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array|integer getDateTimeAttribute(string $name,
-                                integer|null $index)</code>
-                            </entry>
-                            <entry>
-                                Gets a LDAP date/time attribute. Data conversion is applied
-                                using
-                                <code>Zend_Ldap_Attribute::getDateTimeAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node_RootDse reload(Zend_Ldap
-                                $ldap)</code>
-                            </entry>
-                            <entry>
-                                Reloads the current node's attributes from the given LDAP
-                                server.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Node_RootDse create(Zend_Ldap
-                                $ldap)</code> </emphasis>
-                            </entry>
-                            <entry>Factory method to create the RootDSE.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getNamingContexts()</code></entry>
-                            <entry>Gets the namingContexts.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string|null getSubschemaSubentry()</code></entry>
-                            <entry>Gets the subschemaSubentry.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean supportsVersion(string|int|array
-                                $versions)</code>
-                            </entry>
-                            <entry>Determines if the LDAP version is supported.</entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean supportsSaslMechanism(string|array
-                                $mechlist)</code>
-                            </entry>
-                            <entry>Determines if the sasl mechanism is supported.</entry>
-                        </row>
-                        <row>
-                            <entry><code>integer getServerType()</code></entry>
-                            <entry>
-                                Gets the server type. Returns 
-                                <variablelist>
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_RootDse::SERVER_TYPE_GENERIC</code></term>
-                                        <listitem>for unknown LDAP servers</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_RootDse::SERVER_TYPE_OPENLDAP</code></term>
-                                        <listitem>for OpenLDAP servers</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_RootDse::SERVER_TYPE_ACTIVEDIRECTORY</code></term>
-                                        <listitem>for Microsoft ActiveDirectory servers</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_RootDse::SERVER_TYPE_EDIRECTORY</code></term>
-                                        <listitem>For Novell eDirectory servers</listitem>
-                                    </varlistentry>
-                                </variablelist>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>Zend_Ldap_Dn getSchemaDn()</code></entry>
-                            <entry>Returns the schema DN.</entry>
-                        </row>
-                    </tbody>
-
-                </tgroup>
-
-            </table>
-
-            <sect4 id="zend.ldap.api.reference.zend-ldap-node-rootdse.openldap">
-                <title>OpenLDAP</title>
-
-                <para>
-                    Additionally the common methods above apply to instances of
-                    <code>Zend_Ldap_Node_RootDse_OpenLdap</code>.
-                </para>
-
-                <note>
-                    <para>
-                        Refer to 
-                        <ulink url="http://www.zytrax.com/books/ldap/ch3/#operational">LDAP
-                        Operational Attributes and Objects</ulink>for information on the attributes
-                        of OpenLDAP RootDSE.
-                    </para>
-                </note>
-
-                <table id="zend.ldap.api.reference.zend-ldap-node-rootdse.openldap.table">
-                    <title>Zend_Ldap_Node_RootDse_OpenLdap API</title>
-
-                    <tgroup cols="2">
-                        <thead>
-                            <row>
-                                <entry>Method</entry>
-                                <entry>Description</entry>
-                            </row>
-                        </thead>
-                        <tbody>
-                            <row>
-                                <entry><code>integer getServerType()</code></entry>
-                                <entry>
-                                    Gets the server type. Returns
-                                    <code>Zend_Ldap_Node_RootDse::SERVER_TYPE_OPENLDAP</code>
-                                </entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getConfigContext()</code></entry>
-                                <entry>Gets the configContext.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getMonitorContext()</code></entry>
-                                <entry>Gets the monitorContext.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>boolean supportsControl(string|array
-                                    $oids)</code>
-                                </entry>
-                                <entry>Determines if the control is supported.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>boolean supportsExtension(string|array
-                                    $oids)</code>
-                                </entry>
-                                <entry>Determines if the extension is supported.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>boolean supportsFeature(string|array
-                                    $oids)</code>
-                                </entry>
-                                <entry>Determines if the feature is supported.</entry>
-                            </row>
-                        </tbody>
-                    </tgroup>
-                </table>
-            </sect4>
-
-            <sect4 id="zend.ldap.api.reference.zend-ldap-node-rootdse.activedirectory">
-                <title>ActiveDirectory</title>
-
-                <para>
-                    Additionally the common methods above apply to instances of
-                    <code>Zend_Ldap_Node_RootDse_ActiveDirectory</code>.
-                </para>
-
-                <note>
-                    <para>
-                        Refer to 
-                        <ulink url="http://msdn.microsoft.com/en-us/library/ms684291(VS.85).aspx">
-                        RootDSE</ulink>for information on the attributes of Microsoft
-                        ActiveDirectory RootDSE.
-                    </para>
-                </note>
-
-                <table id="zend.ldap.api.reference.zend-ldap-node-rootdse.activedirectory.table">
-                    <title>Zend_Ldap_Node_RootDse_ActiveDirectory API</title>
-
-                    <tgroup cols="2">
-                        <thead>
-                            <row>
-                                <entry>Method</entry>
-                                <entry>Description</entry>
-                            </row>
-                        </thead>
-                        <tbody>
-                            <row>
-                                <entry><code>integer getServerType()</code></entry>
-                                <entry>
-                                    Gets the server type. Returns
-                                    <code>Zend_Ldap_Node_RootDse::SERVER_TYPE_ACTIVEDIRECTORY</code>
-                                </entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getConfigurationNamingContext()</code>
-                                </entry>
-                                <entry>Gets the configurationNamingContext.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getCurrentTime()</code></entry>
-                                <entry>Gets the currentTime.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getDefaultNamingContext()</code>
-                                </entry>
-                                <entry>Gets the defaultNamingContext.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getDnsHostName()</code></entry>
-                                <entry>Gets the dnsHostName.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getDomainControllerFunctionality()</code>
-                                </entry>
-                                <entry>Gets the domainControllerFunctionality.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getDomainFunctionality()</code>
-                                </entry>
-                                <entry>Gets the domainFunctionality.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getDsServiceName()</code></entry>
-                                <entry>Gets the dsServiceName.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getForestFunctionality()</code>
-                                </entry>
-                                <entry>Gets the forestFunctionality.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getHighestCommittedUSN()</code>
-                                </entry>
-                                <entry>Gets the highestCommittedUSN.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getIsGlobalCatalogReady()</code>
-                                </entry>
-                                <entry>Gets the isGlobalCatalogReady.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getIsSynchronized()</code></entry>
-                                <entry>Gets the isSynchronized.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getLdapServiceName()</code></entry>
-                                <entry>Gets the ldapServiceName.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getRootDomainNamingContext()</code>
-                                </entry>
-                                <entry>Gets the rootDomainNamingContext.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getSchemaNamingContext()</code>
-                                </entry>
-                                <entry>Gets the schemaNamingContext.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getServerName()</code></entry>
-                                <entry>Gets the serverName.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>boolean supportsCapability(string|array
-                                    $oids)</code>
-                                </entry>
-                                <entry>Determines if the capability is supported.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>boolean supportsControl(string|array
-                                    $oids)</code>
-                                </entry>
-                                <entry>Determines if the control is supported.</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>boolean supportsPolicy(string|array
-                                    $policies)</code>
-                                </entry>
-                                <entry>Determines if the version is supported.</entry>
-                            </row>
-                        </tbody>
-                    </tgroup>
-                </table>
-            </sect4>
-
-            <sect4 id="zend.ldap.api.reference.zend-ldap-node-rootdse.edirectory">
-                <title>eDirectory</title>
-
-                <para>
-                    Additionally the common methods above apply to instances of
-                    <code>Zend_Ldap_Node_RootDse_eDirectory</code>.
-                </para>
-
-                <note>
-                    <para>
-                        Refer to 
-                        <ulink url="http://www.novell.com/documentation/edir88/edir88/index.html?page=/documentation/edir88/edir88/data/ah59jqq.html">
-                        Getting Information about the LDAP Server</ulink>for information on the
-                        attributes of Novell eDirectory RootDSE.
-                    </para>
-                </note>
-
-                <table id="zend.ldap.api.reference.zend-ldap-node-rootdse.edirectory.table">
-                    <title>Zend_Ldap_Node_RootDse_eDirectory API</title>
-
-                    <tgroup cols="2">
-                        <thead>
-                            <row>
-                                <entry>Method</entry>
-                                <entry>Description</entry>
-                            </row>
-                        </thead>
-                        <tbody>
-                            <row>
-                                <entry><code>integer getServerType()</code></entry>
-                                <entry>
-                                    Gets the server type. Returns
-                                    <code>Zend_Ldap_Node_RootDse::SERVER_TYPE_EDIRECTORY</code>
-                                </entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>boolean supportsExtension(string|array
-                                    $oids)</code>
-                                </entry>
-                                <entry>Determines if the extension is supported.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getVendorName()</code></entry>
-                                <entry>Gets the vendorName.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getVendorVersion()</code></entry>
-                                <entry>Gets the vendorVersion.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getDsaName()</code></entry>
-                                <entry>Gets the dsaName.</entry>
-                            </row>
-                            <row>
-                                <entry><code>string|null getStatisticsErrors()</code></entry>
-                                <entry>Gets the server statistics "errors".</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getStatisticsSecurityErrors()</code>
-                                </entry>
-                                <entry>Gets the server statistics "securityErrors".</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getStatisticsChainings()</code>
-                                </entry>
-                                <entry>Gets the server statistics "chainings".</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getStatisticsReferralsReturned()</code>
-                                </entry>
-                                <entry>Gets the server statistics "referralsReturned".</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getStatisticsExtendedOps()</code>
-                                </entry>
-                                <entry>Gets the server statistics "extendedOps".</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getStatisticsAbandonOps()</code>
-                                </entry>
-                                <entry>Gets the server statistics "abandonOps".</entry>
-                            </row>
-                            <row>
-                                <entry>
-                                    <code>string|null
-                                    getStatisticsWholeSubtreeSearchOps()</code>
-                                </entry>
-                                <entry>
-                                    Gets the server statistics
-                                    "wholeSubtreeSearchOps".
-                                </entry>
-                            </row>
-                        </tbody>
-
-                    </tgroup>
-
-                </table>
-
-            </sect4>
-
-        </sect3>
-
-        <sect3 id="zend.ldap.api.reference.zend-ldap-node-schema">
-            <title>Zend_Ldap_Node_Schema</title>
-
-            <para>The following methods are available on all vendor-specific subclasses.</para>
-
-            <para>
-                <code>Zend_Ldap_Node_Schema</code> includes the magic propery accessors
-                <code>__get()</code> and <code>__isset()</code> to access the attributes by their
-                name. They proxy to <code>Zend_Ldap_Node_Schema::getAttribute()</code> and
-                <code>Zend_Ldap_Node_Schema::existsAttribute()</code> respectively.
-                <code>__set()</code> and <code>__unset()</code> are also implemented but they throw
-                a <code>BadMethodCallException</code> as modifications are not allowed on RootDSE
-                nodes. Furthermore the class implements <code>ArrayAccess</code> for
-                array-style-access to the attributes. <code>offsetSet()</code> and
-                <code>offsetUnset()</code> also throw a <code>BadMethodCallException</code> due ro
-                obvious reasons.
-            </para>
-
-            <table id="zend.ldap.api.reference.zend-ldap-node-schema.table">
-                <title>Zend_Ldap_Node_Schema API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry><code>Zend_Ldap_Dn getDn()</code></entry>
-                            <entry>Gets the DN of the current node as a Zend_Ldap_Dn.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getDnString(string $caseFold)</code></entry>
-                            <entry>Gets the DN of the current node as a string.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getDnArray(string $caseFold)</code></entry>
-                            <entry>Gets the DN of the current node as an array.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getRdnString(string $caseFold)</code></entry>
-                            <entry>Gets the RDN of the current node as a string.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getRdnArray(string $caseFold)</code></entry>
-                            <entry>Gets the RDN of the current node as an array.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getObjectClass()</code></entry>
-                            <entry>Returns the objectClass of the node.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string toString()</code></entry>
-                            <entry>
-                                Returns the DN of the current node - proxies to
-                                <code>Zend_Ldap_Dn::getDnString()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string __toString()</code></entry>
-                            <entry>
-                                Casts to string representation - proxies to
-                                <code>Zend_Ldap_Dn::toString()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array toArray(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns an array representation of the current node. If
-                                <code>$includeSystemAttributes</code> is <code>false</code>
-                                (defaults to <code>true</code>) the system specific attributes are
-                                stripped from the array. Unlike
-                                <code>Zend_Ldap_Node_Schema::getAttributes()</code> the resulting
-                                array contains the DN with key <code>'dn'</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>string toJson(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns a JSON representation of the current node using
-                                <code>Zend_Ldap_Node_Schema::toArray()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array getData(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Returns the node's attributes. The array contains all
-                                attributes in its internal format (no conversion).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean existsAttribute(string $name, boolean
-                                $emptyExists)</code>
-                            </entry>
-                            <entry>
-                                Checks whether a given attribute exists. If
-                                <code>$emptyExists</code> is <code>false</code> empty attributes
-                                (containing only array()) are treated as non-existent returning
-                                <code>false</code>. If <code>$emptyExists</code> is true empty
-                                attributes are treated as existent returning <code>true</code>. In
-                                this case teh method returns <code>false</code> only if the
-                                attribute name is missing in the key-collection.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>boolean attributeHasValue(string $name, mixed|array
-                                $value)</code>
-                            </entry>
-                            <entry>
-                                Checks if the given value(s) exist in the attribute. The
-                                method returns <code>true</code> only if all values in
-                                <code>$value</code> are present in the attribute. Comparison is
-                                done strictly (respecting the data type).
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>integer count()</code></entry>
-                            <entry>
-                                Returns the number of attributes in the node. Implements
-                                Countable.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>mixed getAttribute(string $name, integer|null
-                                $index)</code>
-                            </entry>
-                            <entry>
-                                Gets a LDAP attribute. Data conversion is applied using
-                                <code>Zend_Ldap_Attribute::getAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array getAttributes(boolean
-                                $includeSystemAttributes)</code>
-                            </entry>
-                            <entry>
-                                Gets all attributes of node. If
-                                <code>$includeSystemAttributes</code> is <code>false</code>
-                                (defaults to <code>true</code>) the system specific attributes are
-                                stripped from the array.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>array|integer getDateTimeAttribute(string $name,
-                                integer|null $index)</code>
-                            </entry>
-                            <entry>
-                                Gets a LDAP date/time attribute. Data conversion is applied
-                                using
-                                <code>Zend_Ldap_Attribute::getDateTimeAttribute()</code>.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <code>Zend_Ldap_Node_Schema reload(Zend_Ldap
-                                $ldap)</code>
-                            </entry>
-                            <entry>
-                                Reloads the current node's attributes from the given LDAP
-                                server.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>Zend_Ldap_Node_Schema create(Zend_Ldap
-                                $ldap)</code> </emphasis>
-                            </entry>
-                            <entry>Factory method to create the Schema node.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getAttributeTypes()</code></entry>
-                            <entry>Gets the attribute types as an array of <code/>.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getObjectClasses()</code></entry>
-                            <entry>
-                                Gets the object classes as an array of
-                                <code>Zend_Ldap_Node_Schema_ObjectClass_Interface</code>.
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-
-            <table id="zend.ldap.api.reference.zend-ldap-node-schema.attributetype-interface.table">
-                <title>Zend_Ldap_Node_Schema_AttributeType_Interface API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry><code>string getName()</code></entry>
-                            <entry>Gets the attribute name.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getOid()</code></entry>
-                            <entry>Gets the attribute OID.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getSyntax()</code></entry>
-                            <entry>Gets the attribute syntax.</entry>
-                        </row>
-                        <row>
-                            <entry><code>int|null getMaxLength()</code></entry>
-                            <entry>Gets the attribute maximum length.</entry>
-                        </row>
-                        <row>
-                            <entry><code>boolean isSingleValued()</code></entry>
-                            <entry>Returns if the attribute is single-valued.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getDescription()</code></entry>
-                            <entry>Gets the attribute description</entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-
-            <table id="zend.ldap.api.reference.zend-ldap-node-schema.objectclass-interface.table">
-                <title>Zend_Ldap_Node_Schema_ObjectClass_Interface API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry><code>string getName()</code></entry>
-                            <entry>Returns the objectClass name.</entry>
-                        </row>
-                        <row>
-                            <entry><code>string getOid()</code></entry>
-                            <entry>Returns the objectClass OID.</entry>
-                        </row>
-                        <row>
-                            <entry><code>array getMustContain()</code></entry>
-                            <entry>
-                                Returns the attributes that this objectClass must
-                                contain.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getMayContain()</code></entry>
-                            <entry>
-                                Returns the attributes that this objectClass may
-                                contain.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>string getDescription()</code></entry>
-                            <entry>Returns the attribute description</entry>
-                        </row>
-                        <row>
-                            <entry><code>integer getType()</code></entry>
-                            <entry>
-                                Returns the objectClass type. The method returns one of the
-                                following values: 
-                                <variablelist>
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_UNKNOWN</code></term>
-                                        <listitem>for unknown class types</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_STRUCTURAL</code></term>
-                                        <listitem>for structural classes</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_ABSTRACT</code></term>
-                                        <listitem>for abstract classes</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term>
-                                        <code>Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_AUXILIARY</code></term>
-                                        <listitem>for auxiliary classes</listitem>
-                                    </varlistentry>
-                                </variablelist>
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>array getParentClasses()</code></entry>
-                            <entry>
-                                Returns the parent objectClasses of this class. This
-                                includes structural, abstract and auxiliary objectClasses.
-                            </entry>
-                        </row>
-                    </tbody>
-
-                </tgroup>
-
-            </table>
-
-            <para>
-                Classes representing attribute types and object classes extend
-                <code>Zend_Ldap_Node_Schema_Item</code> which provides some core methods to access
-                arbitrary attributes on the underlying LDAP node.
-                <code>Zend_Ldap_Node_Schema_Item</code> includes the magic propery accessors
-                <code>__get()</code> and <code>__isset()</code> to access the attributes by their
-                name. Furthermore the class implements <code>ArrayAccess</code> for
-                array-style-access to the attributes. <code>offsetSet()</code> and
-                <code>offsetUnset()</code> throw a <code>BadMethodCallException</code> as
-                modifications are not allowed on schema information nodes.
-            </para>
-
-            <table id="zend.ldap.api.reference.zend-ldap-node-schema.schema-item.table">
-                <title>Zend_Ldap_Node_Schema_Item API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry><code>array getData()</code></entry>
-                            <entry>
-                                Gets all the underlying data from the schema information
-                                node.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry><code>integer count()</code></entry>
-                            <entry>
-                                Returns the number of attributes in this schema information
-                                node. Implements Countable.
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-
-            <sect4 id="zend.ldap.api.reference.zend-ldap-node-schema.openldap">
-                <title>OpenLDAP</title>
-
-                <para>
-                    Additionally the common methods above apply to instances of
-                    <code>Zend_Ldap_Node_Schema_OpenLDAP</code>.
-                </para>
-
-                <table id="zend.ldap.api.reference.zend-ldap-node-schema.openldap.table">
-                    <title>Zend_Ldap_Node_Schema_OpenLDAP API</title>
-
-                    <tgroup cols="2">
-                        <thead>
-                            <row>
-                                <entry>Method</entry>
-                                <entry>Description</entry>
-                            </row>
-                        </thead>
-                        <tbody>
-                            <row>
-                                <entry><code>array getLdapSyntaxes()</code></entry>
-                                <entry>Gets the LDAP syntaxes.</entry>
-                            </row>
-                            <row>
-                                <entry><code>array getMatchingRules()</code></entry>
-                                <entry>Gets the matching rules.</entry>
-                            </row>
-                            <row>
-                                <entry><code>array getMatchingRuleUse()</code></entry>
-                                <entry>Gets the matching rule use.</entry>
-                            </row>
-                        </tbody>
-
-                    </tgroup>
-
-                </table>
-
-                <table
-                    id="zend.ldap.api.reference.zend-ldap-node-schema.openldap.attributetype-interface.table">
-                    <title>Zend_Ldap_Node_Schema_AttributeType_OpenLDAP API</title>
-
-                    <tgroup cols="2">
-                        <thead>
-                            <row>
-                                <entry>Method</entry>
-                                <entry>Description</entry>
-                            </row>
-                        </thead>
-                        <tbody>
-                            <row>
-                                <entry>
-                                    <code>Zend_Ldap_Node_Schema_AttributeType_OpenLdap|null
-                                    getParent()</code>
-                                </entry>
-                                <entry>
-                                    Returns the parent attribute type in the inhertitance
-                                    tree if one exists.
-                                </entry>
-                            </row>
-                        </tbody>
-                    </tgroup>
-                </table>
-
-                <table
-                    id="zend.ldap.api.reference.zend-ldap-node-schema.openldap.objectclass-interface.table">
-                    <title>Zend_Ldap_Node_Schema_ObjectClass_OpenLDAP API</title>
-
-                    <tgroup cols="2">
-                        <thead>
-                            <row>
-                                <entry>Method</entry>
-                                <entry>Description</entry>
-                            </row>
-                        </thead>
-                        <tbody>
-                            <row>
-                                <entry><code>array getParents()</code></entry>
-                                <entry>
-                                    Returns the parent object classes in the inhertitance
-                                    tree if one exists. The returned array is an array of
-                                    <code>Zend_Ldap_Node_Schema_ObjectClass_OpenLdap</code>.
-                                </entry>
-                            </row>
-                        </tbody>
-                    </tgroup>
-                </table>
-            </sect4>
-
-            <sect4 id="zend.ldap.api.reference.zend-ldap-node-schema.activedirectory">
-                <title>ActiveDirectory</title>
-
-                <note>
-                    <title>Schema browsing on ActiveDirectory servers</title>
-                    <para>
-                        Due to restrictions on Microsoft ActiveDirectory servers regarding
-                        the number of entries returned by generic search routines and due to the
-                        structure of the ActiveDirectory schema repository, schema browsing is
-                        currently <emphasis>not</emphasis> available for Microsoft ActiveDirectory
-                        servers.
-                    </para>
-                </note>
-
-                <para>
-                    <code>Zend_Ldap_Node_Schema_ActiveDirectory</code> does not provide any
-                    additional methods.
-                </para>
-
-                <table
-                    id="zend.ldap.api.reference.zend-ldap-node-schema.activedirectory.attributetype-interface.table">
-                    <title>Zend_Ldap_Node_Schema_AttributeType_ActiveDirectory API</title>
-
-                    <tgroup cols="1">
-                        <tbody>
-                            <row>
-                                <entry>
-                                    
-                                    <code>Zend_Ldap_Node_Schema_AttributeType_ActiveDirectory</code>
-                                    does not provide any additional methods.
-                                </entry>
-                            </row>
-                        </tbody>
-                    </tgroup>
-                </table>
-
-                <table
-                    id="zend.ldap.api.reference.zend-ldap-node-schema.activedirectory.objectclass-interface.table">
-                    <title>Zend_Ldap_Node_Schema_ObjectClass_ActiveDirectory API</title>
-
-                    <tgroup cols="1">
-                        <tbody>
-                            <row>
-                                <entry>
-                                    
-                                    <code>Zend_Ldap_Node_Schema_ObjectClass_ActiveDirectory</code>
-                                    does not provide any additional methods.
-                                </entry>
-                            </row>
-                        </tbody>
-                    </tgroup>
-                </table>
-            </sect4>
-        </sect3>
-
-        <sect3 id="zend.ldap.api.reference.zend-ldap-ldif-encoder">
-            <title>Zend_Ldif_Encoder</title>
-
-            <table id="zend.ldap.api.reference.zend-ldap-ldif-encoder.table">
-                <title>Zend_Ldif_Encoder API</title>
-
-                <tgroup cols="2">
-                    <thead>
-                        <row>
-                            <entry>Method</entry>
-                            <entry>Description</entry>
-                        </row>
-                    </thead>
-                    <tbody>
-                        <row>
-                            <entry>
-                                <emphasis> <code>array decode(string $string)</code>
-                                </emphasis>
-                            </entry>
-                            <entry>
-                                Decodes the string <code>$string</code> into an array of
-                                LDIF items.
-                            </entry>
-                        </row>
-                        <row>
-                            <entry>
-                                <emphasis> <code>string encode(scalar|array|Zend_Ldap_Node
-                                $value, array $options)</code> </emphasis>
-                            </entry>
-                            <entry>
-                                Encode <code>$value</code> into a LDIF representation.
-                                <code>$options</code> is an array that may contain the following
-                                keys: 
-                                <variablelist>
-                                    <varlistentry>
-                                        <term><code>'sort'</code></term>
-                                        <listitem>Sort the given attributes with <code>dn</code>
-                                        following <code>objectClass</code> and following all other
-                                        attributes sorted alphabetically. <code>true</code> by
-                                        default.</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term><code>'version'</code></term>
-                                        <listitem>The LDIF format version. <code>1</code> by
-                                        default.</listitem>
-                                    </varlistentry>
-
-                                    <varlistentry>
-                                        <term><code>'wrap'</code></term>
-                                        <listitem>The line-length. <code>78</code> by default to
-                                        conform to the LDIF specification.</listitem>
-                                    </varlistentry>
-                                </variablelist>
-                            </entry>
-                        </row>
-                    </tbody>
-                </tgroup>
-            </table>
-        </sect3>
+	<xi:include href="Zend_Ldap-API-Ldap.xml" />
+	<xi:include href="Zend_Ldap-API-Ldap-Attribute.xml" />
+	<xi:include href="Zend_Ldap-API-Ldap-Dn.xml" />
+	<xi:include href="Zend_Ldap-API-Ldap-Filter.xml" />
+	<xi:include href="Zend_Ldap-API-Ldap-Node.xml" />
+	<xi:include href="Zend_Ldap-API-Ldap-Node-RootDse.xml" />
+	<xi:include href="Zend_Ldap-API-Ldap-Node-Schema.xml" />
+	<xi:include href="Zend_Ldap-API-Ldap-Ldif-Encoder.xml" />
     </sect2>
 </sect1>