一、XML的概述。
XML是Extensible Markup Language的简写,一种扩展性标识语言。由于在XML是Extensible Markup Language的简写,一种扩展性标识语言。
XML是用来传递数据的;XML让这些数据有了结构--一个树型结构;xml有全套的操作这种结构的方法;xml规范(或者说的实际点,xmlparser)帮你确定你创建的字符串是合法的;xml规范(或者说的实际点,xmlparser)中有办法验证这个合法性;对于拿到这个字符串的servercomponent来说,可以用xml中现成的方法来操作它。
XML本身是一种用于描述数据表现的一种形式,它用标签表示数据的意义,标签可以通过DTD,XSD实现自定义标签,实现数据的自我描述。同时通过基于XML的XSL,CSS,XLink,XPointer等技术,实现了基于XML数据的显示、链接等技术,这实现了类似HTML的功能。
XML主要设计目的就是为了实现数据的存储,传输,最后被识别。并且它可以自定义标签,实现完全面向自己企业内部的数据传输标准;如果要和其他企业通信,也可以功能定义一种标准(其实就是一个相同的DTD或是XSD),甚至是同一个行业定义一种标准,这样就可以很容易的实现不同企业之间的兼容通信。
w3schools.com给出的描述是:
1、 XML stands for EXtensible Markup Language
2、XML is a markup language much like HTML
3、XML was designed to carry data, not to display data
4、XML tags are not predefined. You must define your own tags
5、XML is designed to be self-descriptive
6、XML is a W3C Recommendation
二、XML与HTML的区别。
1、HTML是一个定型的标记语言,它用固有的标记来描述,显示网页内容。比如< H1>表示首行标题,有固定的尺寸。相对的,XML则没有固定的标记,XML不能描述网页具体的外观,内容,它只是描述内容的数据形式和结构。
2、网页将数据和显示混在一起,而XML则将数据和显示分开来。
XML和HTML都起源于SGML(Standard Generalized Markup Language),或者说都是SGML的子集。因为SGML的复杂性,才出现了相对精简的HTML和XML规范。他们都受W3C管理。
相应的w3schools.com对XML和HTML的区别也有类似的简短的描述:
1、XML is not a replacement for HTML.
2、XML and HTML were designed with different goals:
3、XML was designed to transport and store data, with focus on what data is.
4、HTML was designed to display data, with focus on how data looks.
5、HTML is about displaying information, while XML is about carrying information.
三、XML相关技术。
DTD(Documentation Type Definition,文档类型定义):定义XML文档中元素的结构和内容等。
XSD(XML Schema Definition,XML模式定义):同DTD,也是用于定义XML文档的结构和内容,不同的是它本身也是XML格式,因而更利于解析。
CSS(Cascading Style Sheets,级联样式表):定义XML文档和HTML文档的显示格式或样式。
XPath:用于在XML文档中定位查询的语言。
XSL(Extensible Stylesheet Language,可扩展样式语言):定义同CSS,用于定义XML文档的显示格式或样式,不同的是XSL是专门为XML所设计的。
XLL(Extensible Linking Language,可扩展链接语言):包括XLink(XML Linking Language,XML链接语言)定义一个文档如何与另一个文档的链接。XPointer(XML Pointer Language)定义XML文档各部分的寻址方案。
四、XML文档结构。
1、XML以声明语句开头,在之前不能有任何形式的字符。
<?xml version=”1.0” standalone=”yes/no” encoding=”UTF-8/gb2312”?>
Version表示XML的版本号;standalone表示文档是否附带DTD文件,默认为no;encoding表示文档的编码方式,默认是“UTF-8”。
2、处理指令。
包含附带XML文档的文件,以使XML解析器对相应的XML文档作出正确的处理。如:
<?xml-stylesheet type=”text/css” href=”css文件位置”?>定义css文件
<?xml-stylesheet type=”text/xsl” href=”xsl文件位置”?>定义xsl文件
3、DTD样式。
定义和XML文档相关的DTD文档,以是改DTD文档对改XML文档作出验证。
<!DOCTYPE 根元素名 SYSTEM/PUBLIC “dtd文件名”>
4、注释。
包含在<!-- 注释内容 -->
在注释内容中不可包含-->字符,且注释也不可放在声明前或是标记中(<>中),并且注释也不能嵌套。
5、元素、属性、文本。
元素、属性、文本是XML文档中最主要的内容,它们用于存储和表现数据。
<element-name attribute-name=”attribute-value”>text-content</element-name>
元素名和属性名可以包含字母,数字以及其他一些合法的字符但不能以数字或下划线开头,且名称中不能包含空格或是任何形式的xml(大小写都不可)的字符开头。对一些特殊符号,需要用实体符号替代:如< à < > à > & à & “ à " ‘ à '等。并且属性的值必须包含在双引号之间,复杂的属性值需要通过子元素来实现,即元素可以实现嵌套。不同于HTML会把多个相邻空格忽略为一个,XML不处理空格,也就是它会把空格保持原样的显示出来。
6、CDATA。
CDATA是Character Data的简称。它用于直白的显示任何特殊的非特殊的字符,除了“]]>”字符。它的存在简化了对含有许多特殊字符的文字的写法。如:<![CDATA[ 要直接显示的内容 ]]>
7、实体。
相当于C语言中的宏定义。可以先定义一个实体,然后通过 “&实体名;” 的形式来引用该实体。如上面提到过的特殊字符便是XML中预定义的实体,也可以通过Unicode或十六进制的形式来显示字符。如 “<data>©</data>”。它主要用于显示那些不能不能从键盘中敲出来的字符。引用形式: &#Unicode码; 。
XML文档具有严格的格式要求,它严格区分大小写,每个元素必须;被关闭,并且关闭的顺序必须和定义顺序保持一致,这特别要注意含有子元素的元素。任何一个格式定义良好的XML文档必须指包含一个根,它跟在;处理指令或是DTD文件定义的后面,如果没有处理指令或是DTD文档,则它跟在xml文件声明的后面。
xml存在两个特殊的属性:xml:space属性和xml:lang属性。xml:space有两个值:”preserve”和”default”用来控制空格的显示方;xml:lang用来控制语言。这两个属性都会应用于它们的子元素。
8、命名空间。
XML通过命名空间来解决命名冲突的问题,这类似c++语言中的表达方法。命名空间通过xmlns属性来定义,可以是xmlns:Diwore=”http://www.diwore.com/” 也可以是xml=”http://default.com/”来实现命名空间的定义,前者是一个名为Diwore的命名空间,因而其元素因加上Diwore的前缀,后者是一个匿名的命名空间。注意命名空间后面的地址只是作为一个标记来用,它可以不存在。
五、例子一。
File: bookstore.xml:
<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?>
<!DOCTYPE bookstore SYSTEM “bookstore.dtd”>
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
File: bookstore.dtd:
<?xml version=”1.0”?>
<!ELEMENT bookstore(book)*>
<!ELEMENT book(title, author, year, price)>
<!ELEMENT title(#PCDATA)><!ELEMENT author(#PCDATA)>
<!ELEMENT year(#PCDATA)>
<!ELEMENT price(#PCDATA)>
<ATTLIST book category CDATA #REQUIRED>
六、例子二。
1、myFile.html。
<html>
<head>
<script language="JavaScript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("myfile.xml");
nodes = xmlDoc.documentElement.childNodes;
title.innerText = nodes.item(0).text;
author.innerText = nodes.item(1).text;
email.innerText = nodes.item(2).text;
date.innerText = nodes.item(3).text;
</script>
<title>在HTML中调用XML数据</title>
</head>
<body bgcolor="#FFFFFF">
<b>标题: </b>
<span id="title"> </span>
<b>作者: </b>>
<span id="author"></span>
<b>信箱: </b>
<span id="email"></span>
<b>日期:</b>
<span id="date"></span>
</body><br><br>
</html><br><br>
2、myfile.xml。
<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML轻松学习手册</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
</myfile>