我正在尝试通过.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;
}问题是我必须将dtd文件放在解决方案的bin目录中。我想选择一个不同的目录来保存.dtd文件,但我真的找不到方法。
谢谢您抽时间见我。
发布于 2012-11-09 22:57:58
在Xml文件中声明与DTD的关联:
dtd存储在远程服务器中的示例:
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">有关wiki page文件和that site关联更多选项和信息,请参阅DTD和DTD。
dtd放在本地(系统)的示例:
如何从文档引用DTD:
假设文档的顶部元素是规范,并将dtd放在文件mydtd中,该文件位于加载文档的目录的子目录dtd中。:
<!DOCTYPE spec SYSTEM "dtds/mydtd">备注:
系统字符串实际上是一个URI引用(在RFC2396中定义),因此您可以使用完整的URL字符串来指示您的DTD在Web上的位置。如果您希望其他人验证您的文档,这是一件非常好的事情。还可以关联一个公共标识符(一个魔术字符串),以便在客户端的目录中查找DTD,而不必在web上定位它。DTD包含一组元素和属性声明,但它们并没有定义文档的根应该是什么。这将作为DOCTYPE声明的第一个元素显式地告知解析器/验证器。
(节选自)
https://stackoverflow.com/questions/13303672
复制相似问题