public void SubjectsDtd() { var dtd = @"<!--see Element Type Declarations for an explanation of the following syntax--> <!ELEMENT document (title*,subjectID,subjectname,prerequisite?, classes,assessment,syllabus,textbooks*)> <!ELEMENT prerequisite (subjectID,subjectname)> <!ELEMENT textbooks (author,booktitle)> <!ELEMENT title (#PCDATA)> <!ELEMENT subjectID (#PCDATA)> <!ELEMENT subjectname (#PCDATA)> <!ELEMENT classes (#PCDATA)> <!ELEMENT assessment (#PCDATA)> <!ATTLIST assessment assessment_type (exam | assignment) #IMPLIED> <!ELEMENT syllabus (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT booktitle (#PCDATA)>"; var parser = new DtdParser(dtd); parser.Parse(); var result = parser.Result; Assert.AreEqual(13, result.Count); Assert.AreEqual(1, result.Comments.Count()); Assert.AreEqual(1, result.Attributes.Count()); Assert.AreEqual(11, result.Elements.Count()); }
/// <summary> /// Scans the external portion, i.e. the system identifier of the doctype. /// </summary> /// <param name="url">The url to use.</param> /// <param name="typeDefinitions">The type definitions to modify.</param> void ScanExternalSubset(String url, DtdContainer typeDefinitions) { if (Configuration.HasHttpRequester) { if (!Location.IsAbsolute(url)) url = Location.MakeAbsolute(doc.BaseURI, url); var http = Configuration.GetHttpRequester(); var response = http.Request(new DefaultHttpRequest { Address = new Uri(url) }); var stream = new SourceManager(response.Content); var container = new DtdContainer(typeDefinitions) { Url = url, Parent = doc }; var dtd = new DtdParser(container, stream); dtd.IsInternal = false; dtd.Parse(); } }
void ScanInternalSubset(XmlDoctypeToken doctype) { var dtd = new DtdParser(_dtd, _src); dtd.IsInternal = true; dtd.ErrorOccurred += (s, e) => RaiseErrorOccurred(s, e); dtd.Parse(); doctype.InternalSubset = dtd.Result.Text; }