XML基础入门(一)

讨论xml文件以前我们先看一个例子:

? Alan Turing

这就是一个标记完好的xml文件, 分别是开始标记和结束标记。

l??????? 开始标记:以<开始,以>结束,中间是标记名称。

l??????? 结束标记:以 开始,以>结束,中间是标记名称。

注意:开始标记和结束标记对应的标记名称必须相同,但是具体使用什么作为名称就没有规定,这个和html是不同的(html的标记名是若干个确定的),你可以使用person来标记一个人,使用cat来标记一只猫。

标记中间的Alan Turing就是数据,其中AlanTuring之间的空格也是数据,也就是说标记里面的数据中的空格不会别忽略。

有时候我们也许需要没有任何数据的元素(元素指开始标记和结束标记之间的内容,包含开始标记和结束标记,比如上面提到的例子就是一个元素),例如下面的:

????????

这是一个空标记,但是我们有另外更简捷的标记表示空标记:

????????

注意:xml是区分大小写的,这与html不同。 是不同标记,比如你有一个元素以 开始,那么你就不能使用 Person >作为结束标记。

?????? 上面的例子指含有一个元素,我们现在给出一个复杂点的例子,然后给出xml树的概念。


   
   
    
    
   
   

?

??? Alan

??? Turing

?

?? computer scientist

? mathematician

? cryptographer

显然上面的例子外层仍然是一个person元素,但是与先前不同的是这个元素含有4个子元素,1name元素和3profession元素。我们称personname的父元素,显然他也是profession的父元素,同样我们可以看到namefirst_namelast_name的父元素。

上面的例子我们发现标记进行了嵌套,这是允许的。但是重叠标记是非法的,比如:
this common example from HTML

应该是:

this common example from HTML

根据上面的例子中父子元素的关系以及注意到任何xml文件只能且只能含有一个根元素(也就是没有父元素的元素)看起来很象一个树,如图:

?????? 现在我们给出一个混合数据的xml文件的例子,


   
   
    
    
   
   
? 
   
   
    
    
     
     Alan
    
     
    
    
     
     Turing
    
    
    
    
   
   
?  was one of the first people to truly deserve the name 
   
   
??
   
   
    
    computer scientist
   
   . Although his contributions 
   
   
??to the field are too numerous to list, his best-known are the 
   
   
??eponymous 
   
   
    
    Turing Test
   
    and 
   
   
??
   
   
    
    Turing Machine
   
   .
   
   

  
  
   
   ?
  
  
? 
   
   
    
    The 
    
    
     
     Turing Test
    
     is to this day the standard
    
    
   
   
? test for determining whether a computer is truly intelligent. This 
   
   
??test has yet to be passed. 
   
   

  
  
   
   ?
  
  
? 
   
   
    
    The 
    
    
     
     Turing Machine
    
     is an abstract finite 
    
    
   
   
??state automaton with infinite memory that can be proven equivalent 
   
   
??to any any other finite state automaton with arbitrarily large memory. 
   
   
??Thus what is true for a Turing machine is true for all equivalent 
   
   
??machines no matter how implemented.
   
   
? 
   
   

  
  
   
   ?
  
  
? 
   
   
    
    
     
     Turing
    
    
   
    was also an accomplished?? 
   
   
??
   
   
    
    mathematician
   
    and
   
   
? 
   
   
    
    cryptographer
   
   . His assistance 
   
   
??was crucial in helping the Allies decode the German Enigma
   
   
? machine. He committed suicide on 
   
   
    
    
     
     June
    
     
    
    
   
   
??
   
   
    
    7
   
   , 
   
   
    
    1954
   
    after being 
   
   
??convicted of homosexuality and forced to take female 
   
   
??hormone injections.
   
   

   
   

上面的例子我不作解释,但是你要知道他是一个合法的xml文件,也就是说标记和内容可以混排。但是这样格式的xml文件在程序的处理上就很麻烦,所以不推荐使用。

接着我们谈谈属性(Attributes)。看例子:

born=" 1912-06-23 " died=" 1954-06-07 ">

? Alan Turing

其中红色标记的borndied就是属性。其中born是属性名, 1912-06-23 是属性值,属性值是用筐起来的,当然也可以用单引号筐起来。

? born = ' 1912-06-23 ' >

? Alan Turing

使用单引号的作用是你可以在属性的值里面添加双引号。

??? 到这里我们发现一个问题:

?

?

?

?

这个例子中我在person元素里面添加了4个子元素,每个元素有自己的属性,以及对应的值,然后这4个元素都是空元素。对照前面我们给出的对应的例子,你觉得是把值限定在属性里面好还是直接放在标记之间好呢?这是一个争论不休的问题,我的看法是由你自己定,看哪个爽就使用哪个。但是要注意对同一个元素,他不能同时含有几个相同名称的属性。

born=" 1912-06-23 " born=" 1954-06-07 ">

? Alan Turing

上面的是非法的xml文件

接着我们看看特殊字符带来的问题。由于<>是作为标记使用的,所以一般情况下我们不能在数据部分直接包含<>,而是使用<> ,其实这个问题在html里面就有了,处理方式也是和html一样,比如&我们使用& ,双引号使用"等。

再看看注释,方法和html是一样的:

但是注意注释的内容不能包含? -- ,同时注释里面的任何标记都会被忽略!同时需要注意的是注释不能出现在一个元素的标记里面。

?

现在我们从整体上来看xml

1. xml声明

所有的xml文档可能(也应该!)由一个xml声明(XML Declaration)开始。虽然文档声

明使用的是同指令处理类似的语法,但从技术上讲,根据X M L推荐标准它们并不是一回事,因

为声明是xml中的保留部分。

? Alan Turing

如果包括X M L声明,它必须处在文档最前面—前面不允许有任何空白或注释。严格地讲,

X M L当中这种声明并不是必须的,但我们后面会看到,当处理文档时,它确实会起到一些优化的作用。

这些属性已经在XML 1.0规范中做出了定义:

? version—不能省略;值必须为“ 1 . 0 ;该属性用来保证对X M L未来版本的支持。

? e n c o d i n g—可选;值必须是一种合法的字符编码,例如“ U T F - 8 、“U T F - 1 6 或者

I S O - 8 8 5 9 - 1”(即L a t i n - 1字符编码)。所有X M L解析器都要求至少支持U T F - 8U T F - 1 6

如果没有包含这个属性,就假设是“ U T F - 8”或“ U T F - 1 6”编码,这取决于开始的“< ? x m l”字符串的格式。

? s t a n d a l o n e—可选;值必须是“ y e s”或“n o”;如果是“y e s”就意味着所有必须的实体声明都包含在文档中,如果是“ n o”就意味着需要外部的D T DDTD将在后面介绍。

?

最后给出好的xml的相关要求:

1.????? 每个开始标记必须有一个结束标记匹配

2.????? 标记可以嵌套但是不能重叠

3.????? 每个xml文件只有一个根元素

4.????? 一个元素不能含有两个相同名字的属性

5.????? 注释不能出现在元素标记里面

6.????? 没有<或者&等类似的字符出现在元素值或者属性值里面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 译者序 作者简介 前言 第1章 XML简介 1.1 标记语言 1.2 XML的起源和目的 1.3 Web体系结构:过去与未来 1.3.1 传统Web体系结构 1.3.2 XML下的Web体系结构 1.4 XML基本特征 1.5 词汇表 1.5.1 科学词汇表 1.5.2 商业词汇表 1.5.3 法律词汇表 1.5.4 医学词汇表 1.5.5 计算机词汇表 1.6 XML技术的主要特性 1.6.1 格式正规的XML 1.6.2 文档类型定义 1.6.3 数据建模 1.6.4 文档对象模型 1.6.5 XML 简单API 1.6.6 命名空间和模式 1.6.7 链接和查询 1.6.8 转换XML 1.6.9 XML和数据库 1.6.10 服务器到服务器 1.6.11 电子商务与XML 1.6.12 使用样式 1.6.13 无线应用程序协议和WML 1.7 XML的应用程序举例 1.8 小结 第2章 XML语法 2.1 标记语法 2.1.1 字符 2.1.2 命名 2.2 文档部分 2.3 元素 2.3.1 起始标记 2.3.2 结束标记 2.3.3 空元素标记 2.3.4 标记:一个简单的例子 2.3.5 文档元素 2.3.6 子元素 2.3.7 元素嵌套 2.3.8 字符串 2.4 字符数据 2.5 属性 2.5.1 特殊属性 2.5.2 空白 2.5.3 行尾的处理 2.6 字符引用和实体引用 2.6.1 字符引用 2.6.2 实体引用 2.7 处理指令 2.8 注释 2.9 CDATA部分 2.10 文档结构 2.10.1 序言 2.10.2 尾声 2.11 XML语法小结 2.12 格式正规的文档 2.13 解析器 2.13.1 事件驱动的解析器 2.13.2 基于树的解析器 2.13.3 解析器基准测试 2.14 书籍目录应用程序 2.15 小结 第3章 文档类型定义 3.1 为何需要正式的结构 3.1.1 文档域 3.1.2 验证文档的有效性 3.2 编写DTD:通用原则 3.2.1 将DTD与XML文档相关联 3.2.2 基本标记声明 3.3 正式的DTD结构 3.3.1 实体 3.3.2 元素 3.3.3 属性 3.3.4 条件部分 3.4 DTD的缺点 3.5 用于图书目录问题的DTD 3.5.1 图书目录问题的正式定义 3.5.2 对象关系问题 3.5.3 进一步讨论 3.6 小结 第4章 数据建模与XML 4.1 信息建模 4.1.1 静态模型和动态模型 4.1.2 文档和数据 4.1.3 从何处开始 4.1.4 静态信息模型 4.1.5 动态建模:对数据进行哪些处理? 4.2 设计XML文档 4.2.1 XML的两种角色 4.2.2 将信息模型映射到XML 4.3 模式语言和表示法 4.3.1 模式的作用 4.3.2 将DTD作为模式 4.3.3 XML模式建议 4.4 小结 第5章 文档对象模型 5.1 什么是文档对象模型 5.1.1 XML文档结构 5.1.2 为何使用DOM 5.1.3 DOM规范 5.1.4 现实世界中的DOM 5.1.5 特殊的XML DOM实例— HTML DOM 5.2 使用DOM 5.2.1 DOM API 5.2.2 客户端和服务器端 5.2.3 DOM在出版过程中的应用 5.3 使用DOM和XML的应用实例 5.3.1 简单的客户端实例 5.3.2 更复杂的编程实例 5.4 DOM和XML的未来 5.4.1 W3C的工作 5.4.2 应用 5.4.3 数据库、模式和DOM 5.5 小结 第6章 SAX 1.0: XML简易API 6.1 事件驱动接口 6.2 SAX的由来 6.3 SAX的高级特性 6.3.1 可选择的源输入 6.3.2 处理外部实体 6.3.3 选择解析器 6.4 一些SAX设计模式 6.5 SAX 2.0 6.5.1 可配置的接口 6.5.2 核心的特性和属性 6.6 小结 第7章 命名空间和模式 7.1 混合词汇表 7.1.1 分解问题 7.1.2 重用 7.1.3 二义性与名称冲突 7.2 命名空间 7.3 定义和声明命名空间 7.3.1 声明一个命名空间 7.3.2 限定名 7.3.3 范围 7.4 在格式正规的书籍里使用命名空间 实例 7.5 模式 7.5.1 与DTD有关的问题 7.5.2 一个对创建模式的帮助 7.6 W3C在XML 模式方面的工作 7.6.1 DTD与XML 模式的比较 7.6.2 结构 7.6.3 数据类型 7.7 简化了的XML Data 7.7.1 MSXML对命名空间和模式的支持 7.7.2 数据类型 7.8 图书目录中的变化 7.8.1 为什么烦恼 7.8.2 重铸DTD 7.8.3 模式协调 7.9 小结 第8章 链接和查询 8.1 XML 信息集合 8.1.1 信息类型 8.1.2 信息集合的重要性 8.1.3 小结 8.2 链接 8.2.1 什么是链接? 8.2.2 W3C规范:XLink 8.3 Xpointer 8.3.1 HTML指针 8.3.2 Xpointer 规范 8.4 W3C Xpath推荐标准 8.4.1 Location Step 8.4.2 XPointer对XPath的扩展 8.4.3 Xpointer错误 8.4.4 小结 8.5 XML片段交换 8.5.1 什么是文档片段 8.5.2 文档片段的一些用途 8.5.3 问题:Bare文档片段并不总 是充分的 8.5.4 解决办法:环境信息 8.5.5 回顾实例 8.5.6 如何传输片段 8.5.7 小结 8.6 查询 8.6.1 什么是查询语言 8.6.2 关系型数据库和XML文档之间的区别 8.6.3 XML查询语言的发展历史 8.6.4 使用Xpath和XSLT查询XML文档 8.6.5 查询语言展望 8.7 小结 第9章 转换 XML 9.1 为什么转换 XML 9.1.1 在不同词汇表之间转换 9.1.2 动态转换 9.1.3 不同的浏览器 9.2 XSL 9.3 XSLT 样式表结构 9.3.1 创建模板 9.3.2 处理空白 9.3.3 输出格式 9.3.4 合并样式表 9.3.5 嵌入样式表 9.4 使用XSLT的例子 9.4.1 结构的转换 9.4.2 循环 9.4.3 排序 9.4.4 条件处理 9.4.5 名称模板 9.4.6 编号方式 9.4.7 拷贝 9.5 使用DOM进行XML文档的转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值