XML学习系列一(XML概述)

为君一笑 提交于 2020-03-18 03:54:54
      XML全称EXtensible Markup Language,翻译为可扩展置标语言,可扩展标记语言或可 延伸标示语言,是一种置标语言。置标指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从标准通用置标语言(SGML)中简化修改出来的。

     一个符合XML 1.0和XML规范的命名空间的文档,可能有多种语法结构组成,比如:xml声明、命名空间声明、元素、属性、处理指令、注释和文本。
xml声明:
       xml文档可以包含声明。声明必须出现在文档第一行,xml声明由三个名、值对组成,格式如下:
<?xml version="1.0" encoding="character encoding" standalong="yes|no"?>
其中version是必须使用的属性,声明了xml的版本信息;encoding 和 standalong为可选属性,encoding属性声明文档字符编码,如UTF-8等,不论是否使用xml声明,所有的xml处理程序都要求能够处理使用 UTF-8和UTF-16编码的文档,如果文档使用了非UTF-8或非UTF-16编码,则必须使用xml声明;standalong可以赋值为yes或no,当赋值为yes时表示文档不需要引用外部资源就可以使用,我们也把这个文档称之为“独立文档”,如果standalong赋值为no则表示xml文档需要外部资源来正确解析。另外需要注意的是这些属性在xml声明中的次序是固定的。
命名空间声明:
     因为xml标记允许设计者自己定义,所以不同的设计者设计出来的xml文档很可能出现文档元素部分或全部相同,命名空间声明就是为了明确的区分这些xml元素,来限定与之关联的所有元素的作用域,命名空间名称一般是一个URL(统一资源定位符)。我们把命名空间的名称和元素的本地名称合在一起的一个全局唯一名字称之为限定名。
命名空间的声明一般出现在元素的起始标记中,通常习惯于把一个命名空间名称映射为一个很短的字符,这个很短的映射字符称之为命名空间前缀,命名空间的语法格式如下:
<prefix:localName xmlns:prefix="namwspace url"/>
<prefix:localName xmlns:prefix="namwspace url"></prefix:localName>
无前缀的命名空间为默认命名空间语法:
<localName xmlns="namespace url"><.localName>

     对于不存在于任何命名空间的元素被称为非限定元素,非限定元素的命名空间的名称是空字符串""。所以我们可以用xmlns=""来屏蔽默认命名空间。
我们来看下面几个关于限定的元素名和非限定的元素名的例子:
<emp:emploryee xmlns:emp="comp.company.com">
<name>mjq</name>
<sex>male</sex>
</emp:emploryee>
      上面这个例子中元素的本地名为emploryee,前缀 emp是从命名空间comp.company.com映射来的,emploryee有两个后代元素name、sex,这两个元素不属于任何命名空间,所以是非限定元素,我们可以通过为其添加命名空间前缀来限定它:
<emp:emploryee xmlns:emp="comp.company.com">
<emp:name>mjq</emp:name>
<emp:sex>male</emp:sex>
</emp:emploryee>
或者使用默认命名空间声明来限定其作用域:
<emploryee xmlns:emp="comp.company.com">
<name>mjq</name>
<sex>male</sex>
</emploryee>
我们也可以指定其命名空间为空来屏蔽默认命名空间:
<emploryee xmlns:emp="comp.company.com">
<name xmlns="">mjq</name>
<sex xmlns="">male</sex>
</emploryee>
这样name、sex就不属于任何命名空间,变为非限定元素。

元素:
     一个xml文档大部分内容都是有元素组成的,每个规范的xml文档都有且只有一个顶层元素,我们称其为文档元素,元素可以有后代,元素的后代是有序的,元素也可以用属性描述,元素的属性是无序的:
属性的语法是以等号隔开的名称/值:name="value",属性也可以用命名空间来限定其作用域。
元素也可以有与它关联的命名空间声明,命名空间声明是无序的。
元素是由开始标记和终止标记对组成,起始标记<元素名称>,终止标记是</元素名称>.
需要注意的是元素名称是区分大小写的,且必须以字母或_开始,后面可以是任意长度的字母、数字、点、连接符、下划线。但当<、>、&出现在元素或文本中时需要使用字符实体(&lt、&gt、&amp)代替,当属性值中出现'或"是也要使用其字符实体(&apos、&quot)代替。
当文本中出现以上特殊字符时可以用其字符实体代替也可以用 CDATA段来“快转义”,语法如下:
<![CDATA[ 含有特殊字符的文本 ]]>,
xml中允许出现空白,也需要出现空白,通常空白来分隔属性和命名空间声明,或者分隔他们和元素的标记名。但空白不允许出现在小于号和元素名之间,也不能出现在前缀、冒号、和元素(或属性)的本地名之间。如一下非不合法使用空白:
<emp: emploryee xmlns:emp="comp.company.com">
< emp:name>mjq</emp:name>
<emp:sex>male</emp:sex>
</emp:emploryee>

最后给出一个规范的xml实例:
Code
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!