<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.xml-set-element-handler" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>xml_set_element_handler</refname>
  <refpurpose>Set up start and end element handlers</refpurpose>
 </refnamediv>
 
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>true</type><methodname>xml_set_element_handler</methodname>
   <methodparam><type>XMLParser</type><parameter>parser</parameter></methodparam>
   <methodparam><type>callable</type><parameter>start_handler</parameter></methodparam>
   <methodparam><type>callable</type><parameter>end_handler</parameter></methodparam>
  </methodsynopsis>
  <para>
   Sets the element handler functions for the XML <parameter>parser</parameter>.
  </para>
  <para>
   <parameter>start_handler</parameter> is called when a new XML element is
   opened. <parameter>end_handler</parameter> is called when an XML element
   is closed.
  </para>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    &xml.parser.param;
    <varlistentry>
     <term><parameter>start_handler</parameter></term>
     <listitem>
      &xml.handler.description;
      <para>
       The signature of the handler must be:
       <methodsynopsis>
        <type>void</type><methodname><replaceable>start_element_handler</replaceable></methodname>
        <methodparam><type>XMLParser</type><parameter>parser</parameter></methodparam>
        <methodparam><type>string</type><parameter>name</parameter></methodparam>
        <methodparam><type>array</type><parameter>attributes</parameter></methodparam>
       </methodsynopsis>
       <variablelist>
        &xml.handler.parser.param;
        <varlistentry>
         <term><parameter>name</parameter></term>
         <listitem>
          <simpara>
           Contains the name of the element for which this handler is called.
           If <link linkend="xml.case-folding">case-folding</link> is in effect
           for this parser, the element name will be in uppercase letters.
          </simpara>
         </listitem>
        </varlistentry>
        <varlistentry>
         <term><parameter>attributes</parameter></term>
         <listitem>
          <simpara>
           An associative array with the element's attributes.
           The array is empty if the element has no attributes.
           The keys of this array are the attribute names,
           the values are the attribute values.
           Attribute names are
           <link linkend="xml.case-folding">case-folded</link>
           on the same criteria as element names.
           Attribute values are <emphasis>not</emphasis> case-folded.
          </simpara>
          <simpara>
           The order in which <parameter>attributes</parameter> is traversed
           is identical to the order in which the attributes were declared.
          </simpara>
         </listitem>
        </varlistentry>
       </variablelist>
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>end_handler</parameter></term>
     <listitem>
      &xml.handler.description;
      <para>
       The signature of the handler must be:
       <methodsynopsis>
        <type>void</type><methodname><replaceable>end_element_handler</replaceable></methodname>
        <methodparam><type>XMLParser</type><parameter>parser</parameter></methodparam>
        <methodparam><type>string</type><parameter>name</parameter></methodparam>
       </methodsynopsis>
       <variablelist>
        &xml.handler.parser.param;
        <varlistentry>
         <term><parameter>name</parameter></term>
         <listitem>
          <simpara>
           Contains the name of the element for which this handler is called.
           If <link linkend="xml.case-folding">case-folding</link> is in effect
           for this parser, the element name will be in uppercase letters.
          </simpara>
         </listitem>
        </varlistentry>
       </variablelist>
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   &return.true.always;
  </para>
 </refsect1>

 <refsect1 role="changelog">
  &reftitle.changelog;
  <informaltable>
   <tgroup cols="2">
    <thead>
     <row>
      <entry>&Version;</entry>
      <entry>&Description;</entry>
     </row>
    </thead>
    <tbody>
      &xml.changelog.parser-param;
    </tbody>
   </tgroup>
  </informaltable>
 </refsect1>

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