public override void DeleteSelf() {
XmlNode node = source;
XmlNode end = node;
switch (node.NodeType) {
case XmlNodeType.Attribute:
XmlAttribute attribute = (XmlAttribute)node;
if (attribute.IsNamespace) {
goto default;
}
XmlNode parent = OwnerNode(attribute);
DeleteAttribute(attribute, attributeIndex);
if (parent != null) {
ResetPosition(parent);
}
break;
case XmlNodeType.Text:
case XmlNodeType.CDATA:
case XmlNodeType.SignificantWhitespace:
case XmlNodeType.Whitespace:
CalibrateText();
node = source;
end = TextEnd(node);
goto case XmlNodeType.Element;
case XmlNodeType.Element:
case XmlNodeType.ProcessingInstruction:
case XmlNodeType.Comment:
parent = OwnerNode(node);
DeleteToFollowingSibling(node, end);
if (parent != null) {
ResetPosition(parent);
}
break;
default:
throw new InvalidOperationException(Res.GetString(Res.Xpn_BadPosition));
}
}