【DTD最新新闻】DTD直播|赛程表|积分榜|排名|资料库

DTD

什么是html5?为什么html5里面不需要dtd

HTML5 是对 HTML 标准的第五次修订。其主要的目标是将互联网语义化,以便更好地被人类和机器阅读,并同时提供更好地支持各种媒体的嵌入。

HTML 5 不基于 SGML,因此不需要对 DTD 进行引用。

在 HTML 4.01 中,<!DOCTYPE> 声明引用 DTD,因为 HTML 4.01 基于 SGML。DTD
规定了标记语言的规则,这样浏览器才能正确地呈现内容。 HTML5 不基于 SGML,所以不需要引用 DTD。 在 HTML 4.01 中有三种
<!DOCTYPE> 声明。在 HTML5 中只有一种: <!DOCTYPE html>

XML与DTD的关系?

DTD”(Documnet Type Definition)是XML1.0版规格得一部分,它是XML文件得验证机制,属于XML文件组成得一部分,DTD在XML文件所扮演得角色就是定义XML文件的元素架构、元素标记和属性!

一旦我们定义好DTD,在使用编辑工具如XML Spy 或者验证工具 XML validate (微软网站均可以下载)就可以对编写好的XML文件进行DTD检查内容是否为合法的XML文件内容!

XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的DTD,各公司都能够依照DTD建立XML文件,并且进行验证,如此就可以轻易建立标准一直的交换数据!

顺便介绍一下另一种验证机制 XML Schema ,和DTD相比较,其区别主要如下:

1.DTD拥有自己独特的语法和编写方式,它和XML文件的标记架构完全不同!

2.XML Schema 本身就是一份XML文件,使用标记语法定义其他的XML文件,因为它就是一份XML文件,在学习上不必特别学习DTD语法,而且支持数据类型,能够定义元素的内容!

XML Schema 是由微软所提出的规格草案,目前已成为建议规格,它的目的就是取代DTD成为XML文件下一代的验证机制!

DTD 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。

DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。

XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的DTD,各公司都能够依照DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。

DTD文件是一个ASCII的文本文件,后缀名为.dtd。

DTD增加了XML的有效性,

可以使用DTD校验自己的XML数据

DTD与Schema的比较:他们都用来校验自己的XML数据

DTD 的局限性

DTD不遵守XML语法(写XML文档实例时候用一种语法,写DTD的时候用另外一种语法)

DTD数据类型有限(与数据库数据类型不一致)

DTD不可扩展

DTD不支持命名空间(命名冲突)

Schema的新特性

Schema基于XML语法

Schema可以用能处理XML文档的工具处理

Schema大大扩充了数据类型,可以自定义数据类型

Schema支持元素的继承—Object-Oriented’ish

Schema支持属性组

带dtd 的xml 怎么解析

解决的方法是实现EntityResolver接口,具体代码如下:

import Java.io.ByteArrayInputStream;
import Java.io.IOException;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class IgnoreDTDEntityResolver implements EntityResolver {
 @Override
 public InputSource resolveEntity(String publicId, String systemId)
   throws SAXException, IOException {
        return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
 }
}

然后设置SAXReader 对象如下:

SAXReader reader = new SAXReader();
reader.setEntityResolver(new IgnoreDTDEntityResolver()); // ignore dtd

为您推荐

发表评论

联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1821497181@qq.com

工作时间:周一至周五,10:00-18:30,节假日休息
返回顶部