XML总结

XML和HTML

XML(eXtensible Markup Language)可扩展的标记语言。XML和HTML都是从SGML发展起来的标记语言。HTML有一套标准的标记,我们不能创建新的标记。XML没有所谓的标准标记,需要我们自己创建标记,同样的标记根据解析的不同可以表现不同的意义。可以说XML是创建标记语言的元语言。HTML将数据、页面的排版以及页面的表现形式混合在一起,而XML只是用于描述数据和数据的结构,它将数据与显示分开。XML 不会替代 HTML,理解这一点很重要。在大多数 web 应用程序中,XML 用于传输数据,而 HTML 用于格式化并显示数据。对 XML 最好的描述是:XML 是独立于软件和硬件的信息传输工具。

XML标准

  • 一个开始标签必须有结束标签
  • 空元素标签必须被关闭
  • 所有标签都区分大小写,推荐使用小写
  • 所有标签必须合理嵌套
  • 所有标签的属性值必须使用双引号或者单引号括起来
  • XML有且只有一个根元素

XML文档

XML文档在逻辑上分为5部分:XML声明,文档类型声明,元素,注释,处理指令。所有的这些都是通过显示的标记来指明的。XML标记包括开始标签、结束标签、空元素标签、实体引用、字符引用、注释、CDATA段定界符、文档类型声明、处理指令、XML声明、文本声明及任何在文档实体顶层的空白。其他所有非标记文本组成文档的字符数据。

 XML声明

XML文档总以XML声明开始,用于指明XML版本、文档的编码、文档的独立性。格式如下:

<?xml 版本信息[编码信息][文档独立性信息] ?>

需要注意的是?左右不能有空格,声明必须位于文档第一行,且前面不能有任何字符。记住这两点点就可以了

XML声明中加上版本号的作用是方便以后修订和扩充。文档编码默认是UTF-8。独立文档声明用于声明此文档是否依赖于外部文档。完整的XML声明如下:

<?xml version="1.0" encoding="gb2312" standalone="yes" ?>

  XML文档类型声明

因为XML文档可以任意定制标签,所以当你将文档交给别人时,需要一份规范用于判断文档中元素与元素之间、元素与属性之间的关系,以及属性的取值是否正确。我们可以用DTD(Document Type Definition)来规范XML文档(还可以用Schema,DTD的替代品)。HTML就有一个标准的DTD文件。

文档类型声明有两种形式,一种是声明DTD在一个外部的文件中:

<! DOCTYPE note SYSTEM "hello.dtd">

双引号内可以使一段URL。

或者在XML文档中给出DTD。

<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
<!DOCTYPE note [
    <!ELEMENT note (#PCDATA)>
]>

   元素

元素命名规范:

  • 名称只能以字母、下划线(_)或者冒号(:)开头;
  • 名称中可以包含字母、数字、下划线及其他在xml标准中允许的字符;
  • 名称中不能包含空格;
  • 名称中尽可能不要使用冒号(:),因为冒号在名称空间中被用于分隔名称空间前缀和本地部分;

元素的形式:

空元素

<student />

带有属性的空元素

<student name="李四" age="19" />

带有内容的元素

<student>
    this is a student
    <name>abyss</name>
    <age>19</age>
</student>

带有内容和属性的元素

<student name="abyss">
    <age>19</age>
</student>

注意:元素是指开始标签和结束标签以及两者之间的所有内容,包括注释,子元素,文本,属性等。标签仅仅包括一对尖括号以及尖括号内的内容 。

提示:尽量使用元素描述数据,用属性来描述与数据无关的信息。使用属性具有以下缺点:

  • 属性无法包含多重的值(元素可以)
  • 属性无法描述树结构(元素可以)
  • 属性不易扩展(为未来的变化)
  • 属性难以阅读和维护

元素内容构成

1、子元素

2、字符数据

  字符数据是追不包括任何标记的起始定界符(&、<)和CDATA段结束定界符的任意字符串(]]>),在CDATA段中是指不包括CDATA段的结束定界符的任意字符串

3、字符引用和预定义实体引用

在xml文档中,有些地方不允许出现一些特殊字符,这时候采用字符引用和预定义实体引用。

特殊字符的字符引用和预定义实体引用
字符 字符引用(十进制) 字符引用(十六进制) 预定义实体引用
< &#60; &#x3c; &lt;
> &#62; &#x3e; &gt;
" &#34; &#x22; &quot;
' &#39; &#x27; &apos;
& &#38; &#x26; &amp;

4、CDATA段

CDATA段包含的都是纯字符数据,在字符数据可以出现的任何地方都可以使用CDATA段。主要用于需要将整个文本解释为字符首而不是标记的情况下使用,XML处理器不分析CDATA段的内容,所有可以包含任意字符。代码示例:

<?xml version="1.0"?>
<java>
    <![CDATA[
        if(a>b &&c<b){
            max=a;
        }
    ]]>
</java>

注释

注释以<!--开始以-->结束,其中间的内容将被XML处理器忽略。

字符串 -- 不能出现在注释中;

注释不能以--->结尾。

处理指令

处理指令允许文档中包含由应用程序来处理的指令。通过处理指令来处理XML处理器无法处理的非XML格式的数据。处理指令的语法与XML声明类似,以<?开始,以?>结束。代码示例:

<?xml-stylesheet href="hello.css" type="text/css"?>

第一个字符串叫做处理指令的目标用来指明要使用的程序的名称,非W3C定义的处理指令不能以“XML”、“xml”开头,后面的字符串是传递给应用程序的字符数据。对于不认识的处理指令大多数选择忽略。xml-stylesheet处理指令总是放到XML声明后,其他声明指令可以放在除标记内部和XML声明前任意位置。

空白处理

在XML文档中可以在元素中使用特殊的属性xml:space,来通知应用程序保留此元素中的空白,此属性在使用时必须声明,且必须声明为枚举类型,值必须是“default”和“preserve”两者之一或都取。

default:表示对此元素使用应用程序的默认空白处理模式;

preserve:表示应用程序保留所有空白。

作用范围为该元素内容中的所有元素,直至被另外一个xml:space属性实例所覆盖。

语言标识

在XML文档中,可以插入特殊属性xml:lang来指出任何元素的内容和属性的值所使用的语言。注意是语言不是字符编码,其值时在IETFRFC 3066或后继版本中定义的语言标识符。

作用范围为该元素内容中的所有元素,直至被另外一个xml:lang属性实例所覆盖。

 

posted @ 2013-07-26 14:09  薛遗山  阅读(711)  评论(0编辑  收藏  举报