private void WriteStartDocumentImpl(XmlStandalone standalone)
{
try
{
AdvanceState(Token.StartDocument);
if (_conformanceLevel == ConformanceLevel.Auto)
{
_conformanceLevel = ConformanceLevel.Document;
_stateTable = s_stateTableDocument;
}
else if (_conformanceLevel == ConformanceLevel.Fragment)
{
throw new InvalidOperationException(SR.Xml_CannotStartDocumentOnFragment);
}
if (_rawWriter != null)
{
if (!_xmlDeclFollows)
{
_rawWriter.WriteXmlDeclaration(standalone);
}
}
else
{
// We do not pass the standalone value here
_writer.WriteStartDocument();
}
}
catch
{
_currentState = State.Error;
throw;
}
}