`

Xml基础详解和DTD验证

阅读更多
Xml基础详解
Xml:可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
Xml的基本语法:
1 任何的起始标签都必须有一个结束标签。   
2 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<tag/ >。XML解析器会将其翻译成<tag></tag>。   
3 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。   
4 所有的特性都必须有值。   
5 所有的特性都必须在值的周围加上双引号。
6.对于XML文档来说,<?处理指令必须要顶格写,前面不能有任何的空白。
7. XML元素可以具有属性,属性的形式为:
属性名=”属性值”,比如gender=”male”
属性值需要使用单引号或双引号括起来。多个属性之间使用空格分开。
8. 通过样式,我们可以实现XML内容与展现形式的分离
9. XML的注释:<!-- comments --> ,注释不允许嵌套
10. 在一个元素上,相同的属性只能出现一次。
注意以下几点:
1.XML中的每个元素都是成对出现的(有开始,有结束),<student> </student>,XML中的元素嵌套关系要保持正确性,即先开始的标记要先结束,后开始的标记要后结束。
2. 每一个XML文档都有且只有一个根元素(Root Element)。所谓根元素,就是唯一一个包含了其他所有元素的元素。
3. XML描述的是文档的内容与语义,而不是文档应当如何显示。
4.格式正规(well formed)的XML文档。符合XML语法要求的XML文档就是格式正规的XML文档。
5. 有效的(valid)XML文档。首先XML文档是个格式正规的XML文档,然后又需要满足DTD的要求,这样的XML文档称为有效的XML文档
6. #PCDATA (Parsed Character Data),可解析的字符数据。


XML文件的验证机制——DTD
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。   
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
内部的 DOCTYPE 声明
    假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在个DOCTYPE 声明中:
<!DOCTYPE根元素 [元素声明]>
带有 DTD 的 XML 文档实例   
 <?xml version="1.0"?>   
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>   
<!ELEMENT to (#PCDATA)>   
<!ELEMENT from (#PCDATA)>   
<!ELEMENT heading (#PCDATA)>   
<!ELEMENT body (#PCDATA)> ]>   
<note>   
    <to>Tove</to>   
    <from>Jani</from>   
    <heading>Reminder</heading>   
    <body>Don't forget me this weekend</body>   
</note>   
以上 DTD 解释如下:!DOCTYPE note (第二行)定义此文档是 note 类型的文档。   
!ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"   
!ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型   
!ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型   
!ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型   
!ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型
外部文档声明
假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:   <!DOCTYPE 根元素 SYSTEM "文件名">   这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:   
[html] view plaincopyprint?
<?xml version="1.0"?>    
 
<!DOCTYPE note SYSTEM "note.dtd">    
 
<note>    
 
<to>Tove</to>    
 
<from>Jani</from>    
 
<heading>Reminder</heading>    
 
<body>Don't forget me this weekend!</body>    
 
</note>  
[html] view plaincopyprint?
<?xml version="1.0"?>    
 
<!DOCTYPE note SYSTEM "note.dtd">    
 
<note>    
 
<to>Tove</to>    
 
<from>Jani</from>    
 
<heading>Reminder</heading>    
 
<body>Don't forget me this weekend!</body>    
 
</note>  

这是包含 DTD 的 "note.dtd" 文件:   
[html] view plaincopyprint?
<!ELEMENT note (to,from,heading,body)>    
 
<!ELEMENT to (#PCDATA)>    
 
<!ELEMENT from (#PCDATA)>    
 
<!ELEMENT heading (#PCDATA)>    
 
<!ELEMENT body (#PCDATA)> 
[html] view plaincopyprint?
<!ELEMENT note (to,from,heading,body)>    
 
<!ELEMENT to (#PCDATA)>    
 
<!ELEMENT from (#PCDATA)>    
 
<!ELEMENT heading (#PCDATA)>    
 
<!ELEMENT body (#PCDATA)> 


下面来看一下DTD在xml每一个模块中的定义:
在一个 DTD 中,元素通过元素声明来进行声明。   
声明一个元素   
在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:   
<!ELEMENT 元素名称 类别>   
或者 <!ELEMENT 元素名称 (元素内容)>   
空元素   
空元素通过类别关键词EMPTY进行声明:   
<!ELEMENT 元素名称 EMPTY>   
只有 PCDATA 的元素   
只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:   <!ELEMENT 元素名称 (#PCDATA)>   
带有任何内容的元素   
通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:   <!ELEMENT 元素名称 ANY>   
带有子元素(序列)的元素   
带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:   <!ELEMENT 元素名称 (子元素名称 1)>   或者   <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
相同的元素至少出现一次的声明
 语法格式为: <!ELEMENT element-name (child-name+)>   
例:   <!ELEMENT note (message+)>   
例中的+是指子元素message必须在被包含的note元素里出现一次或者多次。
相同的元素不出现或者多次出现的声明
语法格式为:   
<!ELEMENT element-name (child-name*)>   
例:   <!ELEMENT note (message*)>  
例中的*是指子元素message能够在被包含的note元素里不出现或者出现多次。
属性
在 DTD 中,属性通过 ATTLIST 声明来进行声明。  
声明属性   
属性声明拥使用下列语法:   
<!ATTLIST 元素名称 属性名称 属性类型 默认值>   
以下是属性类型的选项:   
类型 描述   
CDATA 值为字符数据 (character data)   
(en1|en2|..) 此值是枚举列表中的一个值   
ID 值为唯一的 id   
IDREF 值为另外一个元素的 id   
IDREFS 值为其他 id 的列表   
NMTOKEN 值为合法的 XML 名称   
NMTOKENS 值为合法的 XML 名称的列表  
ENTITY 值是一个实体   
ENTITIES 值是一个实体列表   
NOTATION 此值是符号的名称   
xml: 值是一个预定义的 XML 值   
默认值参数可使用下列值:   
值 解释   
值 属性的默认值   
#REQUIRED 属性值是必需的   
#IMPLIED 属性不是必需的   
#FIXED value 属性值是固定的   
规定一个默认的属性值   
DTD:   
<!ELEMENT square EMPTY>   
<!ATTLIST square width CDATA "0">   
合法的 XML:   
<square width="100" />   
在上面的例子中,"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。
实体
实体是用于定义引用普通文本或特殊字符的快捷方式的变量。   实体引用是对实体的引用。   
实体可在内部或外部进行声明。
一个内部实体声明
语法:   
<!ENTITY 实体名称 "实体的值">   
DTD 例子:   
<!ENTITY writer "Bill Gates">   
<!ENTITY copyright "Copyright >
具体的url">XML 例子:   <author>&writer;©right;</author>
注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。
一个外部实体声明
语法:   
<!ENTITY 实体名称 SYSTEM "URI/URL">   
DTD 例子:   
<!ENTITY writer SYSTEM "具体的url">   
<!ENTITY copyright SYSTEM "具体的url">XML
例子: <author>&writer;©right;</author>Xml基础详解和DTD验证

转自:http://blog.csdn.net/long2010yu2010/article/details/7529648
分享到:
评论

相关推荐

    DTD验证XML详解

    了解并熟练运用DTD验证XML对于开发和维护高质量的XML文档至关重要。无论是简单的数据结构还是复杂的文档交互,DTD都能为数据的准确性和一致性提供坚实的保障。通过学习和实践,你可以更好地理解和掌握这一关键技术。

    XML的DTD详解

    1. **一致性检查**:XML解析器会根据DTD验证文档,确保文档符合定义的规则,避免语法错误。 2. **文档结构清晰**:定义了元素和属性,使得文档结构明确,易于理解和处理。 3. **跨平台兼容**:DTD是基于文本的,...

    xml dtd html 源程序

    通过学习如何编写和使用DTD,开发者可以确保XML文档符合预设的规范,便于数据的验证和交换。 3. HTML与XML的结合:HTML通常用于展示数据,而XML则擅长存储和传输数据。通过使用XSLT(Extensible Stylesheet ...

    Java Web开发详解:XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用/孙鑫编著

    在知识的讲解上,《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书...

    web.xml配置详解

    DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;` 指定了Servlet规范的版本(例如2.3)和DTD,用于验证文件的结构。 2. **元素详解...

    部署描述文件web.xml配置详解.doc

    2. **DOCTYPE声明**:指定了文档类型定义(DTD),用于验证XML文档的正确性。 ```xml &lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ...

    XML学习基础与详解

    综上所述,XML学习基础包括理解其基本概念、语法规则、验证机制、解析方法以及相关工具,这些是深入掌握XML并有效利用其功能的关键。在实践中,通过熟练运用XML,我们可以构建更加灵活、可维护的数据交换系统。

    xml技术详解ppt

    DTD(Document Type Definition)是XML的一个早期验证机制,用于定义XML文档的结构和元素。而Schema则是更现代且功能更强大的验证工具,提供了更复杂的数据类型和更灵活的结构定义。 4. XSL,XSLT和XPath XSL...

    web.xml 详解

    ### Web.xml 详解 #### 1. 定义头和根元素 在开始解析`web.xml`文件前,我们先了解其基本结构。部署描述符文件即`web.xml`文件,像所有XML文件一样,必须以一个XML头开始。这个头声明指定了可用的XML版本及文件的...

    xml中dtd总结

    ### XML中的DTD详解 在XML(可扩展标记语言)中,DTD(Document Type Definition,文档类型定义)是一种用于定义XML文档结构的语言。它定义了XML文档中允许的元素、属性和实体等规则,确保XML文档格式正确且符合...

    XML精通+深入详解

    总结起来,"XML精通+深入详解"的学习资料将引导读者从基础到高级,全面掌握XML的使用,包括其语法、验证工具、数据处理和与其他技术(如.NET的DataSet)的集成。对于希望在IT领域中涉及数据交换、存储和处理的开发者...

    XML文件格式语法及DTD

    - **Well-Formed解析器**:仅检查文件是否遵循XML基本语法,不涉及DTD验证。 - **Validating解析器**:不仅检查基本语法,还依据DTD进行结构验证。 - **文件格式定义(DTD)**:DTD全称为Document Type Definition...

    Web.xml配置详解

    首先,`web.xml`文件的结构遵循XML规范,文件以XML头开始,声明XML版本和字符编码,紧接着是DOCTYPE声明,用于指定servlet规范的版本和DTD,确保解析器能正确解析文件内容。`web-app`是整个文件的根元素,需要注意的...

    XML技术详解与实践

    - **编辑器**: 如Oxygen XML Editor、XMLSpy等,提供了强大的XML编辑和验证功能。 - **解析器**: 如DOM解析器、SAX(Simple API for XML)解析器,用于读取和解析XML文档。 - **验证工具**: 用于检查XML文档是否...

    XML的Schema详解

    XML Schema详解.ppt这个文件很可能包含了详细的PPT讲解,涵盖了XML Schema的基础概念、语法、实例分析和最佳实践等内容。通过深入学习这个PPT,你可以更好地理解和掌握XML Schema的使用,提升XML文档的管理和开发...

    JSP基于dom解析xml实例详解.docx

    同时,为了确保XML文件的合法性,通常需要进行XML验证,这可以通过`DocumentBuilderFactory`的`setValidating(true)`方法实现,或者使用XML Schema(XSD)或DTD(Document Type Definition)进行验证。 总的来说,...

    web.xml文件详解

    接着是DOCTYPE声明,这引用了DTD(Document Type Definition),即Web应用2.3规范的DTD,用于验证web.xml文件的语法: ```xml &lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ...

    web.xml的详解

    ### Web.xml详解 在Java Web开发中,`web.xml`是一个至关重要的配置文件,它用于定义Web应用程序的各种组件和配置信息。本文将详细介绍`web.xml`的结构、元素及其功能。 #### 一、Web.xml的基本结构与DTD `web....

Global site tag (gtag.js) - Google Analytics