private void WriteRootBoundElementTo(DataPointer dp, XmlWriter w)
{
Debug.Assert(dp.NodeType == XmlNodeType.Element);
XmlDataDocument doc = (XmlDataDocument)OwnerDocument;
w.WriteStartElement(dp.Prefix, dp.LocalName, dp.NamespaceURI);
int cAttr = dp.AttributeCount;
bool bHasXSI = false;
if (cAttr > 0)
{
for (int iAttr = 0; iAttr < cAttr; iAttr++)
{
dp.MoveToAttribute(iAttr);
if (dp.Prefix == "xmlns" && dp.LocalName == XmlDataDocument.XSI)
{
bHasXSI = true;
}
WriteTo(dp, w);
dp.MoveToOwnerElement();
}
}
if (!bHasXSI && doc._bLoadFromDataSet && doc._bHasXSINIL)
{
w.WriteAttributeString("xmlns", "xsi", "http://www.w3.org/2000/xmlns/", Keywords.XSINS);
}
WriteBoundElementContentTo(dp, w);
// Force long end tag when the elem is not empty, even if there are no children.
if (dp.IsEmptyElement)
{
w.WriteEndElement();
}
else
{
w.WriteFullEndElement();
}
}