'The text of the opening tag of this element, including attributes. If
this is the root element, a namespace declaration for each of the
namespace prefixes that occur in this tree is added in front of any
attributes. If this element contains text, that text follows the
start tag. If not, and this element has no children, an empty tag is
returned. Otherwise, an opening tag is returned, followed by
a newline. The tag is indented by this element\'s indent value in all
cases.'

@property
def _start_tag(self):

    _nsdecls = (nsdecls(*self.nspfxs) if self.is_root else '')
    tag = ('%s<%s%s' % (self._indent_str, self._tagname, _nsdecls))
    for attr in self._attrs:
        (name, value) = attr
        tag += ('    %s="%s"' % (name, value))
    if self._text:
        tag += ('>%s' % self._text)
    elif self._children:
        tag += '>\n'
    else:
        tag += '/>\n'
    return tag
