Example #1
0
        void Insert(Token.Doctype d)
        {
            var doctypeNode = doc.CreateDocumentType(
                d.Name,
                d.PublicIdentifier,
                d.SystemIdentifier
                );

            doctypeNode.BaseUri = baseUri;
            InsertNode(doctypeNode);
        }
Example #2
0
            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);
            }
Example #3
0
 public void CreateDoctypePending()
 {
     doctypePending = new Token.Doctype();
 }