public static SgmlDtd Parse(Uri baseUri, string name, TextReader input, string subset, Func<Uri, StreamInformation> streamOpener, XmlNameTable nt)
		{
			SgmlDtd dtd = new SgmlDtd(name, nt);
			dtd.PushEntity(baseUri, new Entity(dtd.Name, baseUri, input, streamOpener));
			if (!string.IsNullOrEmpty(subset))
			{
				dtd.PushEntity(baseUri, new Entity(name, subset));
			}

			try
			{
				dtd.Parse();
			}
			catch (Exception e)
			{
				throw new SgmlParseException(e.Message + dtd.m_current.Context());
			}

			return dtd;
		}