[英]Validate xml via dtd, different directory for dtd
我正在尝试通过.dtd验证xml文件。 我写了这个验证器:
public bool Validation(XmlDocument xmlDoc)
{
var xml = XmldocToString(xmlDoc);
var r = new XmlTextReader(new StringReader(xml));
var settings = new XmlReaderSettings();
var sb = new StringBuilder();
settings.ProhibitDtd = false;
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += (a, e) =>
{
sb.AppendLine(e.Message);
_isValid = false;
};
XmlReader validator = XmlReader.Create(r, settings);
while (validator.Read())
{
}
validator.Close();
return _isValid;
}
问题是我必须在解决方案的bin目录中拥有dtd文件。 我想选择一个不同的目录来保存.dtd文件,但我真的找不到如何。
感谢您的时间。
在Xml文件中声明与DTD的关联:
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">
查看该Wiki页面和该站点,以获取有关Xml文件和DTD关联的更多选项和信息。
如何从文档中引用DTD :
假设文档的顶部元素是spec ,并且dtd放置在文件加载目录的子目录dtds中的mydtd文件中 :
<!DOCTYPE spec SYSTEM "dtds/mydtd">
注意事项 :
系统字符串实际上是URI参考(在RFC 2396中定义),因此您可以使用完整的URL字符串来指示DTD在Web上的位置。 如果您希望其他人验证您的文档,这是一件非常好的事情。 也可以关联PUBLIC标识符(魔术字符串),以便在客户端的目录中查找DTD,而不必在网络上定位它。 DTD包含一组元素和属性声明,但它们并未定义文档的根目录。 作为DOCTYPE声明的第一个元素,这明确地告知解析器/验证器。
(摘自这里 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.