DTD验证XML文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DTD验证XML文档相关的知识,希望对你有一定的参考价值。

DTD验证XML文档
        1.DTD简介:DTD是Document Type Definition的缩写,即文档定义
            1.1:DTD的内容包含:
                    元素定义规则
                    元素之间的关系规则
                    属性的定义规则
            1.2:DTD的作用如下:
                    DTD使每个XML文件可以携带一个自身格式的描述
                    DTD使不同组织的人可以使用一个通用DTD来交换数据
                    DTD使应用程序可以使用一个标准DTD效验从外部接收的XML数据会否有效
        2.声明DTD
                语法:<!DOCTYPE 根元素 [定义内容]>
                
                        eg:

 1                 <?xml version="1.0"?>
 2                             <!DOCTYPE poem[
 3                                 <!ELEMENT poem (author,title,content)>
 4                                 <!ELEMENT author (#PCDATA)>
 5                                 <!ELEMENT title (#PCDATA)>
 6                                 <!ELEMENT content (#PCDATA)>
 7                             ]>
 8                             <poem>
 9                                 <author>王维</author>
10                                 <title>鹿柴</title>
11                                 <content>空山不见人,但闻人语响。返景入深林,复照青苔上。</content>
12                             </poem> 

 


                            
        3.使用外部DTD验证XML
                语法:<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
                
                eg:poems.dtd
                      

                        <!ELEMENT poems (poem*)>
                        <!ELEMENT poem (title,author,year,content)>
                        <!ELEMENT title (#PCDATA)>
                        <!ELEMENT author (#PCDATA)>
                        <!ELEMENT year (#PCDATA)>
                        <!ELEMENT content (#PCDATA)>                

 


                        
                使用外部DTD验证描述诗集的XML
                      

 1                      <?xml version="1.0"?>
 2                         <!DOCTYPE poems SYSTEM "poems.dtd">
 3                         <poems createYear="2011">
 4                             <poem>
 5                                 <title>春晓</title>
 6                                 <author>孟浩然/author>
 7                                 <year>732</year>
 8                                 <content>春眠不觉晓</content>
 9                             </poem>
10                         </poems>        

 


        
        4.DTD元素
                4.1:语法:<!ELEMENT NAME CONTENT>
                             ELEMENT:关键字
                             NAME:元素名称
                             CONTENT:元素类型
                4.2:常用的元素类型
                        #PCDATA,可以包含任何字符数据,但是不能在其中包含任何子元素
                            eg:<!ELEMENT title (#PCDATA)>
                        纯元素类型,只包含子元素,并且这些子元素没有文本
                            eg:<!ELEMENT poems (poem*)>
                4.3:DTD元素中某些符号的用途
                        符号        用途                示例                                    示例说明
                        ()            用来给元素分组        (古龙|金庸|梁羽生),(王苏|玉洁),毛毛        表示分成三组
                        |            在列出的对象中选择一个    (男人|女人)                        两者选其一
                        ,            对象必须按指定的顺序出现  (西瓜,苹果,香蕉)                    三个都必须出现
                        *            允许出现(0到多次)    (爱好*)                                    爱好可以出现0到多次
                        ?            允许出现(0次到1次)    (菜鸟?)            表示可出现也可以不出现,如果出现最多一次
                        +            允许出现(1次到多次) (成员+)            表示必须出现,而且可以出现多次
                4.4:DTD属性
                        1.语法:<!ATTLIST 元素名称 属性名称 属性类型 属性默认值>
                        2.DTD元素中属性类型的描述:
                            属性类型                            说明
                            CDATA                                表示字符数据
                            ID                                    表示唯一的id
                            IDREF                                表示为另一个元素的id
                            IDREFS                                表示其他id的列表
                            ENTITY                                表示一个实体
                            ENTITLES                            表示一个实体列表
                        3.DTD元素中属性值的描述
                            值                                    说明
                            #REQUIRED                            属性值是必须的
                            #IMPLIED                            属性值不是必须的
                            #FIXED                                属性值是固定的
                      eg:   

 1                 <!DOCTYPE mystruts[
 2                                 <!ELEMENT mystruts (actions)>
 3                                 <!ELEMENT actions (action*)>    
 4                                 <!ELEMENT action (result*)>
 5                                 <!ATTLIST action    
 6                                         name CDATA #REQUIRED
 7                                         class CDATA #REQUIRED>
 8                                 <!ELEMENT result (#PCDATA)>
 9                                 <!ATTLIST result
10                                         name CDATA #IMPLIED
11                                         redirect (true|false) "false">
12                             ]>
13                             <mystruts>
14                                 <actions>
15                                     <action name="register" class="com.RegisterAction">
16                                         <result name="success">register_success.jsp</result>
17                                         <result name="input">register.jsp</result>
18                                     </action>
19                                 </actions>
20                             </mystruts>

 

以上是关于DTD验证XML文档的主要内容,如果未能解决你的问题,请参考以下文章

XML的验证模式DTD与XSD的区别

XML DTD

java - 如何将本地DTD文件的验证应用于java中的xml文件?

XML验证

基础-XML常用的两种验证模式

XML-Schema验证