Пример #1
0
        public void DoctypeParser()
        {
            var result =
                grammar.DoctypeDecl(
                    Source(
                        "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/2002/REC-xhtml1-20020801/DTD/xhtml1-strict.dtd\">"));

            Assert.IsNotNull(result);
            Assert.AreEqual("html", result.Value.Name);
            Assert.AreEqual("PUBLIC", result.Value.ExternalId.ExternalIdType);
            Assert.AreEqual("-//W3C//DTD XHTML 1.0 Strict//EN", result.Value.ExternalId.PublicId);
            Assert.AreEqual("http://www.w3.org/TR/2002/REC-xhtml1-20020801/DTD/xhtml1-strict.dtd", result.Value.ExternalId.SystemId);

            var result2 =
                grammar.DoctypeDecl(
                    Source(
                        "<!DOCTYPE html PUBLIC \"http://www.w3.org/TR/2002/REC-xhtml1-20020801/DTD/xhtml1-strict.dtd\">"));

            Assert.IsNull(result2);

            var result3 =
                grammar.DoctypeDecl(
                    Source(
                        "<!DOCTYPE html SYSTEM 'hello world'>"));

            Assert.IsNotNull(result);
            Assert.AreEqual("html", result3.Value.Name);
            Assert.AreEqual("SYSTEM", result3.Value.ExternalId.ExternalIdType);
            Assert.AreEqual("hello world", result3.Value.ExternalId.SystemId);

            var result4 =
                grammar.DoctypeDecl(
                    Source(
                        "<!DOCTYPE foo >"));

            Assert.IsNotNull(result4);
            Assert.AreEqual("foo", result4.Value.Name);
            Assert.IsNull(result4.Value.ExternalId);
        }