void Insert(Token.Doctype d) { var doctypeNode = doc.CreateDocumentType( d.Name, d.PublicIdentifier, d.SystemIdentifier ); doctypeNode.BaseUri = baseUri; InsertNode(doctypeNode); }
public override bool Process(Token t, HtmlTreeBuilder tb) { if (IsWhitespace(t)) { return(true); // ignore whitespace } else if (t.IsComment) { tb.Insert(t.AsComment()); } else if (t.IsDoctype) { // TODO: parse error check on expected doctypes // TODO: quirk state check on doctype ids Token.Doctype d = t.AsDoctype(); var doctype = tb.Document.CreateDocumentType( d.Name, d.PublicIdentifier, d.SystemIdentifier ); doctype.BaseUri = tb.BaseUri; tb.Document.Append(doctype); if (d.ForceQuirks) { tb.Document.QuirksMode = QuirksMode.Quirks; } tb.Transition(BeforeHtml); } else { // TODO: check not iframe srcdoc tb.Transition(BeforeHtml); return(tb.Process(t)); // re-process token } return(true); }
public void CreateDoctypePending() { doctypePending = new Token.Doctype(); }