《CHP02XML语法名称空间》由会员分享,可在线阅读,更多相关《CHP02XML语法名称空间(38页珍藏版)》请在金锄头文库上搜索。
1、第二章 XML 语法 命名空间CHP02 XML语法 名称空间学习目标熟练掌握XML文件的基本结构掌握XML文档元素的使用理解CDATA段的作用理解XML命名空间的作用掌握XML元素内容与属性的差异CHP02 XML语法 名称空间第2章 XML的语法 命名空间2.1 XML2.1 XML声明声明2.2 2.2 注释注释2.3 2.3 元素元素2.4 2.4 属属性性2.5 2.5 C CDATADATA段段2.6 2.6 名称空间名称空间2.7 2.7 规范的规范的XMLXML文档文档CHP02 XML语法 名称空间创建 XML 文档构建 XML 文档的步骤:n陈述 XML 声明n创建根元素n
2、创建 XML 代码n 演示:创建 XML 文档管理元素的规则至少需要一个元素XML 标签区分大小写应正确使用结束标签正确嵌套标签应使用合法标签标记名称的长度应定义有效的属性应验证文档CHP02 XML语法 名称空间2.1 XML声明 XML声明以 “” 标识结束。最基本的XML声明: 包含多个属性的XML文档的声明格式:CHP02 XML语法 名称空间1 XML声明中的版本属性 一个简单的一个简单的XML声明中可以只包含属性声明中可以只包含属性version,目前该属性的只可以值可以取,目前该属性的只可以值可以取1.0 。 注意:注意:1.版本号既可以用单引号也可以用双引号来分隔,它必须是版本
3、号既可以用单引号也可以用双引号来分隔,它必须是“xml”之后的第一个属性。之后的第一个属性。2.“xml”是处理指令名,用来标识该文件是是处理指令名,用来标识该文件是XML文档(注意:文档(注意:“xml”必须小写,并且必须小写,并且XML文档是大小写敏感的)。文档是大小写敏感的)。CHP02 XML语法 名称空间2XML声明中的编码属性 如如果果在在XML声声明明中中没没有有指指定定encoding属属性性的的值值,那么该属性的默认值是那么该属性的默认值是“UTF-8”。例如:。例如: 声声明明指指定定encoding属属性性的的值值是是UTF-8编编码码。如如果果XML使使用用UTF-8编
4、编码码,那那么么标标记记以以及及标标记记的的内内容容就就可可以以使使用用汉汉字字、日日文文、英英文文等等,XML解解析析器器就就会会识识别别这这些些标标记记并并正正确确解解析析标标记记中中的的内内容容。如如果果encoding属属性性的的值值为为“UTF-8”,XML文文件件必必须须选选择择“UTF-8”编编码码来保存来保存. . 简体中文码:简体中文码:GB2312 繁体中文码:繁体中文码:BIG5 西西 欧欧 字字 符:符: UTF-8 CHP02 XML语法 名称空间3XML声明中的独立性属性一个文档的声明格式如下:standalone来指明是否有引用外部文件。standalone=no
5、表示XML调用外部文件 standalone=yes表示XML没有调用外部文件CHP02 XML语法 名称空间注释的语法如下:注释的语法如下: XML文件的注释和HTML文件相同,注释以“”结束,XML解析器将忽略注释的内容,不对它们实施解析处理。 使用注释时要遵循的规则注释的文本中不应包含“-”或“- -” 注释不应放在标签里面注释不能放在实体声明中,也不能放在 XML 声明之前注释可用于注释标签集注释不能嵌套2.2 注释 你好 CHP02 XML语法 名称空间2.3 元素XML文件中的元素分为非空元素和空标记两种 。1空元素 空元素不标记任何内容,所以空元素不需要开始标记和结束标记,空元素
6、以 “” 标识结束 . CHP02 XML语法 名称空间2非空元素非空元素非空元素必须由“开始标记”与“结束标记”组成,“开始标记”与“结束标记”之间是该标记所标记的数据,标记间的数据被认为是元素的值。 男 非空元素的内容可以有两部分构成:文本数据和标记,其中的标记称做该元素的子元素。可以把元素内容为文本的非空元素转换为空元素。 下午好 CHP02 XML语法 名称空间元素 元素的四种形式空元素 带有属性的空元素 带有内容的元素 这是一个学生的信息 张三 18 带有内容和属性的元素 18 CHP02 XML语法 名称空间提示:提示: “元素”和“标签”这两个词具有不同的含义。元素是指开始标签、
7、结束标签以及两者之间的一切内容,包括属性、文本、注释以及子元素。标签是一对尖括号()和两者之间的内容,包括元素名和所有属性。例如: 是一个标签, 也是一个标签;而 Hello World 则是一个元素。CHP02 XML语法 名称空间3元素的命名规则 在XML中,元素由开始标签、元素内容和结束标签构成,对于空元素,由空元素标签构成。 每一个元素有一个用名字标识的类型,同时它可以有一个属性说明集,每一个属性说明有一个名字和一个值。 在给元素命名的时候要注意,以“xml”或其他任何匹配 (X|x) (M|m) (L|l) 的字符串开头的名字,被保留用于XML规范的当前版本或后续版本的标准化。此外,
8、在给元素命名时,还要遵守下列规范: 1、名称只能以字母、下划线(_)或者冒号(:)开头; 2、名称中可以包含字母、数字、下划线以及其它在XML标准中允许的字符; 3、名称中不能包含空格; 4、名称中尽可能不要使用冒号(:),因为冒号在名称空间中被用于分隔名称空间 前缀和本地部分, CHP02 XML语法 名称空间4元素内容的构成元素的内容可以包含子元素、字符数据、字符引用和实体引用、CDATA段。CHP02 XML语法 名称空间元素内容的构成 子元素子元素本身也是元素,被嵌套在上层元素之内。子元素是相对于父元素而言的,如果子元素还嵌套了其它元素,那么它同时也是父元素。 张三 18 . CHP0
9、2 XML语法 名称空间元素内容的构成 字符数据在一个元素的内容中,字符数据可以是不包括任何标记的起始定界符和CDATA段的结束定界符的任意字符串,也就是说在元素的内容中,字符数据不能有和号(&)和小于号(” 在CDATA段中,字符数据可以是不包括CDATA段的结束定界符的任意字符串。 CHP02 XML语法 名称空间元素内容的构成 字符数据判断下列元素的内容是否合法n&n/n/nnCHP02 XML语法 名称空间标签间的字符数据的分类字符数据的分类PCDATACDATA将由解析器解析不会由解析器解析 !CDATA JACKIE CHAN成龙 不允许在 CDATA 块之内使用字符串“”,因为它
10、表示 CDATA 块的结束CHP02 XML语法 名称空间元素内容的构成 字符引用和预定义实体引用在字符数据中,不能有和号(&)和小于号(),因为未经处理的小于号()与和号(&)在XML文本中往往被解释为标记的起始定界符(例外的情况见下面要介绍的CDATA段)。 在XML中,提供了5个预定义的实体引用,分别引用XML文档中的5个特殊字符:小于号()、双引号()、单引号()、和号(&)。这5个特殊字符也可以通过字符引用的方式去引用。 字符引用和预定义实体引用都是以一个和号(&)开始并以一个分号(;)结束。如果用的是字符引用,需要在和号(&)之后加上一个井号(#),之后是所需字符的十进制代码或十六
11、进制代码(ISO/IEC 10646字符集中字符的编码)。如果用的是预定义实体引用,在和号(&)之后写上字符的助记符。CHP02 XML语法 名称空间元素内容的构成 字符引用和预定义实体引用字符字符字符引用字符引用(十进制代码)(十进制代码)字符引用字符引用(十六进制代码)(十六进制代码)预定义实体引预定义实体引用用>>>"""'''&&&CHP02 XML语法 名称空间XML元素综合实例通过下面的实例说明一下如何定义元素和如何使用元素。 simple .xmlCHP02 XML语法 名称
12、空间2.4属性 属性是指标记的属性,可以为标记添加附加信息。 属性是一个名值对名值对,即属性必须由名字和值组成。属性必须在非空标记的开始标记或空标记中声明,用“=”为属性指定一个值。 CHP02 XML语法 名称空间XML属性的命名规则英文名称必须以英文字母或者下划线“_”开头,中文名称必须以中文文字或者下划线“_”开头。在使用默认编码集的情况下,名称可以由英文字母、数字、下划线“_”、连接符”“-”和点号“.”构成。在指定编码集的情况下,名称中除上述字符外,还可以出现该字符集中的合法字符。 名称中不能含有空格。 名称中含有英文字母时,对大小写敏感。 同一个元素不能有多个同名的属性。属性值使用
13、单引号或双引号包围的字符串值。属性值包含特殊字符要使用字符引用或实体引用替换这些字符。 CHP02 XML语法 名称空间例如 : 吃饭用的吃饭用的 CHP02 XML语法 名称空间元素内容转换属性使用子元素表达数据和使用属性表达数据的结果是一样的。但使用属性表达数据时可能出现如下一些问题:属性不能包含多个重复值,而子元素可以有任意次数的重复。属性不易扩展,子元素可以很轻松实现扩展。属性不能够描述文档结构,而通过子元素之间的关联关系可以描述文档结构属性不便用程序来处理属性值不易在DTD文档中进行限定。推荐使用子元素来表达数据!推荐使用子元素来表达数据!CHP02 XML语法 名称空间2.5 元素
14、内容的构成 CDATA段CDATA段中包含的都是纯字符数据,在字符数据可以出现的任何地方都可以使用CDATA段。CDATA段主要用于需要将整个文本解释为字符数据而不是标记的情况下。CDATA段中的内容不被XML解析器处理,可以在其中包含任意的字符,而且CDATA段中的内容在浏览器上被原样显示。但是,W3C规定,CDATA段中不可以嵌套另一个CDATA段。CDATA段用“”作为段的结束,段开始和段结束之间称为CDATA段的内容。CDATA这几个字母必须大写,且不被其他字符隔开。 编写带有编写带有CDATA段的段的XML文档文档 cdata.xmlCHP02 XML语法 名称空间CDATA段的位置
15、 在XML文档中只能在根元素的文本内容中使用CDATA段,在XML标记中不能使用CDATA段,否则会出现解析错误,CDATA段也不能出现在其他非文本内容的文档元素中。 示例:cdata1.xmlCHP02 XML语法 名称空间2.6 XML名称空间一个XML文档中可以包含许多元素与属性,当我们使用其他人的XML文档,或者在文档中使用多个DTD文件时,就有可能碰到名称相同的元素,而这些名称相同的元素可能代表了完全不同的含义。比如:title可以用于表示标题,也可以用于表示某个人的头衔;table可以用于表示表格,也可以用于表示桌子。当这些具有相同名称不同含义的元素混合到一个文档中时,就会造成理解
16、和处理上的混乱。为了解决这个问题,就要用到W3C发布的另一个推荐标准 XML名称空间。可以在上查看XML名称空间规范的详细内容。CHP02 XML语法 名称空间声明名称空间 名称空间通过使用一系列的保留属性来声明,这种属性的名字必须是以xmlns 或以 xmlns: 作为前缀。与其它任何XML属性一样,这些属性可以直接或以缺省的方式给出。 名称空间的声明有两种形式。CHP02 XML语法 名称空间声明名称空间 第一种形式: 元素名是指你在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素内容中的所有元素及其属性。xmlns:prefixname作为该元素的
17、属性名,属性的值是一个URI引用,是标识该名称空间的名称空间名字名称空间名字。其中prefixname给出名称空间前缀名称空间前缀的名字,该前缀用于将元素及属性的名字与URI关联在一起。要注意的是,在这样的声明中,名称空间的名字不能为空(在这样的声明中,名称空间的名字不能为空(“”)。)。如果有两个URI,其组成字符完全相同,可以认为它们标识了同一个名称空间。 来自于XML名称空间的名字可以作为限定名限定名(qualified names)出现,限定名包含了一个以冒号(:)分隔的名称空间前缀和一个本地部分(local part)。映射到URI引用的名称空间前缀选择了一个名称空间。CHP02 X
18、ML语法 名称空间声明名称空间例子:名称空间前缀可以是不包含冒号的任何合法的XML名称。在声明名称空间时,有两个前缀是不允许使用的,它们是xml和xmlns。xml前缀只能用于XML1.0规范中定义的xml:space和xml:lang属性,前缀xml被定义为与名称空间名字绑定。前缀xmlns仅仅用于声明名称空间的绑定,它被定义为与名称空间名字绑定。CHP02 XML语法 名称空间提示:提示:名称空间推荐标准中指出,在名称空间声明中,使用相对URI引用已经被废弃了(不赞成使用)。CHP02 XML语法 名称空间声明名称空间 第二种形式: 这种声明形式没有给出名称空间的前缀名,URI所标识的是缺
19、省的名称空间。在在这样的缺省声明中,属性值可以为空这样的缺省声明中,属性值可以为空(“”)。 例子: 表示声明了一个缺省的名称空间,hr元素及其内容中所有的没有前缀的元素都属于所标识的名称空间,除非被hr元素内容中其它的缺省名称空间声明所覆盖。 CHP02 XML语法 名称空间 注意:注意:在声明名称空间时,选择的URI不需要指向实际的内容,在URI所标识的位置上,可以不存在任何东西。在名称空间声明中的URI,只是形式上的标识符,其唯一的目的是提供一个唯一的名字。CHP02 XML语法 名称空间名称空间在元素和属性中的运用 在具有很多元素(这些元素都在同一个名称空间中)的文档中,在具有很多元素
20、(这些元素都在同一个名称空间中)的文档中,给每个元素名称都添加给每个元素名称都添加个前缀将是一件繁琐的事情。为此,我个前缀将是一件繁琐的事情。为此,我们可以使用没有前缀名的们可以使用没有前缀名的xmlns属性将缺省的名称空间附加给元属性将缺省的名称空间附加给元素及其子元素,元素本身及其子元素都被认为是在缺省的名称空素及其子元素,元素本身及其子元素都被认为是在缺省的名称空间中,除非它们有明确的前缀。间中,除非它们有明确的前缀。缺省名称空间声明中的缺省名称空间声明中的URI可以设为空字符串,这样的话,在它可以设为空字符串,这样的话,在它的声明范围内,没有前缀的元素将被认为不存在于任何的名称空的声明
21、范围内,没有前缀的元素将被认为不存在于任何的名称空间中,这和没有声明缺省名称空间是一样的。间中,这和没有声明缺省名称空间是一样的。 一个属性要想在某个名称空间中,必须给该属性加上名称空间的一个属性要想在某个名称空间中,必须给该属性加上名称空间的前缀,没有前缀的属性不在任何的名称空间中(包括缺省的名称前缀,没有前缀的属性不在任何的名称空间中(包括缺省的名称空间)。即使拥有属性的元素在某个名称空间中,没有前缀的属空间)。即使拥有属性的元素在某个名称空间中,没有前缀的属性仍然不在该名称空间或任何其它的名称空间中。性仍然不在该名称空间或任何其它的名称空间中。CHP02 XML语法 名称空间名称空间在元
22、素和属性中的运用在在XML文档中,没有任何一个标签可以包含两个相同的属性,所文档中,没有任何一个标签可以包含两个相同的属性,所谓相同有两种情况,一种是属性的名字完全相同,另一种是属性谓相同有两种情况,一种是属性的名字完全相同,另一种是属性限定名中的本地部分完全相同,而不同的前缀绑定到了相同的名限定名中的本地部分完全相同,而不同的前缀绑定到了相同的名称空间名字。称空间名字。 CHP02 XML语法 名称空间一个规范的XML文件必须满足W3C所指定的标准,比如,文件用“XML声明”开始、文件有当且仅有一个根标记,其它标记都必须封装在根标记中,文件的标记必须是树型结构、非空标记必须由“开始标记”与“结束标记”组成、空标记没有“开始标记”和“结束标记” (良构的良构的XMLXML文档文档)规范的XML文件如果再符合额外的一些约束就称为有效的XML文件。(有效的有效的XMLXML文档文档) 2.7 规范的XML文档CHP02 XML语法 名称空间