XML&DTD&XML Schema学习

XML(eXtensible Markup Language)可扩展的标记语言。xml在web service编程中尤为重要。在网络传输中可以作为传输数据的载体。xml作为元语言, 它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的元语言。 它非常适合网络传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。可以实现异构语言、异构平台之间的交互。XML 文档定义方式有:文档类型定义(DTD)和XML Schema。DTD(Document Type Definition)定义了文档的整体结构以及文档的语法(下面会有相应的例子用于理解)应用广泛并有丰富的工具支持。XML Schema的功能更强大,用于定义管理信息等更强大、更丰富的特征。XML能够更细粒度地声明内容,定义约束,方便跨越多种平台的更有意义的传输内容。 它提供了一种描述结构数据的格式,简化了网络中数据交换和表示,使得代码、数据和表示分离,并作为数据交换的标准格式,因此它常被称为智能数据文档。可以 把DTD比作铁铲,而XML Schema就可以说是挖掘机,功能更强大。  XML虽然称作标记语言,但与HTML(超文本标记语言)不同,它的格式更严格,标签必须封闭,显示与内 容分离,XML描述的是文档的内容与语义而不是文档该如何显示。HTML有固定的标签,显示跟内容是一起的,不能创建自己的标签,而XML是可扩展的,内 容与显示分离,每个元素都成对出现,又开始就有结束,而且XML元素的嵌套关系要保持正确(嵌套中后开始的标记要先结束,先开始的标记要后结束),每一个 XML文档中只有一个根元素(Root Element),根元素包含了其他所有的元素。符合XML语法的XML文档在未被DTD或XML Schema验证时叫做良构(well form)的,如果良构的xml文档被DTD或XML Schema验证,这种xml文档称为有效(Valid)的。

<?xml version="1.0" encoding="utf-8"?>
<学生名册>
    <学生 学号="A1">
        <姓名>CIACs</姓名>
        <性别></性别>
        <年龄>22</年龄>
    </学生>

    <学生 学号="A2">
        <姓名>zhihao</姓名>
        <性别></性别>
        <年龄>23</年龄>
    </学生>
</学生名册>

格式良好的xml文档,XMLSpy的输出窗口会输出如下结果

xml的首行一定要是<?xml version="1.0"?>处理指令,且”<?xml”之间不能有空白,xml元素严格区分大小写,文档编码格式默认为“UTF-8”,版本只有1.0。上面的xml文档只能说是格式良好的xml文档,不能说是有效的(Vaild)xml文档。下面我们用两种方式去验证它。

首先是通过DTD来对它进行验证

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 学生名册 [
<!ELEMENT 学生名册 (学生+)>
<!ELEMENT 学生 (名字,性别,年龄)>
<!ELEMENT 名字 (#PCDATA)>
<!ELEMENT 性别 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ATTLIST 学生 学号 ID #REQUIRED>
<!ENTITY  sex "男">
]>

<学生名册>
    <学生 学号="A1">
        <名字>CIACs</名字>
        <性别>&sex;</性别>
        <年龄>22</年龄>
    </学生>
    
    <学生 学号="A2">
        <名字>zhihao</名字>
        <性别>&sex;</性别>
        <年龄>23</年龄>
    </学生>
</学生名册>

如果验证通过的话,XMLSpy输出窗口会有如下的结果显示

否则就算是多了一个空格都不会通过验证。这里我把dtd的验证写到了xml中,当然你也可以把它写到另一个文件中,该文件的后缀名为“.dtd”,然后把它关联到要验证的xml文档中,语法如下

 1 <!DOCTYPE 根元素名 SYSTEM "*.dtd">

 

转载于:https://www.cnblogs.com/bksqmy/p/4526311.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值