首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

XML 入门及DTD统观

2012-11-23 
XML 入门及DTD概览XMLXML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的

XML 入门及DTD概览
XML

XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言)。XML 被设计用来传输和存储数据。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。

XML特点标记需要自己去创建!一个最大的特殊处(与HTML不同处),它可以创建标签,包括使用中文标签语法更严格!标签必需成对嵌套,并且属性必须有属性值,属性值也必须包含在引号中XML仅仅用来存储数据,不包含与数据显示相关的样式信息(这部分信息可以通过CSS等语言来传递),XML是具有语义的书写XML

(本文规约,XML注释为了方法而不使用<!---->,而使用//,推荐使用XMLSpy编辑及验证XML)

一个完整的XML必须包含XML声明与一个文档根元素!XML声明必须包含版本信息,文档根元素可以是空元素,但一个XML文档只能有一个根元素!

?

?

外部DTD,需要将standalone设成no

?

?

DOCTYPE分析

DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称,如果是内部DTD,则再空一格出现[],在中括号中是文档类型定义的内容. 而对于外部DTD,则又分为私有DTD与公共DTD,私有DTD使用SYSTEM表示,接着是外部DTD的URL. 而公共DTD则使用PUBLIC,接着是DTD公共名称,接着是DTD的URL.下面是一些示例

公共DTD,DTD名称格式为"注册//组织//类型 标签//语言","注册"指示组织是否由国际标准化组织(ISO)注册,+表示是,-表示不是."组织"即组织名称,如:W3C; "类型"一般是DTD,"标签"是指定公开文本描述,即对所引用的公开文本的唯一描述性名称,后面可附带版本号。最后"语言"是DTD语言的ISO 639语言标识符,如:EN表示英文,ZH表示中文,在下面的地址有完整的ISO 639语言标识符列表http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt

?

?

注意:虽然DTD的文件URL可以使用相对URL也可以使用绝对URL,但推荐标准是使用绝对URL.另一方面,对于公共DTD,如果解释器能够识别其名称,则不去查看URL上的DTD文件

开始编写DTDXML 文档构建模块

所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:

元素 , 元素即所说的自定义标签,它是 XML 以及 HTML 文档的主要构建模块。属性 , 属性可提供有关元素的额外信息。属性总是被置于某元素的开始标签中。属性总是以名称/值的形式成对出现的。实体 , 实体是用来定义普通文本的变量。实体引用是对实体的引用。如HTML文档中的&nbsp;即是一个实体引用当文档被 XML 解析器解析时,实体就会被展开。PCDATA , PCDATA 的意思是被解析的字符数据(parsed character data)。可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。PDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。文本中的标签会被当作标记来处理,而实体会被展开。不过,被解析的字符数据不应当包含任何&、< 或者 > 字符;需要使用 &amp;、&lt; 以及 &gt; 实体来分别替换它们。CDATA , CDATA 的意思是字符数据(character data)。CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。CDATA

PCDATA 是指会被解析的字符串,这解析是指将其中的实体引用换成对应的实体内容.也就是说,一般的XML中的文本节点都是PCDATA,当这些文本中要包含一些 XML特殊字符时,需要使用实体引用,当这些字符很少时,使用实体引用还不是很麻烦,而当特殊字符很多时,则需要使用CDATA,即不解析字符串. CDATA 区段开始于 "<![CDATA[",结束于 "]]>",CDATA段中可以包含除CDATA限定符之外的任何字符

元素声明

元素声明使用<!ELEMENT 元素名称 (元素内容)>或<!ELEMENT 元素名称 类别>的语法

?

?

参数实体

参数实体是只在DTD中使用的实体(并且参数实体只能在外部DTD中声明),它的声明语法与一般实体不同处在于其要在实体名称前加个百分号,而引用时则使用%实体名称;的形式

?

?

?

这样,为了区分那些名称相同而含义不同的元素,必须在每个元素名前面加前缀.其实还可以在父级元素上声明默认命名空间,让所有没有前缀子元素的默认使用此命名空间.HTML的命名空间便是一个例子.

<html xmlns="http://www.w3.org/1999/xhtml"></html>

?

?

对于使用命名空间的XML文档,其DTD中对元素的声明也应该包含命名空间前缀(即应与文档中所书写的一致).另外,命名空间不但作用于元素,还作用于属性

?

?

原文链接:http://www.iteye.com/topic/517520

热点排行