<!DOCTYPE module>
<module name='StreamListener'>
   A template for stream parser listeners. Note that the declarations (attlistdecl, elementdecl, etc) are trivially processed; REXML doesn't yet handle doctype entity declarations, so you  have to parse them out yourself.
  <method name='tag_start'>
    <argument name='name'/>
    <argument name='attrs'/>
     Called when a tag is encountered. @p name the tag name @p attrs an array of arrays of attribute/value pairs, suitable for use with assoc or rassoc.  IE, &lt;tag attr1="value1" attr2="value2"&gt; will result in  tag_start( "tag", # [["attr1","value1"],["attr2","value2"]])
  </method>
  <method name='tag_end'>
    <argument name='name'/>
     Called when the end tag is reached.  In the case of &lt;tag/&gt;, tag_end will be called immidiately after tag_start @p the name of the tag
  </method>
  <method name='text'>
    <argument name='text'/>
     Called when text is encountered in the document @p text the text content.
  </method>
  <method name='instruction'>
    <argument name='name'/>
    <argument name='instruction'/>
     Called when an instruction is encountered.  EG: &lt;?xsl sheet='foo'?&gt; @p name the instruction name; in the example, "xsl" @p instruction the rest of the instruction.  In the example, "sheet='foo'"
  </method>
  <method name='comment'>
    <argument name='comment'/>
     Called when a comment is encountered. @p comment The content of the comment
  </method>
  <method name='doctype'>
    <argument name='name'/>
    <argument name='pub_sys'/>
    <argument name='long_name'/>
    <argument name='uri'/>
     Handles a doctype declaration. Any attributes of the doctype which are not supplied will be nil.  # EG, &lt;!DOCTYPE me PUBLIC "foo" "bar"&gt; @p name the name of the doctype; EG, "me" @p pub_sys "PUBLIC", "SYSTEM", or nil.  EG, "PUBLIC" @p long_name the supplied long name, or nil.  EG, "foo" @p uri the uri of the doctype, or nil.  EG, "bar"
  </method>
  <method name='attlistdecl'>
    <argument name='content'/>
     If a doctype includes an ATTLIST declaration, it will cause this method to be called.  The content is the declaration itself, unparsed. EG, &lt;!ATTLIST el attr CDATA #REQUIRED&gt; will come to this method as "el attr CDATA #REQUIRED".  This is the same for all of the .*decl methods.
  </method>
  <method name='elementdecl'>
    <argument name='content'/>
     &lt;!ELEMENT ...&gt;
  </method>
  <method name='entitydecl'>
    <argument name='content'/>
     &lt;!ENTITY ...&gt;
  </method>
  <method name='notationdecl'>
    <argument name='content'/>
     &lt;!NOTATION ...&gt;
  </method>
  <method name='entity'>
    <argument name='content'/>
     Called when %foo; is encountered in a doctype declaration. @p content "foo"
  </method>
  <method name='cdata'>
    <argument name='content'/>
     Called when &lt;![CDATA[ ... ]]&gt; is encountered in a document. @p content "..."
  </method>
  <method name='xmldecl'>
    <argument name='version'/>
    <argument name='encoding'/>
    <argument name='standalone'/>
     Called when an XML PI is encountered in the document. EG: &lt;?xml version="1.0" encoding="utf"?&gt; @p version the version attribute value.  EG, "1.0" @p encoding the encoding attribute value, or nil.  EG, "utf" @p standalone the standalone attribute value, or nil.  EG, nil
  </method>
</module>