【XML】标准化DTD与Schema
2016-05-02 21:33
639 查看
前边说了XML与HTML有一点不同的地方,是XML的标准可以自己设定,HTML的标签标准都是统一规定的。那么自己设置XML,人多了就会产生差异,比如日期,可以写成:05-02-2016,也可以写成2016-05-02,那么在双方通信的时候如果格式定义不统一,解析起来就会很麻烦。既然没有给出标准,那就给你一个语言吧,你们自己商量好标准,于是就有了DTD。用着用着又有些不顺手的地方,于是就有了更加强大方便的Schema。
下边我们介绍一下这两种XML的标准化语言。
【DTD】
DTD类似书面语言的语法,书面语法规定主谓宾的先后顺序。而DTD规定了XML语法,比如元素的先后顺序,元素的个数等。总的来说,是为了更好的数据交换,而进行了一些规则设置DTD。行业或企业可以自己制定自己的标准DTD。
【DTD包括哪些内容】
与XML文档类似,DTD文档包括这么几部分:声明、元素、实体、属性、CDATA、PCDATA。
找个例子来看看:
子元素以“,”分隔,子元素必须按照定义的顺序出现。
子元素以“|”分隔,子元素不要求顺序。
DTD声明中的逻辑关系符号对应表:
属性的类型:
属性默认值:
【DTD内容引用】
两种方式:内置、外部。
与HTML引用CSS类似,可以把CSS内容与HTML内容写在同一个文档中,也可以把分别写在不同的文档中,在HTML中添加对CSS文档的引用。
【错误总结】
就是上边的代码,出现了如下错误:
元素名称后所需空间(Space requiredafter the element name)
错误原因:
目前正在查找中,还请各位高手们指点。网上查资料有的原因是缺少空格,没有解决掉。
【Schema是什么】
Schema同DTD的作用一样,用来描述XML文档的结构,都用来验证XML文档的合法性。
Schema是基于XML的DTD替代者,XML
Schema Definition(XSD)
【对比DTD,Schema的优点】
本身就是XML文件格式,使用XML语法。而DTD本身不是XML文件格式,要应用DTD的话要学习新的语言,虽然很容易学,可能达到同样的效果,当然是不用学新的好了,这是语言统一了。可以用XML编辑器和解析器来编辑解析Schema文件,工具也统一了。统一就方便啊。
可针对未来的需求进行扩展
更完善,功能更强大
支持数据类型定义,也就是可以定义数据是字符型还是整数型,字符串是10个字节还是20个字节等等的定义。
.xsd是Schema文件的扩展名。
.dtd是DTD文件的扩展名。
.xml是XML文件的扩展名。
【Schema文件的定义】
<?xmlversion="1.0" ?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:elementname="email">
<xs:complexType>
<xs:sequence>
<xs:elementname="to" type="xs:string"/>
<xs:elementname="from" type="xs:string"/>
<xs:elementname="title" type="xs:string"/>
<xs:elementname="body" type="xs:string"/>
<xs:elementname="date" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
【Schema文件解析】
【Schema文件的引用】
<?xmlversion="1.0" encoding="utf-8"?>
<emailxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="email.xsd">
</email>
IE不能验证XML是否符合Schema,可以验证XML是否符合DTD。Schema验证需要专有的工具软件或者编程进行验证。是啥工具先不考虑呢,留给以后吧。
【总结】
一句话关于规则:规则可以是这种形式,也可以是那种形式,形式不重要,重要的是有规则。
是的吧,重要的不是这种统一是什么,重要的是统一起来,消灭分歧与误解。
有这样一个故事:传说中很早的时候人们想登上天见神仙,于是开始举全人类之力修筑通天高塔。眼见高塔越修越高,离天越来越近,神仙们焦躁了。于是他们找到了一个方法,来阻止人们修筑高塔。于是让人类产生了语言。
虽然不可能达到完全一致,但是一致化,标准化还是很用的。
下边我们介绍一下这两种XML的标准化语言。
【DTD】
DTD类似书面语言的语法,书面语法规定主谓宾的先后顺序。而DTD规定了XML语法,比如元素的先后顺序,元素的个数等。总的来说,是为了更好的数据交换,而进行了一些规则设置DTD。行业或企业可以自己制定自己的标准DTD。
【DTD包括哪些内容】
与XML文档类似,DTD文档包括这么几部分:声明、元素、实体、属性、CDATA、PCDATA。
找个例子来看看:
<?xmlversion="1.0" encoding="utf-8"?><!--声明,说明版本号和编码方式--> <!--元素声明格式:<!ELEMENT元素名称(元素内容)> 或者 <!ELEMENT 元素名称 类别> --> <!ELEMENT书籍列表(计算机书籍)*> <!ELEMENT计算机书籍(书名,价格,简要介绍)> <!ELEMENT书名(#PCDATA)> <!ELEMENT价格(#PCDATA)> <!ELEMENT简要介绍(#PCDATA)>
子元素以“,”分隔,子元素必须按照定义的顺序出现。
子元素以“|”分隔,子元素不要求顺序。
DTD声明中的逻辑关系符号对应表:
属性的类型:
属性默认值:
【DTD内容引用】
两种方式:内置、外部。
与HTML引用CSS类似,可以把CSS内容与HTML内容写在同一个文档中,也可以把分别写在不同的文档中,在HTML中添加对CSS文档的引用。
<?xmlversion="1.0" encoding="utf-8"?><!--声明,说明版本号和编码方式--> <!-- 内置DTD内容 --> <!DOCTYPE 书籍列表[ <!--元素声明格式:<!ELEMENT元素名称(元素内容)> 或者 <!ELEMENT 元素名称 类别> --> <!ELEMENT书籍列表(计算机书籍)*> <!ELEMENT计算机书籍(书名,价格,简要介绍)> <!ELEMENT书名(#PCDATA)> <!ELEMENT价格(#PCDATA)> <!ELEMENT简要介绍(#PCDATA)> ]> <!-- 外部DTD引用 --> <!DOCTYPE书籍列表 SYSTEM "book.dtd"> <!--说明:内置DTD和外部DTD二选一--> <!-- XML显示内容 --> <书籍列表> <!--开始标签 --><!--唯一的根元素 --> <计算机书籍> <书名isbn="xxx1234567">XML应用大全</书名> <!--isbn="xxx1234567" 是属性 --> <价格><<39.00>></价格><!--> 实体引用表示">"--> </计算机书籍> <计算机书籍> <书名>Java应用大全</书名> <价格>39.00</价格> </计算机书籍> <计算机书籍> <书名><![CDATA[Orcale应用<<<<3>>>大>>>>>>'''''''全]]></书名><!--<![CDATA[]]>所有内容原样显示,按字符数据对待 --> <价格>39.00</价格> <简要介绍>介绍Oracle基础及高级应用知识</简要介绍> </计算机书籍> </书籍列表><!--结束标签-->
【错误总结】
就是上边的代码,出现了如下错误:
元素名称后所需空间(Space requiredafter the element name)
错误原因:
目前正在查找中,还请各位高手们指点。网上查资料有的原因是缺少空格,没有解决掉。
【Schema是什么】
Schema同DTD的作用一样,用来描述XML文档的结构,都用来验证XML文档的合法性。
Schema是基于XML的DTD替代者,XML
Schema Definition(XSD)
【对比DTD,Schema的优点】
本身就是XML文件格式,使用XML语法。而DTD本身不是XML文件格式,要应用DTD的话要学习新的语言,虽然很容易学,可能达到同样的效果,当然是不用学新的好了,这是语言统一了。可以用XML编辑器和解析器来编辑解析Schema文件,工具也统一了。统一就方便啊。
可针对未来的需求进行扩展
更完善,功能更强大
支持数据类型定义,也就是可以定义数据是字符型还是整数型,字符串是10个字节还是20个字节等等的定义。
.xsd是Schema文件的扩展名。
.dtd是DTD文件的扩展名。
.xml是XML文件的扩展名。
【Schema文件的定义】
<?xmlversion="1.0" ?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:elementname="email">
<xs:complexType>
<xs:sequence>
<xs:elementname="to" type="xs:string"/>
<xs:elementname="from" type="xs:string"/>
<xs:elementname="title" type="xs:string"/>
<xs:elementname="body" type="xs:string"/>
<xs:elementname="date" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
【Schema文件解析】
【Schema文件的引用】
<?xmlversion="1.0" encoding="utf-8"?>
<emailxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="email.xsd">
</email>
IE不能验证XML是否符合Schema,可以验证XML是否符合DTD。Schema验证需要专有的工具软件或者编程进行验证。是啥工具先不考虑呢,留给以后吧。
【总结】
一句话关于规则:规则可以是这种形式,也可以是那种形式,形式不重要,重要的是有规则。
是的吧,重要的不是这种统一是什么,重要的是统一起来,消灭分歧与误解。
有这样一个故事:传说中很早的时候人们想登上天见神仙,于是开始举全人类之力修筑通天高塔。眼见高塔越修越高,离天越来越近,神仙们焦躁了。于是他们找到了一个方法,来阻止人们修筑高塔。于是让人类产生了语言。
虽然不可能达到完全一致,但是一致化,标准化还是很用的。
相关文章推荐
- XML 与 JSON 优劣对比
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- 实例解析Ruby程序中调用REXML来解析XML格式数据的用法
- Ruby中XML格式数据处理库REXML的使用方法指南
- C#针对xml基本操作及保存配置文件应用实例
- Ruby使用REXML库来解析xml格式数据的方法
- Ruby程序中创建和解析XML文件的方法
- Ruby的XML格式数据解析库Nokogiri的使用进阶
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法
- EBS xml publisher中文乱码问题及解决办法
- C#中的Linq to Xml详解
- C#操作XML文件实例汇总
- SQL Server中的XML数据进行insert、update、delete
- Ruby中使用Nokogiri包来操作XML格式数据的教程
- C#实现将文件转换为XML的方法