def _html_output(self, normal_row, error_row, row_ender,  help_text_html, errors_on_separate_row):
parts = []<EOL>parts.append(super(XmlObjectForm, self)._html_output(normal_row, error_row, row_ender,<EOL>help_text_html, errors_on_separate_row))<EOL>def _subform_output(subform):<EOL><INDENT>return subform._html_output(normal_row, error_row, row_ender,<EOL>help_text_html, errors_on_separate_row)<EOL><DEDENT>for name, subform in six.iteritems(self.subforms):<EOL><INDENT>if hasattr(subform, '<STR_LIT>'):<EOL><INDENT>name = subform.form_label<EOL><DEDENT>parts.append(self._html_subform_output(subform, name, _subform_output))<EOL><DEDENT>for name, formset in six.iteritems(self.formsets):<EOL><INDENT>parts.append(u(formset.management_form))<EOL>if hasattr(formset.forms[<NUM_LIT:0>], '<STR_LIT>') andformset.forms[<NUM_LIT:0>].form_label is not None:<EOL><INDENT>name = formset.forms[<NUM_LIT:0>].form_label<EOL><DEDENT>elif hasattr(formset, '<STR_LIT>'):<EOL><INDENT>name = formset.form_label<EOL><DEDENT>subform_parts = list()<EOL>for subform in formset.forms:<EOL><INDENT>subform_parts.append(self._html_subform_output(subform,<EOL>gen_html=_subform_output, suppress_section=True))<EOL><DEDENT>parts.append(self._html_subform_output(name=name, content=u'<STR_LIT:\n>'.join(subform_parts)))<EOL><DEDENT>return mark_safe(u'<STR_LIT:\n>'.join(parts))<EOL>
Extend BaseForm's helper function for outputting HTML. Used by as_table(), as_ul(), as_p().

        Combines the HTML version of the main form's fields with the HTML content
        for any subforms.