XML

来源:互联网 发布:软件学报官网 编辑:程序博客网 时间:2024/04/29 15:55

今天又学了门新的课程  今天的课程挺不错的 跟HTML差不多,不过这个用处不小,关系到以后安卓的课程;

XML(eXtensible Markup Language)是万维网联盟(World Wide Web Consortium W3C)定义的一种可扩展标志语言。
可扩展性指允许用户按照XML规则自定义标记(tags标签)。
强项:轻松表达多层结构的数据;可扩展。
优点:平台无关,语言无关。设计目标是描述数据并集中于数据的内容,与显示分离。
语法规则
XML文件有且仅有一个根标记,其他标记必须封装在根标记中,文件的标记必须形成树状结构。
大小写敏感。
标记的属性必须用""<> ''括起来。
声明
大多数XML文档以XML声明作为开始,它向解析器提供了关于文档的基本信息。建议使用XML声明,但它不是必需的。如果有的话,那么它一定是文档的第一行内容。如:<?xml version="1.0" encoding="UTF-8" standalone="no"?> 声明最多可以包含三个名称-值对(许多人称它们为属性,尽管在技术上它们并不是)。
<?xml 问号与xml之间不能有空格。
version是使用的XML版本:1.0, 1.1
encoding是该文档所使用的字符集。该声明中引用的ISO-8859-1字符集包括大多数西欧语言用到的所有字符。默认字符在UTF-8字符集中,这是一个几乎支持世界上所有语言的字符和象形文字的Unicode标准。
standalone(可以是yes或no)定义了是否孤立处理该文档。
如果XML文档没有引用任何其它文件,则可以指定 standalone="yes"。
如果XML文档引用其它描述该文档可以包含什么的文件(如DTD),则 standalone="no"。默认值为"no"
左尖括号“<“和右尖括号“>“之间的文本
1.在< >中的称为开始标记;在</ >中的称为结束标记
2.空标记:不包含元素的标记。空标签必须以“/>”结束。格式: <空标记的名称/> <空标记的名称 属性列表/>
注意:
除空标记外,标签必须成对:有始有终。所有的开始标签和结束标签必须匹配。
在标记符“<“和"标记的名称"之间不能含有空格。在标记符"/>"前面可以有空格或回行。
标签必须嵌套正确。
标记命名规则
1.名字中可以包含字母、数字以及其它字母或文字;还可包含下划线(_)、点(.)、连字符(-)
2.名字不能以数字开头;可以用字母、文字或者下划线开头。
3.名字不能以字母xml (或XML或Xml ..)开头;
4.名字中不能包含空格。
元素
位于开始标记与结束标记间
一份文档有且只有一个根元素。
根元素下的所有元素叫“子元素”。
标签必须嵌套正确。
不包含自子元素的元素叫“叶子”;包含子元素的元素叫“分支”。
 如: <eric>…… </eric>
属性
一个元素的开始标志中的名称-值对
所有的属性值必须位于单引号或双引号中。
每一个元素的属性不允许出现超过一次。
开始标志内,类似赋值语句
 如:<eric age="80">……</eric>
注释
注释可以出现在文档的任何位置。(但不建议放在声明前面,部分浏览器会报错)
注释以 <!--开始,以 --> 结束。
注释内不能包含双连字符(--);除此之外,注释可以包含任何内容。
注释内的任何标记都被忽略
处理指令
处理指令是为使用一段特殊代码而设计的标记,简称为PI。
大多数XML文档都是以XML声明开始,该声明本身就是特殊的处理指令。
处理指令对应用程序特定的数据进行编码。一条处理指令包含一个目标,后跟数据。
用<?和?>定界符将处理指令包起来。
目标确定应用程序,而对应用程序不能识别的目标,其会忽略这些处理指令。
实体
&lt;       表示      <
&gt;       表示      >
&amp;   表示      &
&apos;   表示      单引号
&quot;   表示      双引号
自定义实体:在DTD中定义 <!ENTITY实体标志 "实体内容">
在xml中引用自定义实体,用 &实体标志; 代表实体内容。
另外,无法从键盘输入的字符可以使用字符引用,就是用字符的Unicode代码点来引用该字符。以"&#x"开始字符引用,以分号结尾,x必须为小写,使用十六进制。如: &#x003D;表示等于号。
也可以使用字符引用来引用 <,>,',",& "
查看字符的代码点(附件->系统工具->字符映射表)。
CDATA
当一段文本中出现很多实体引用和字符引用时,会导致文本数据的读写困难,CDATA段就是为了解决这一问题引入的。
DATA区段开始于 "<![CDATA[" 结束于 "]]>"
CDATA内部的所有东西都会被解析器忽略解析,不用检查它的格式。
但是CDATA段中不能嵌套另一个CDATA段。
属性
属性是标记的属性,可以为标记添加附加信息。
 (1)属性的组成
      属性是一个名值对,必须由名称和值组成,属性必须在标记的开始标记或空标记中声明,用"="为属性指定一个值。
      语法如下:
          <标记名称 属性列表/>
          <标记名称 属性列表>XXX</标记名称>
      例如: <桌子 width="40" height='100'/>
 (2)使有属性的原则
      属性不体现数据的结构,只是数据的附加信息;
      一个信息是作为一个标记的属性或子标记,取决于具体问题,不要因为属性的频繁使用破坏XML的数据结构。
      下面是一个结构清晰的XML文件:
          <楼房 height="23m" width="12m">
              <结构>混凝土</结构>
              <类别>商用</类别>
          </楼房>
XML文件允许自定义标记,所以可能出现同名字的标记,为了区分这些标记,就需要使用名称空间。
名称空间的目的是有效的区分相同的标记,其实并不真实存在。
语法: 声明有前缀的名称空间 xmlns:前缀名=名称空间的名字
声明无前缀的名称空间 xmlns=名称空间的名字 (缺省)
注意:当且仅当它们的名字相同时称二个名称空间相同,也就是说,对于有前缀的名称空间,如果二个名称空间的名字相同,即使前缀不相同,也是相同的名称空间,返之同然。前缀只是方便引用而已。
DTD验证
文档类型定义(Document Type Definition)
DTD定义了XML文档内容的结构,保证XML以一致的格式存储数据。精确的定义词汇表,对XML的内容施加约束。
符合DTD的规范XML文档称为有效的文档。由DTD定义的词汇表以及文档语法,XML解析器可以检查XML文档内容的有效性。
规范的XML文件不一定是有效的;有效的一定是规范的。
 DTD声明
1) DTD声明可以在单独的一个文件中
2) DTD声明可以内嵌在XML文件中
3) DTD声明可以一部分在单独的文件中,另一部分内嵌在XML文件中
引入外部DTD文件
<!DOCTYPE data SYSTEM "Client.dtd">
Data:根节点名称
Client.dtd:dtd文件路径
DTD四种标记声明
元素(ELEMENT)
属性(ATTLIST)
实体(ENTITY)
符号(NOTATION)
元素(ELEMENT)
XML元素类型声明
声明元素: <!ELEMENT elementName (contentModel)>
元素的内容通过内容模式来描述。
DTD内容模式的种类有:
 EMPTY  元素不能包含任何数据,但可以有属性(前提是必须声明其属性)。
 不能有子元素。不能有文本数据(包括空白,换行符)。
 DTD中定义: <!ELEMENT elementName EMPTY>
 XML中写:<elementName/>(推荐) 或者:<elementName></elementName>
 
 (#PCDATA)规定元素只包含已析的字符数据,而不包含任何类型的子元素的内容类型。
 DTD中定义: <!ELEMENT student (#PCDATA)>
 XML中合法内容: <student>watching TV</student>
 
 (Elements)元素由内容模式部件指定。
 <!ELEMENT name (child particles) >
 内容模式部件可以是下表列出的内容。
 <!ELEMENT name (a,b)> 子元素a、b必须出现,且按照列表的顺序
 <!ELEMENT name (a|b)> 选择;子元素a、b只能出现一个
 <!ELEMENT name (a) > 子元素a只能且必须出现一次
           <!ELEMENT name (a)+ > 子元素a出现一次或多次
 <!ELEMENT name (a)* > 子元素a出现任意次(包括零次、一次及多次)
 <!ELEMENT name (a)? > 子元素a出现一次或不出现
 
 l Mixed混合模式:子元素中既可有文本数据又可有下级子元素。
 <!ELEMENT rn (#PCDATA| an | en)*>“|”和“*”必须写。
 上句表示在 rn内,字符数据 或 en及an可以出现任意多次,顺序不限。
 优先写(#PCDATA) 如:(#PCDATA|name)*正确  (name|#PCDATA)*错误
 
 ANY元素可以包含任何类型的数据。
子元素(必须在DTD中有定义)和 文本数据(包括空白)。
 DTD中定义: <!ELEMENT a ANY> <!ELEMENT b ANY>
 XML中合法内容: <a>somngthing</a>或者 <a/>或者 <a><b>oo</b></a>
 今天大概说了下ELEMENT  我基本已经掌握了  明天接着DTD的讲解 

原创粉丝点击