private void XmlDeclarationHandler(MarkupParsingContext context, string xmlDeclaration)
{
_currentNodeType = HtmlNodeType.XmlDeclaration;
WhitespaceMinificationMode whitespaceMinificationMode = _settings.WhitespaceMinificationMode;
if (whitespaceMinificationMode != WhitespaceMinificationMode.None)
{
// Processing of whitespace, that followed before the document type declaration
TrimEndLastBufferItem();
}
if (_settings.UseXhtmlSyntax)
{
XmlMinifier innerXmlMinifier = GetInnerXmlMinifierInstance();
MarkupMinificationResult minificationResult = innerXmlMinifier.Minify(xmlDeclaration);
if (minificationResult.Errors.Count == 0)
{
_buffer.Add(minificationResult.MinifiedContent);
}
else
{
string sourceCode = context.SourceCode;
var documentCoordinates = context.NodeCoordinates;
foreach (MinificationErrorInfo error in minificationResult.Errors)
{
var xmlNodeCoordinates = new SourceCodeNodeCoordinates(error.LineNumber, error.ColumnNumber);
var absoluteNodeCoordinates = SourceCodeNavigator.CalculateAbsoluteNodeCoordinates(
documentCoordinates, xmlNodeCoordinates);
string sourceFragment = SourceCodeNavigator.GetSourceFragment(
sourceCode, absoluteNodeCoordinates);
string message = Strings.ErrorMessage_XmlDeclarationMinificationFailed;
WriteError(LogCategoryConstants.HtmlMinificationError, message, _fileContext,
absoluteNodeCoordinates.LineNumber, absoluteNodeCoordinates.ColumnNumber, sourceFragment);
}
}
}
else
{
string sourceCode = context.SourceCode;
SourceCodeNodeCoordinates xmlDeclarationCoordinates = context.NodeCoordinates;
WriteWarning(LogCategoryConstants.HtmlMinificationWarning,
Strings.WarningMessage_XmlDeclarationNotAllowed, _fileContext,
xmlDeclarationCoordinates.LineNumber, xmlDeclarationCoordinates.ColumnNumber,
SourceCodeNavigator.GetSourceFragment(sourceCode, xmlDeclarationCoordinates));
}
}