public override void WriteStartElement(string prefix, string localName, string ns ) {
Debug.Assert( localName != null && localName.Length != 0 && prefix != null && ns != null );
base.elementScope.Push( (byte)base.currentElementProperties );
if ( ns.Length == 0 ) {
Debug.Assert( prefix.Length == 0 );
base.currentElementProperties = (ElementProperties)elementPropertySearch.FindCaseInsensitiveString( localName );
if ( endBlockPos == base.bufPos && ( base.currentElementProperties & ElementProperties.BLOCK_WS ) != 0 ) {
WriteIndent();
}
indentLevel++;
base.bufBytes[bufPos++] = (byte) '<';
}
else {
base.currentElementProperties = ElementProperties.HAS_NS | ElementProperties.BLOCK_WS;
if ( endBlockPos == base.bufPos ) {
WriteIndent();
}
indentLevel++;
base.bufBytes[base.bufPos++] = (byte) '<';
if ( prefix.Length != 0 ) {
base.RawText( prefix );
base.bufBytes[base.bufPos++] = (byte) ':';
}
}
base.RawText( localName );
base.attrEndPos = bufPos;
}