【XML】标准化DTD与Schema

简介: 【XML】标准化DTD与Schema

前边说了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。

 

   找个例子来看看:

 

1. <?xmlversion="1.0" encoding="utf-8"?><!--声明,说明版本号和编码方式-->
2. 
3. <!--元素声明格式:<!ELEMENT元素名称(元素内容)> 或者 <!ELEMENT 元素名称 类别> -->
4. <!ELEMENT书籍列表(计算机书籍)*>
5. <!ELEMENT计算机书籍(书名,价格,简要介绍)>
6. <!ELEMENT书名(#PCDATA)>
7. <!ELEMENT价格(#PCDATA)>
8. <!ELEMENT简要介绍(#PCDATA)>


 

   子元素以“,”分隔,子元素必须按照定义的顺序出现。

   子元素以“|”分隔,子元素不要求顺序。

 

 

DTD声明中的逻辑关系符号对应表:

 

属性的类型:

 

属性默认值:

 

【DTD内容引用】

   两种方式:内置、外部。

   与HTML引用CSS类似,可以把CSS内容与HTML内容写在同一个文档中,也可以把分别写在不同的文档中,在HTML中添加对CSS文档的引用。

 

1. <?xmlversion="1.0" encoding="utf-8"?><!--声明,说明版本号和编码方式-->
2. 
3. <!-- 内置DTD内容 -->
4. <!DOCTYPE 书籍列表[
5. <!--元素声明格式:<!ELEMENT元素名称(元素内容)> 或者 <!ELEMENT 元素名称 类别> -->
6. <!ELEMENT书籍列表(计算机书籍)*>
7. <!ELEMENT计算机书籍(书名,价格,简要介绍)>
8. <!ELEMENT书名(#PCDATA)>
9. <!ELEMENT价格(#PCDATA)>
10. <!ELEMENT简要介绍(#PCDATA)>
11. ]>
12. 
13. <!-- 外部DTD引用 -->
14. <!DOCTYPE书籍列表 SYSTEM "book.dtd">
15. 
16. <!--说明:内置DTD和外部DTD二选一-->
17. 
18. <!-- XML显示内容 -->
19. <书籍列表>  <!--开始标签 --><!--唯一的根元素 -->
20. <计算机书籍>
21. <书名isbn="xxx1234567">XML应用大全</书名> <!--isbn="xxx1234567" 是属性 -->
22. <价格><<39.00>></价格><!--> 实体引用表示">"-->
23. </计算机书籍>
24. <计算机书籍>
25. <书名>Java应用大全</书名>
26. <价格>39.00</价格>
27. </计算机书籍>
28. <计算机书籍>
29. <书名><![CDATA[Orcale应用<<<<3>>>大>>>>>>'''''''全]]></书名><!--<![CDATA[]]>所有内容原样显示,按字符数据对待 -->
30. <价格>39.00</价格>
31. <简要介绍>介绍Oracle基础及高级应用知识</简要介绍>
32. </计算机书籍>
33. </书籍列表><!--结束标签-->



【错误总结】

       就是上边的代码,出现了如下错误:

   元素名称后所需空间(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文件的定义】

 

1. <?xmlversion="1.0" ?>
2. <xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
3. <xs:elementname="email">
4. <xs:complexType>
5. <xs:sequence>
6. <xs:elementname="to" type="xs:string"/>
7. <xs:elementname="from" type="xs:string"/>
8. <xs:elementname="title" type="xs:string"/>
9. <xs:elementname="body" type="xs:string"/>
10. <xs:elementname="date" type="xs:date"/>
11. </xs:sequence>
12. </xs:complexType>
13. </xs:element>
14. </xs:schema>



 

 

【Schema文件解析】

 

 

 

【Schema文件的引用】

1. <?xmlversion="1.0" encoding="utf-8"?>
2. <emailxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3. xsi:noNamespaceSchemaLocation="email.xsd">
4. </email>


 

       IE不能验证XML是否符合Schema,可以验证XML是否符合DTD。Schema验证需要专有的工具软件或者编程进行验证。是啥工具先不考虑呢,留给以后吧。

 

 

【总结】

 

   一句话关于规则:规则可以是这种形式,也可以是那种形式,形式不重要,重要的是有规则。

是的吧,重要的不是这种统一是什么,重要的是统一起来,消灭分歧与误解。

   有这样一个故事:传说中很早的时候人们想登上天见神仙,于是开始举全人类之力修筑通天高塔。眼见高塔越修越高,离天越来越近,神仙们焦躁了。于是他们找到了一个方法,来阻止人们修筑高塔。于是让人类产生了语言。

   虽然不可能达到完全一致,但是一致化,标准化还是很用的。


相关文章
|
4月前
|
XML 数据格式
DTD和XML Schema之间的区别?
【8月更文挑战第22天】
74 0
|
7月前
|
XML 数据格式
XML Schema 复杂元素类型详解:定义及示例解析
在XML Schema(XSD)中,复杂元素包含其他元素和/或属性,分为4类:空元素、仅含元素、仅含文本和既含元素也含文本。定义复杂元素可通过直接声明或引用预定义的复杂类型。复杂空元素仅含属性,而仅含元素的类型则只包含其他子元素。XSD提供了`&lt;xs:sequence&gt;`、`&lt;xs:all&gt;`、`&lt;xs:choice&gt;`等指示器来规定元素顺序和出现次数,以及`&lt;xs:attributeGroup&gt;`和`&lt;xs:group&gt;`来组织元素和属性。
239 7
|
7月前
|
XML 数据格式
XML Schema 字符串数据类型及约束详解
XML中的字符串数据类型表示字符序列,包括换行、回车和制表符。处理器不修改值。`normalizedString`去除这些特殊字符,`token`则进一步移除前导和尾随空格及多余空格。字符串类型可使用枚举、长度等限制。`date`和`dateTime`数据类型表示日期和时间,`duration`表示时间间隔。数值类型如`decimal`和`integer`用于数值,布尔型表示真或假。还有如`base64Binary`和`anyURI`等其他数据类型。元素和数据类型可以有各种约束,如最大值、最小值和模式匹配。
92 0
|
7月前
|
XML JavaScript 数据格式
XML Schema(XSD)详解:定义 XML 文档结构合法性的完整指南
XML Schema(XSD)是用于定义XML文档结构的规范,它描述了元素、属性及其顺序、数据类型和约束。与DTD相比,XML Schema支持更多数据类型,如字符串、日期等,并且是基于XML的,允许扩展和重用。学习XML Schema有助于确保数据通信时双方对内容的理解一致,通过验证防止错误。示例展示了如何定义一个`note`元素,包含`to`, `from`, `heading`和`body`子元素,都是字符串类型。XML文档可以通过引用XML Schema进行验证,确保内容符合预设模式。
531 0
|
7月前
|
SQL Java 数据库连接
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
159 0
|
XML 数据格式
【XML学习 三】XML Schema原理及使用
【XML学习 三】XML Schema原理及使用
126 0
|
SQL XML 存储
MyCat - 配置文件详解 - schema.xml 之 schema 配置详解 | 学习笔记
快速学习 MyCat - 配置文件详解 - schema.xml 之 schema 配置详解
MyCat - 配置文件详解 - schema.xml 之 schema 配置详解 | 学习笔记
|
XML 程序员 数据格式
【XML】学习笔记第四章-schema
【XML】学习笔记第四章-schema
164 0
【XML】学习笔记第四章-schema
|
XML 安全 Java
Unable to locate Spring for XML schema namespace http://www.springframework.org/schema/security]
Unable to locate Spring for XML schema namespace http://www.springframework.org/schema/security]
105 0
|
2月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
61 1