0

0

详细介绍XML DTD于XML Schema学习的示例代码(图文)

黄舟

黄舟

发布时间:2017-03-22 16:55:42

|

1646人浏览过

|

来源于php中文网

原创

  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作为例子


<学生名册>
    <学生 学号="A1">
        <姓名>CIACs
        <性别>男
        <年龄>22
    

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

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

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

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









]>

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

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

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

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

此处ID值好像要以字符开头,如果只是数字通不过验证。

学生信息中的性别,我把它定义为实体,然后通过实体引用它的值,要注意实体引用的语法是"&实体名;"。

下面通过XML Schema方式来验证

要验证的xml文档


<学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="学生名册.xsd">
    <学生 学号="A1">
        <姓名>CIACs
        <性别>男
        <年龄>22
    

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

XML Schema验证文档



    
        
            
                
            
        
    
    
        
            
                
                
                    
                        
                            
                            
                        
                    
                
                
                    
                        
                            
                            
                        
                    
                
            
            
        
    

XMLSpy输出窗口的输出结果

 

要验证的xml的文档通过在根元素开始标签中加入下面的信息关联XML Schema文档

 1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="学生名册.xsd"

以上的文档都是放在同一路径下的,所以直接引用文件名就行了。

从上面的两种验证方式我们可以很清楚的看出DTD跟XML Schema验证的区别,两者同样是进行xml文档验证的,XML Schema提供了比DTD更为强大的功能和更细粒度的数据类型,而且Schema还可以自定义数据类型,其本身就是xml文件,但dtd的语法跟xml的语法不同。虽然从代码量来看Schema大于dtd,但是当你学过Schema后你就会更喜欢用Schema。

学好xml和它的验证方式,对于后面学习web service编程很重要。

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
XML教程
XML教程

共142课时 | 5.6万人学习

XQuery 教程
XQuery 教程

共12课时 | 3.6万人学习

XLink  教程
XLink 教程

共7课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号