DTD和Schema

经过这几天的学习,对XML有了一定的了解,加上之前也用到过一点XML的东西,所以说,到现在为止,可以说会简单使用XML进行数据的存取。

这部分XML视频,第一讲主要讲了XML的一些基本知识。

包括:XML基本格式要求、实体引用、属性、处理指示PI以及基本语法规则

实体引用:这里的实体引用主要解决特殊字符的问题。有的字符是我们会用到但同时又是XML本身赋予它特定含义的,这时候我们就要用到实体引用了。

例如:我们知道XML中标记都是以“<>”这样一种形式出现的,那么当我们需要用到这样的字符的时候用&lt&gt代替。这就是引用。

这里的实体引用和我们编程语言中的实体引用还是有一点差别的,感觉像是常量的意思。

 

处理指示PIPI(processing instruction)用来指挥解析引擎如何解析XML文档内容。必须以“<?”作为开头,以“?>”作为结尾,XML声明语句就是最常见的一种处理指令。简单来说,处理指示就是告诉程序以什么样的样式或者标准去读取数据,或者说这个XML文档是按照那种样式或标准去存储的!

 

而接下来的内容主要是讲了DTDschema

DTD:Document Type Definition

它是关于标记符的语法规则。XML文件的验证机制,属于XML文件组成的一部分,但不是必须的DTD是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能成为数据交换标准

DTD可分为内部DTD和外部DTD

内部DTD,即DTD的被包含在源XML文档中。有验证机制的环境将根据文档中的DTD规则判断XML是否相符。

例如

<?xmlversion="1.0"?>

<!DOCTYPEnote [

<!ELEMENTnote (to,from,heading,body)>

<!ELEMENTto (#PCDATA)>

<!ELEMENTfrom (#PCDATA)>

<!ELEMENTheading (#PCDATA)>

<!ELEMENTbody (#PCDATA)>

]>

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don'tforget me this weekend</body>

</note>

外部DTD,即DTD位于XML源文件的外部,通过特定的语法被封装在一个 DOCTYPE 定义中

例如

这是包含 DTD 的 "note.dtd" 文件:

<!ELEMENTnote (to,from,heading,body)>

<!ELEMENTto (#PCDATA)>

<!ELEMENTfrom (#PCDATA)>

<!ELEMENTheading (#PCDATA)>

<!ELEMENTbody (#PCDATA)>

使用的时候:

<?xmlversion="1.0"?>

<!DOCTYPEnote SYSTEM "note.dtd">

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don'tforget me this weekend!</body>

</note>

外部DTD包括SYSTEMPUBLIC两个关键字指出DTD文件的位置。

SYSTEM 关键字表示文档使用的是私有的DTD文件,就好像是公司的规章制度,只是公司内部人员遵守

PUBLIC 关键字用于公共的DTD,"DTD的名称"称为公共标识符,就好像是多家公司联合出台的规章制度,每个公司都要遵守

通过DTD我们可以验证自身的数据是否合乎自己的意愿;从外部程序接收到的数据是否符合我们的要求;两个机构可一致地使用某个标准的DTD交换数据。

 

SCHEMADTD功能差不多,但是Schema在当前的WEB开发环境下优越很多。因为它本身就是一个有效的XML文档,因而可以更直观地了解XML的结构。除此之外,Schema支持命名空间,内置多种简单和复杂的数据类型,并支持自定义数据类型。由于存在这么多的优点,所以Schema渐渐成为XML应用的统一规范

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值