xml基础,xml基础教程清华大学出版社电子版

http://www.itjxue.com  2023-01-04 20:20  来源:未知  点击次数: 

XML入门基础:XML的语法规则

提纲 一 XML语法规则 二 元素的语法 三 注释的语法 四 CDATA的语法 五 Namespaces的语法 六 entity的语法 七 DTD的语法 一 XML语法规则???????? XML的文档和HTML的原代码类似 也是用标识来标识内容 创建XML文档必须遵守下列重要规则 规则 必须有XML声明语句????????这一点我们在上一章学习时已经提到过 声明是XML文档的第一句 其格式如下 ?xml version= standalone= yes/no encoding= UTF ? 声明的作用是告诉浏览器或者其它处理程序 这个文档是XML文档 声明语句中的version表示文档遵守的XML规范的版本 standalone表示文档是否附带DTD文件 如果有 参数为no encoding表示文档所用的语言编码 默认是UTF ????????规则 是否有DTD文件????????如果文档是一个 有效的XML文档 (见上一章) 那么文档一定要有相应DTD文件 并且严格遵守DTD文件制定的规范 DTD文件的声明语句紧跟在XML声明语句后面 格式如下 !DOCTYPE type of doc SYSTEM/PUBLIC dtd name 其中 !DOCTYPE 是指你要定义一个DOCTYPE; type of doc 是文档类型的名称 由你自己定义 通常于DTD文件名相同 SYSTEM/PUBLIC 这两个参数只用其一 SYSTEM是指文档使用的私有DTD文件的网址 而PUBLIC则指文档调用一个公用的DTD文件的网址 dtd name 就是DTD文件的网址和名称 所有DTD文件的后缀名为 dtd 我们还是用上面的例子 应该写成这样 ?xml version= standalone= no encode= UTF ?!DOCTYPE filelist SYSTEM filelist dtd ????????规则 注意你的大小写????????在XML文档中 大小写是有区别的 P和p是不同的标识 注意在写元素时 前后标识大小写要保持一样 例如:Authorajie/Author 写成Authorajie/author是错误的 你最好养成一种习惯 或者全部大写 或者全部小写 或者大写第一个字母 这样可以减少因为大小写不匹配产生的文档错误 ????????规则 给属性值加引号????????在HTML代码里面 属性值可以加引号 也可以不加 例如:font color=redword/font和font color= red word/font都可以被浏览器正确解释 但是在XML中则规定 所有属性值必须加引号(可以是单引号 也可以是双引号) 否则将被视为错误 ????????规则 所有的标识必须有相应的结束标识????????在HTML中 标识可能不是成对出现的 比?lt;br 而在XML中规定 所有标识必须成对出现 有一个开始标识 就必须有一个结束标识 否则将被视为错误 规则 所有的空标识也必须被关闭空标识就是标识对之间没有内容的标识 比如br img等标识 在XML中 规定所有的标识必须有结束标识 针对这样的空标识 XML中处理的方法是在原标识最后加/ 就可以了 例如 br应写为br / META name= keywords content= XML SGML HTML 应写为META name= keywords content= XML SGML HTML / IMG src= cool gif 应写为IMG src= cool gif /

第四章 XML语法二 元素的语法?????????元素由一对标识以及其中的内容组成 就象这样 ajie 元素的名称和标识的名称是一样的 标识可以用属性来进一步描述

在XML中 没有任何保留字 所以你可以随心所欲的用任何词语来作为元素名称 但是也必须遵守下列规范 名称中可以包含字母 数字以及其它字母 名称不能以数字或 _ (下划线)开头 名称不能以字母 xml(或 XML 或 Xml ……)开头 名称中不能包含空格 名称中间不能包含 (冒号) 为了使元素更容易阅读理解和操作 我们还有一些建议 名称中不要使用 因为在很多程序语言中 是作为对象的属性 例如 lor 同样的原因 也最好不要用 必须使用的 以 _ 代替 名称尽量简短   名称的大小写尽量采用同一标准   名称可以使用非英文字符 比如用中文 但是有些软件可能不支持 (IE 目前是支持中文元素的 ) 另外 补充一点关于属性的说明 在HTML中 属性可以用来定义元素的显示格式 比如 font color= red word/font将把word显示为红色 而在XML中 属性只是对标识的描述 与元素内容的显示无关 例如同样一句 font color= red word/font 并不会将word显示为红色 (那么 有网友会问 如何在XML中将文字显示为红色呢?这就需要使用CSS或者XSL 我们在下面详细讲述 ) 三 注释的语法 ?????? 注释是为了便于阅读和理解 在XML文档添加的附加信息 将不会被程序解释或则浏览器显示 注释的语法如下 ! 这里是注释信息 ???????可以看到 它和HTML中的注释语法是一样的 非常容易 养成良好的注释习惯将使你的文档更加便于维护 共享 看起来也更专业 四 CDATA的语法???????CDATA全称character data 翻译为字符数据 我们在写XML文档时 有时需要显示字母 数字和其它的符号本身 比如 而在XML中 这些字符已经有特殊的含义 我们怎么办呢?这就需要用到CDATA语法 语法格式如下 ![CDATA[这里放置需要显示的字符]]

例如 ![CDATA[AUTHOR sex= female ajie/AUTHOR]]???????在页面上显示的内容将是 AUTHOR sex= female ajie/AUTHOR

第四章 XML语法五 Namespaces的语法???????Namespaces翻译为名字空间 名字空间有什么作用呢?当我们在一个XML文档中使用他人的或者多个DTD文件 就会出现这样的矛盾 因为XML中标识都是自己创建的 在不同的DTD文件中 标识名可能相同但表示的含义不同 这就可能引起数据混乱 ??????比如在一个文档tablewood table/table中table表示桌子 ??????而在另一个文档tablenamelist/table中table表示表格 如果我需要同时处理这两个文档 就会发生名字冲突 ??????了解决这个问题 我们引进了namespaces这个概念 namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识 Namespaces同样需要在XML文档的开头部分声明 声明的语法如下 document xmlns:yourname= URL 其中yourname是由你定义的namespaces的名称 URL就是名字空间的网址 假设上面的 桌子table 文档来自 我们就可以声明为document xmlns:zhuozi= 然后在后面的标识中使用定义好的名字空间 zhuozi:tablewood table/table??????这样就将这两个table区分开来 注意的是 设置URL并不是说这个标识真的要到那个网址去读取 仅仅作为一种区别的标志而已 六 entity的语法??????entity翻译为 实体 它的作用类似word中的 宏 也可以理解为DW中的摸板 你可以预先定义一个entity 然后在一个文档中多次调用 或者在多个文档中调用同一个entity entity可以包含字符 文字等等 使用entity的好处在于 它可以减少差错 文档中多个相同的部分只需要输入一遍就可以了 它提高维护效率 比如你有 个文档都包含copyright的entity 如果需要修改这个copyright 不需要所有的文件都修改 只要改最初定义的entity语句就可以了 XML定义了两种类型的entity 一种是我们这里说的普通entity 在XML文档中使用 另一种是参数entity 在DTD文件中使用 entity的定义语法为:!DOCTYPE filename [!ENTITY entity name entity content ]例如我要定义一段版权信息:!DOCTYPE copyright [!ENTITY copyright Copyright Ajie All rights reserved ]如果我的版权信息内容和他人共享一个XML文件 也可以使用外部调用的方法 语法象这样 !DOCTYPE copyright [!ENTITY copyright SYSTEM ]定义好的entity在文档中的引用语法为 entity name;例如 上面定义的版权信息 调用时写作?copyright;完整的例子如下 你可以copy下来存为copyright xml观看实例 ?xml version= encoding= GB ?!DOCTYPE copyright [!ENTITY copyright Copyright Ajie All rights reserved ]myfiletitleXML/titleauthorajie/authoremail/emaildate /date?right;/myfile

第四章 XML语法七 DTD的语法 DTD是 有效XML文档 的必须文件 我们通过DTD文件来定义文档中元素和标识的规则及相互关系 如何建立一个DTD文件呢?让我们一起来学习 设置元素 元素是XML文档的基本组成部分 你要在DTD中定义一个元素 然后在XML文档中使用 元素的定义语法为 !ELEMENT DESCRIPTION (#PCDATA DEFINITION)* 说明 !ELEMENT 是元素的声明 说明你要定义的是一个元素

声明后面的 DESCRIPTION 是元素的名称 (#PCDATA DEFINITION)* 则是该元素的使用规则 规则定义了元素可以包含的内容以及相互的关系 下面的表格概要列出了元素的规则 元素规则表:

Symbol

含义

举例

#PCDATA

包含字符或文本数据

MYFILE(#PCDATA)元素MYFILE包含一个文本数据

#PCDATA element name

包含文本和其它子元素

MYFILE(#PCDTATA TITLE)MYFILE元素必须包含文本和TITLE子元素

使用逗号分隔排序

MYFILE (TITLE AUTHOR EMAIL)MYFILE元素必须依次包含TITILE AUTHOR EMAIL三个子元素

|

使用 | 表示或者

MYFILE (TITLE | AUTHOR | EMAIL)MYFILE元素必须包含TITLE 或者AUTHOR或者EMAIL子元素

name

只能使用一次

MYFILE (TITLE)MYFILE元素必须包含TITLE子元素 而且只能使用一次

使用一次或者不使用

MYFILE (TITLE AUTHOR? EMAIL?)MYFILE元素必须包含TITLE子元素 而且只能使用一次 可以包含或者不包含AUTHOR和EMAIL子元素 但是如果使用 只能一次

使用至少一次或多次

MYFILE (TITLE+ AUTHOR? EMAIL)MYFILE元素必须包含TITLE子元素 而且使用至少一次 接下来可以跟随AUTHOR子元素 也可以不跟 最后必须包含EMAIL子元素 而且只能使用一次

使用一次 多次 或者根本不使用

MYFILE (TITLE*)MYFILE元素可以包含一个 多个或者不包含TITLE子元素

设置组 可以嵌套

MYFILE(#PCDATA | TITLE)*元素MYFILE包含一个或者更多的文本或者TITLE子元素

MYFILE((TITLE* AUTHOR? EMAIL)* | MENT)MYFILE元素必须包含一些内容 内容或者是一个注释 也或者是多个组 组里包含 一个 多个或者没有TITLE子元素 接着是一个或者没有AUTHOR子元素 再接着是一个必须的EMAIL子元素

另外 我们还可以为元素定义属性 因为我们不推荐使用属性 在这里就不详细展开了  最后 我们来总结一些前四章学习的内容 写一个包含DTD XML 以及Script的简单实例 便于读者理解 将下面文件存为myfile dtd!ELEMENT myfile (title author)!ELEMENT title (#PCDATA)!ELEMENT author (#PCDATA) 然后建立XML文档myfile xml:?xml version= encoding= GB ?!DOCTYPE myfile SYSTEM myfile dtd myfiletitleXML轻松学习手册/titleauthorajie/author/myfile 建立HTML文档lheadscript language= JavaScript for= window event= onload var xmlDoc = new ActiveXObject( Microsoft XMLDOM );xmlDoc async= false ;xmlDoc load( myfile xml );nodes = xmlDoc documentElement childNodes;title innerText = em( ) text;author innerText = em( ) text;/scripttitle在HTML中调用XML数据/title/headbody bgcolor= #FFFFFF b标题: /bspan id= title /spanbrb作者: /bspan id= author /spanbr/body/

lishixinzhi/Article/program/net/201311/11347

学习XML需要些什么基础知识

学习xml,该知道的一些基础知识

1. XML是用来组织数据结构的

结构数据包括如: 电子数据表、地址簿、控制器参数、财务交易及技术绘图等。XML是一系列文字格式设计的规则(也可称之为指导方针或惯例),来帮助你组织数据结构。XML不是一种程序语言,所以你不必一定是程序员,同样可以使用或学习它。XML使计算机简单地生成及读取数据,并确保数据结构精确。XML避免了一般语言设计的缺陷:它是可扩展的、跨平台、支持国际化及区域化的格式,绝对支持Unicode格式。

2. XML类似于HTML

和HTML一样,XML是使用标签(使用 “”和””包含)和属性(以”name”=”value”的形式)。一旦HTML指定了每一个标签和属性的定义,一般文字在浏览器中表现的形式后, XML只使用这些标签来界定一些资料的特殊意义,但整体句子的意思则随个别应用程式读取时界定。换句话说,如你看到一个XML档中的 “

”, 千万不要以为是段落的意思。根据XML上下文的解释,它可能是一个价?quot;price”、一个参表”parameter”、一个人 “person”、或…(这样谁可以界定一个”p”字的定义呢?)

3. XML是文字, 但不是被阅读的

制作电子数据表、地址簿及其它结果数据的程序一般是存储在磁盘中,以二进制或文字格式储存的。其中文字存储格式的好处是,人们在需要时阅读这些文字,而不须制作文件所用的程式; 另外, 你也可以用你喜爱的文字处理器来读取文件。文字格式也容许开发者更容易地理解应用程式。如HTML,XML档是一些人类无需阅读,但若有须要时亦可阅读的文字档案。不太像HTML,XML的规则是非常严 格。若忘记了一个标签或属性漏了一个引号便使这个XML档无法执行,但在HTML内这些错误却可以接受的。正规的XML定义防止程式尝试去猜测这个已被破 坏的XML档的意思;若发现一个被破坏了的档案,应用程式便会立刻在那儿停止并报告发生错误的讯息。

4. XML是很详尽的

因为XML是文字格式及其为使用标签来解放资料,XML文件差不多比所有以二进制格 式的文件档大。这点往往是XML设计者必定留意及考虑的。文字格式的好处是一切都很清楚(看上文第3点),但亦有不同程度的缺点。磁盘空间的价钱比以前大 幅降低;而其它的文件压缩程序如zip和gzip便能简易快捷地把文件压缩。此外,网络上的通讯协议,如数据机通讯协定及HTTP/1.1便可以在传送时 把资料压缩,节省效能跟二进位格式的文件同样有效率!

5. XML是一个技术大家族

XML1.0界定标签”tags”及属性”attributes”的定义。在 XML1.0以外,”XML家族”是一项成长中的技术专案以提供有用服务予以配合多项重要及须求率高的工作。XLink解释了怎样加入连结至一个XML 档。XPointer及XFragments文件部份发展的语法。XPointer有点像URL,但除指向一个网上文件外,它亦指向一件在XML文件内的 资料。CSS~界定文件式样语言,使用在XML上跟在HTML无异。XSL是表达版面式样”style. sheets”的进阶语言。以XSLT,一种用作重新排列、加入或减除标签及属性的转化性语言为基础。DOM是用来从一种程式语言中,叫取XML档(及 HTML档)的一组标准。XML Schemas 1和2帮助开发者精确地界定它们自己的一套XML基础格式。还有其他种类的专案和工具可供考虑或正被开发中。可多留意W3C的技术报告。

6. XML是新事物,但不是全新的产物

XML的开发始于1996年,并于1998年2月成为W3C的推荐文 件;这可能使你认为这是一项并不十分成熟的技术。但事实上,这项技术并不如想象中的新!在XML之前曾有80年代初开发的SGML,一项自1986年有 ISO标准及被广泛地使用在大型文件策划专案中。HTML从1990年起开发。XML的设计者只要把SGML中最好的部份,以发展HTML的经验指引来开 发一些不逊于SGML,但比之更有规范和可更简易地使用的技术。虽然有些时候很难分辨演变和革命的成就…但可以确定的,是当SGML被广泛地使用在技 术文件而被其他种类的资料所疏忽时,XML的情况是刚好相反的!

7. XML带领HTML至XHTML

一个重要的文字性质的XML应用程式:W3C的XHTML,一个接替 HTML的格式。XHTML有许多跟HTML一样的原素。有一些语法为了配合XML规则而改变了。一份使用”XML基础”的文件代替及限制了XML的语法 其在某些方面的用法(例如:XHTML容许”

”但并不接受””);它更加入一些意义到语法上(XHTML指定 “

”的意思是段落”paragraph”,而不是价格”price”或人”person”或其他事物)。

8. XML是模块化的

XML容许你利用合并及再使用其他格式来自定新的文件格式。因为两种独立开发的格式可 能包含一些原材料或称号用着同一名称,所以当合并使用这些格式时得特别小心(如”

”在一份文件代表”段落paragraph”是否可能 在另一方代表”人物person”呢?)要解决当合并使用两种格式时出现名称混淆的问题,XML提供了一项名为namespace的概念。XSL和RDF 正是用了namespaces的以XML为基础的格式。XML Schema以简单的方法来合并两种规格以演变出包含了两种规格的第三种格式,是用来反映出在界定XML文件结构时用以引导的支援。

9. XML是RDF及Semantic Web的基础

XML提供了一个规范的守则予W3C的RDF,一种 用以表达资料(事实上,基本上是为知识)的语言。RDF就像一个网上连结的下一个层面。一般网上连结把一些文字连接到一些没有固定关连的事物上,唯RDF 可以把任何事物在连结起后给予一个关系名称:如”甲是乙的价格”可以是一件物品和一个价格总和的关系;又如”甲比乙重”可以是两个总和的关系;又或”甲是 乙的原因”可以是沐浴和你身体湿了的关系。当你在知识沟通的时候,不论是以XML/RDF或是以纯英语,人或机械上均须要同意某字词在某方面的用途。一系 列特定的文字可以用来形容一些特定的生活方式(从”购物”至”数学逻辑”)便称之为”Ontology”。RDF, Ontologies及其代表意思,使电脑可以帮我们执行所有Semantic Web活动。

10. XML是没有版权限制、跨平台独立且维护方便

当你选择XML为你计划的基础,你就像已得到一 些庞大及增长中的工具(其中一些可能已做到你所需要的)及工程技术员多年积累的技术经验。选择使用XML就像在进行资料库管理时选择SQL的程序:你依然 要建立你自己的资料库及你自己的程式及步骤来进行,及有许多工具和许多人来协助你。由于XML是没有版权限制,你可以建立你自己一套软体而无须支付任何费 用予别人。而庞大及增多中的支援意谓你无须依赖任何单一商号。 XML虽并不永远代表是最好的方案, 但永远值得你考虑。

第三十二章 XML基础知识概念

以下形式的名值对:

属性位于元素中,如下所示,一个元素可以有任意数量的属性。

表示不应该验证的文本,如下所示:

一个 CDATA (字符数据)区段不能包含字符串 ]] ,因为这个字符串标志着区段的结束。

这也意味着 CDATA 区段不能嵌套。

注意, CDATA 部分的内容必须符合为XML文档指定的编码,XML文档的其余部分也是如此。

不是XML文档主数据的一部分的插入说明。

注释是这样的:

对XML元素的可能内容的抽象描述。

可能的内容模型如下:

在所有情况下,元素可能有也可能没有属性;

短语内容模型不涉及元素中属性的存在或不存在。

给定上下文中任何非限定元素所属的名称空间。

添加的默认名称空间没有前缀。

例如:

因为这个名称空间声明没有使用前缀,所以 Person 、 Name 和 DOB 元素都属于这个名称空间。

注意,下面的XML没有使用默认名称空间,它实际上等同于前面的示例:

文档对象模型(DOM)是表示XML和相关格式的对象模型。

包含在XML文档或外部文件中的一系列文本指令。

它定义了可以在文档中使用的所有有效元素和属性。

dtd本身不使用XML语法。

一个元素通常由两个标记(一个开始标记和一个结束标记)组成,可能包含文本和其他元素。

元素的内容是这两个标记之间的所有内容,包括文本和任何子元素。

下面是一个完整的XML元素,包含开始标记、文本内容和结束标记:

一个元素可以有任意数量的属性和任意数量的子元素。

空元素可以包含一个开始标记和一个结束标记,也可以只包含一个标记。

下面的例子是等价的:

在实践中,元素很可能引用数据记录的不同部分,例如

(在XML文件中)表示一个或多个字符的文本单元。

一个实体有以下结构:

全局元素和局部元素的概念适用于使用名称空间的文档。

全局元素的名称与局部元素的名称放在一个单独的符号空间中。

全局元素是其类型具有全局作用域的元素,即其类型在相应XML模式的顶层定义的元素。

作为 xs:schema 元素的子元素的元素声明被认为是全局声明。

任何其他元素声明都是局部元素,除非它通过ref属性引用全局声明,这实际上使它成为全局元素。

属性可以是全局的,也可以是局部的。

不是全局的XML元素。

局部元素不显式属于任何名称空间,除非元素是限定的。

参见限定元素和全局元素。

名称空间是为标识符定义域的惟一字符串,以便基于xml的应用程序不会混淆一种类型的文档和另一种类型的文档。

它通常以URL(统一资源位置)的形式给出一个URI(统一资源指示器),它可能与实际的web地址对应,也可能不对应。

例如, “” 是一个名称空间。

使用以下语法之一包含命名空间声明:

在这两种情况下,名称空间只在插入名称空间声明的上下文中使用。

在后一种情况下,名称空间与给定的前缀(pre)相关联。

当且仅当元素或属性也有此前缀时,元素或属性就属于该名称空间。

例如:

命名空间声明使用 s01 前缀。

Person 元素也使用了这个前缀,所以这个元素属于这个名称空间。

但是, Name 和 DOB 元素并不显式地属于任何命名空间。

一种指令(在序言中),旨在告诉应用程序如何使用XML文档或如何处理它。

一个例子;

这将样式表与文档关联起来。

XML文档中根元素之前的部分。

序言以XML声明(指示使用的XML版本)开始,然后可能包括DTD声明或模式声明以及处理指令。

(从技术上讲,不需要 DTD 或模式。

此外,从技术上讲,可以将两者放在同一个文件中。)

每个XML文档都要求在最外层只有一个元素。

这称为根元素、根元素或文档元素。

根元素在序言之后。

如果显式地将元素或属性分配给名称空间,则该元素或属性是限定的。

考虑下面的例子,其中 Person 的元素和属性是不限定的:

在这里,名称空间声明使用 s01 前缀。

没有默认的命名空间。

Person 元素也使用了这个前缀,因此该元素属于这个名称空间。

Name 和 DOB 元素或 GroupID 属性没有前缀,因此它们不显式属于任何名称空间。

相反,考虑以下情况,其中 Person 的元素和属性是限定的:

在本例中, Person 元素定义了一个默认名称空间,该名称空间应用于子元素和属性。

注意:XML模式属性 elementFormDefault 属性和 attributeFormDefault 属性控制在给定的模式中元素和属性是否被限定。

在InterSystems IRIS XML支持中,使用类参数来指定元素是否限定。

一种为一组XML文档指定元信息的文档,可作为DTD的替代。

与DTD一样,可以使用模式来验证特定XML文档的内容。

对于某些应用程序,XML模式提供了与 dtd 相比的几个优势,包括:

形式上,模式文档是符合W3 XML模式规范的XML文档(在 )。

它遵守XML规则,并使用一些额外的语法。

通常,文件的扩展名是 .xsd 。

用XSLT编写的文档,描述如何将给定的XML文档转换为另一个XML或其他“人类可读”的文档。

包含在开始元素和相应结束元素之间的一个或多个字符。

例如:

对数据解释的限制。

在XML模式中,每个元素和属性的定义对应于一个类型。

类型可以是简单的,也可以是复杂的。

每个属性都有一个简单类型。

简单类型还表示没有属性和子元素(只有文本节点)的元素。

复杂类型表示其他元素。

下面的模式片段展示了一些类型定义:

如果没有显式地将元素或属性分配给名称空间,则该元素或属性是非限定的。

遵循XML规则的XML文档或片段,例如有一个结束标记来匹配一个开始标记。

指示给定文档中使用的XML版本(以及可选的字符集)的语句。

如果包含,它必须是文档中的第一行。

一个例子:

XPath (XML路径语言)是一种基于XML的表达式语言,用于从XML文档中获取数据。

结果可以是标量,也可以是原始文档的XML子树。

XSLT(可扩展样式表语言转换)是一种基于XML的语言,用于描述如何将给定的XML文档转换为另一个XML或其他“人类可读的”文档。

(责任编辑:IT教学网)

更多