首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过dtd验证xml,dtd的不同目录

通过dtd验证xml,dtd的不同目录
EN

Stack Overflow用户
提问于 2012-11-09 15:08:56
回答 1查看 2.6K关注 0票数 4

我正在尝试通过.dtd验证xml文件。我已经编写了这个验证器:

代码语言:javascript
复制
    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文件,但我真的找不到方法。

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-09 22:57:58

在Xml文件中声明与DTD的关联:

dtd存储在远程服务器中的示例:

代码语言:javascript
复制
<!DOCTYPE Catalog PUBLIC "abc/Catalog" "http://xyz.abc.org/dtds/catalog.dtd">

有关wiki page文件和that site关联更多选项和信息,请参阅DTD和DTD。

dtd放在本地(系统)的示例:

如何从文档引用DTD:

假设文档的顶部元素是规范,并将dtd放在文件mydtd中,该文件位于加载文档的目录的子目录dtd中。

代码语言:javascript
复制
<!DOCTYPE spec SYSTEM "dtds/mydtd">

备注

系统字符串实际上是一个URI引用(在RFC2396中定义),因此您可以使用完整的URL字符串来指示您的DTD在Web上的位置。如果您希望其他人验证您的文档,这是一件非常好的事情。还可以关联一个公共标识符(一个魔术字符串),以便在客户端的目录中查找DTD,而不必在web上定位它。DTD包含一组元素和属性声明,但它们并没有定义文档的根应该是什么。这将作为DOCTYPE声明的第一个元素显式地告知解析器/验证器。

(节选自)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13303672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档