XML基础

简单说明:

  1. 参考书籍 ----- 《XML实战教程》
  2. XML涉及众多知识,命名空间、DTD、XSD、XPath、Xlink、DOM、SAX、XSL等。DTD与XSD是XML的校验规则技术,DOM、SAX是获取数据的技术,XSL与XSLT都是XML的显示技术

XML文档声明

声明XML文档时有3个属性:version属性、encoding属性和standalone属性。

1. version属性

目前XML规范有两个版本:1.0和1.1版本。

    <?xml version="1.0"?>
    或者
    <?xml version="1.1"?>
这两个版本的规范标准几乎是一样的,只是给元素命名时,会对某些Unicode字符采取不同的处理方法。如果确实需要使用XML1.1规范,那么必须确保所使用的XML解析器支持1.1版本。另外,当需要与其他用户交换XML文档时,必须确保对方的解析器也支持XML1.1版本,否则会引起操作性问题。

2. encoding属性

XML文档中通过声明encoding属性可以告诉解析器文档所采用的编码方式。如果文档没有说明编码,则会使用默认的UTF-8或UTF-16,因此解析器必须支持这两种编码格式。

3. standalone属性

如果XML声明中提供了standalone属性,则它的值必须是yes或者是no。yes表示文档可以完全独立存在,不依赖与其他任何文件;no表示文档可能依赖于一个外部的DTD文件。

4. 注意事项

  • XML声明必须从“<?xml>”开始,到“?>”为结束
  • 声明语句里必须包含version属性,但是encoding属性和standalone属性是可选的
  • version、encoding和standalone三个属性必须按上述排序
  • version属性值必须是1.0或是1.1
  • XML声明必须放在文档的开头,前面不能有空行或空格。关于这一点,有些解析器不会那么严格

XML元素概述

元素概念

在开始标记到结束标记之间的吧、文本以及标记本身统称为元素。
    <?xml version="1.0" encoding="UTF-8"?>
    <name nickname="Tom Bill">
	<firstname>Tom</first>
	<middlename />
	<lastname>Bill</lastname>
    </name>
如上例中的<firstname>是一个开始标记,</firstname>是一个结束标记,<firstname>Tom</first>则表示一个元素。

元素命名

元素之间可以进行嵌套,并且一个XML文档中必须只要一个根元素。实际上,即使文档没有任何内容,它也必须亚由一个根元素。
无论是给元素命名还是为标记命名,都要遵守以下规则:
  • 名称第一个字母必须是英文或是下划线
  • 其他字符可以是数字、连字符“-”和句点
  • 名字中不能有空格
  • 名称的大小写敏感
  • 元素名可以是中文。但是在不支持中文的环境中将不能够解释包含中文字符的XML文档,所以应进项选择有意义的英文名称表示

属性概念

属性是采用name/value的形式说明元素的特征,它们插入到开始标记里,但是不允许插入到结束标记里。如果属性值中要使用单引号或尖括号时,就必须使用字符和实体引用。属性值使用单括号括起来,单引号和双引号都可以。如上例中的nickname=“Tom Bill”
XML标记使用字符的5种内置实体:
实体实体引用含义
lt&lt;<
gt&gt;>
amp&amp;&
apos&apos;'
quot&quot;"

XML命名空间

自定义命名空间

XML文档使用命名空间解决XML元素的名称冲突和多义性的问题。命名空间是通过使用一系列保留属性声明的,这一系列保留属性的名称必须是xmlns或以“xmlns:”作为前缀。基本的语法如下所示:
    xmlns:prefix="URI"
  • xmlns:定义命名空间的关键字
  • perfix:命名空间前缀属性
  • URI:用来标识抽象或物理资源的紧凑字符串,大多数情况下,URI引用用来标识物理资源
例如,如果要声明一个地址为http://www.wiley.pers的命名空间和它的一个名称是person的元素。
    <pers:person xmlns:pers="http://www.wiley.ers" />
这里的前缀pers没有任何含义,唯一的作用只是一个代表命名空间的名称,可以使用其他任何的前缀代替它,而且文档的意义完全一样。

默认的命名空间

一个默认的命名空间很像一个普通的命名空间,只要不需要在这个命名空间的所有元素前面再添加前缀。如下所示:
   <person xmlns="http://www.wiley.com/pers">
	<name>tom</name>
   </person>
可以在一个元素声明多个命名空间,但是其中只有一个是默认的命名空间。如下所示:
   <person xmlns="http://www.wiley.com/pers" xmlns:html="http://www.w3.org/1999/xhtml" >
	<name/>
	<html:p>这是一个最基本的段落</html:p>
   </person>

命名空间的注意事项

  1. 不能为一个元素同时声明两个默认的命名空间
  2. 可以在子元素中声明命名空间
  3. 可以为属性添加命名空间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值