J2ee Tutorial学习笔记(第二章Understanding XML)
一.Introduction to XML:
1.XML(Extensible Markup Language)是基于文本标记语言,用<>标记数据,成为Tag,但它不象HTML,XML标签确定的是数据,而不是详细的说明这个文件怎么显示,XML主要关系其中的数据.
例:<Message>
<to> you@yourAddress.com.</to>
<from>me@myAddress.com</from>
<subject>XML is Really Cool</subject>
<text>how many ways is xml cool ?let me count the way
</text>
</message>
这个例子的Tag从整体上确定了这个message.包括其目的地址.发送地址.标题和其内容.像HTML一样<to>...</to>之间决定了XML的数据成分,而<to>...</to> tag又包涵在<message>...</message>中,这种一个Tag包涵另一个Tag可使XML的描述成分等级的数据结构.
2.Tag and Attributes:
tag自身也可以有其自身的Additional information.包涵在tag自身中
例:<Message to = "you@yourAddress.com." from= "me@myAddress.com"
<subject>XML is Really Cool</subject>
<text>how many ways is xml cool ?let me count the way
</text>
</message>
与上例相同,只是它把 to 和 from做进了 message 也就是作为了tag的 additional information可以简化代码,易于理解.
3.Empty Tag A1:html与XML很大的区别在与当一个xml文件很好的形成时,其附加的制约条件也是很多的,其中最重要的就是每个Tag都要有结束Tag,所以在XML中例如</to>的结尾是必不可少的.(另外一个很重要的条件是所有的Tag都是严格嵌套的,也就是你可以<message>...<to>...</to>...</message>但是不可以<message>...<to>...</message>...</to>.这是不允许的.
A2:有时你想建立一个空的tag你可以以 />来结尾 例如:
<Message>
<to> you@yourAddress.com.</to>
<from>me@myAddress.com</from>
<subject>XML is Really Cool</subject>
<flag/>
<text>how many ways is xml cool ?let me count the way
</text>
</message>
A3:XML文件注释 以<!--This is a comment--> 注释
A4:XML prologue:<?xml version="1.0"?>或<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
xml文件都以<?...?>prologue.这里规定了xml文件的标准格式 version=1.0 编码格式用 ISO-8859-1.standalone表明这个文件是否和内部entity相联系或是和外部数据type说明联系.有联系是yes.
A5:处理说明:<? target instruction to do?>target就是the name of application to do processding.
A6:为什么XML很重要:
B1:用于解释文本.要知道xml不是2进制的格式编写的,所以你可以用任何编辑器来编写xml文件,通常xml文件体积都很小,所以允许数据库保存大量的xml数据.
B2.Data坚定:XML告诉我们有什么样的data.而不是怎样去display it.
B3.stylability.当显示变得很重要时xml将告诉你怎么样描述data.例如:
<to>you@yourAddress.com</to>为我们描述了一下事件.1.start a new line.2Display"to"in bold,followed by a space.3.Display the destination datas.
这些所描述的都是为了 这个意思 To:you@yourAddress.com 告诉我们了送到你的地址去了,更重要得失xml是很自由的,你可以用一种不同的stylesheet来标记你的描述,可以是TEX PDF或者是还没有发明的文本格式.
B4.Linkablity.在此我们还要感谢HTML,明确了文件与文件之间的联系是越发的重要了.XML确定2种links:mutiple-target links(多目标连接),expanding links.(扩展连接).
B5.处理方便.上述的那些正规的XML标记语言统一的符号使XML的Process很容易进行,由于XML很严格的标记方法,使XML文件很好的形成,而不会有什么处理差错.但是不标准的标记方法XML是不执行的.
B6.分等级的XML:XML从它的等级结构使XML文件的访问速度更加的快.因为你只需要加载你想要的东西.
4.XML and specs:Digesting the Alphabet soup
以上你对XML有了一定的基础了解了.有必要深入XML了解更多的XML相关的缩写格式,它们代表了什么,通用的APIS访问XML文件即是连续的有可以是随机的,2种API分别是.SAX,和DOM.而确保XML的有效性的是DTD.另一种标准的性质是XSL Standard.一个对XML翻译的之际.例如将HTML转换为XML形式或者其他目前未知的新的XML技术,指明文件怎样执行的,还有一个技术就是XML link language specification可是2个XML文件连接.
还有一些新的技术,XHTML,XML,SMIL,MATHML,SVG....
C1.Basic standard
SAX(simple API for XML)你可以理解它为 连续访问协议,这是一个快速执行的机制,可是你在sever上read.write XML DATA ,你可以理解它为事件驱动协议,因为这技术注册一个SAX解释器.此后当这个解释器看到新的XML tag的时候就会反馈响应的方法.
C2.DOM(Document object model)
DOM协议将使你的XML文件转换为一个集合的对象时你可以操控对象模型,他是radom access协议的很好的表现,因为你可以修改数据,删除,或插入任何新的数据.
C3.JDOM和jom4j:在此提出之所以Dom有它的局限性,因为它不提供基于OO的方法,但是JDOM能提供,而且更加容易方便.JDOM是一个更新更清晰的更小的API,当coding style更重要时.JDOM是很不错的选择.
jdom4j是一个更小的执行更快的API.
C4.DTD是可选的,可以包括在你的XML文件种,也可以不,但是它能够给与你良好的XML规范.
C5.XSL(Extensible stylesheet language)
此处再次强调XML文件指明的是怎样识别DATA而不是关心怎样去显示它,而HTML恰好相反.而XSL包括2个部分(XSTL(transfom standard) XSL-FO(Formating object))XSL-Fo可以让你识别multiple area on pages.且link他们.
C.6:XSTL (extensible stylesheet language for transformation)而Xpath stanrad is a addressing 机制.
C6.DTD不是分级的,举一个例子<!ELEMENT mail Address(name,address,zipcode)>
<!ELEMENT mail Address(#PCDATA)>
<!ELEMENT zipcode(#PCDATA)>
正如你所看到的这些说明都是线性的,迫使现对这样以后面对名名相同的元素以相同的名称,如果你想加入这些元素例如<firstname><secondname>时你就需要一个新的标识符.
container中.
D1.XML Schema:其标准的可分为2个部分,一部分指定数据之间的关系,(也是最复杂的,一部分另一部分是确认XML内容通过确定其中的元素的数据类型.
D2.RELEX NG(regular language discripition for xml)
D3.TREX :Tress regular expression for xml
D4.SXO :Schema for object-oriented XML
F1.连接陈述标准:XML linking 中有很多分支:1.XLink是处理XML文件之间的link问题的,这种link的方法可以提供很多很复杂的link'形式,如多文档link,多重link,等.
2.XMLBase和Xpointer.一般来说xml文件处理都是由文件对文件的处理通过他们的ID.而用Xpointer可以不用通过ID来处理.
3.XHTML:是XML文档以HTML形式表现出来.
G1.Knowlage standard:RDF Schema
5.建立XML文件:这一节你可以学到如何建立XML文件,你可以用文本编辑器来编写自己的xml文件.
1.用文本编辑器,建立一个名叫sildesample.xml文件
2.下一步写声明,声明这是一个xml文件,以<?开头, <? xml version="1.0" encoding='utf-8'?>说明其xml version是1.0的用的是8-bit unicode来编写xml的文件的.
3.写注释:<!---A sample Set of slides--!>注释是不会被执行的.
4.先编写最地层的元素 <? xml version="1.0" encoding='utf-8'?>
<!---A sample Set of slides--!>
<slideshow>
</slideshow>
5.添加属性:<sildeshow>
title="Sample Slide Show"
data="Data of publication"
author="yours truly"
</slideshow>
6.添加嵌套元素:
<slideshow
...
>
<!---TITLE SLIDE --->
<slide type="all">
<title> Wake up to wonder weidgets!</title>
</slide>
</slideshow>
7.添加HTML形式的文本,以HTML形式的文本都是用<em>来标识的
<?xml version='1.0' encoding='utf-8'?>
<!-- A SAMPLE set of slides -->
<slideshow
title="Sample Slide Show"
date="Date of publication"
author="Yours Truly"
>
<!-- TITLE SLIDE -->
<slide type="all">
<title>Wake up to WonderWidgets!</title>
</slide>
<!-- OVERVIEW -->
<slide type="all">
<title>Overview</title>
<item>Why <em>WonderWidgets</em> are great</item>
<item/>
<item>Who <em>buys</em> WonderWidgets</item>
</slide>
</slideshow>
8.完整代码: <?xml version="1.0" encoding="utf-8" ?>
- <!-- A SAMPLE set of slides
-->
- <slideshow title="Sample Slide Show" date="Date of publication" author="Yours Truly">
- <!-- TITLE SLIDE
-->
- <slide type="all">
<title>Wake up to WonderWidgets!</title>
</slide>
- <!-- OVERVIEW
-->
- <slide type="all">
<title>Overview</title>
- <item>
Why
<em>WonderWidgets</em>
are great
</item>
<item />
- <item>
Who
<em>buys</em>
WonderWidgets
</item>
</slide>
</slideshow>
9.建立DTD(Document Type Definition):现在我们学习怎样建立,首先建立一个名为slideshow的文件,写入XML声明 如下:
<?xml version='1.0' encoding='utf-8'?>
<!--DTD for a simple "slide show"---!> 然后写入一下语句声明,slide元素包涵在slide元素中
<! ELEMENT slideshow(slide)+>
以此例你可以看出DTD文件以<!开头,其后跟着的是标签名(ELMENT)其后是要定义的元素的名字(slideshow)
10.定义文本和嵌套元素
<!ELEMENT slideshow(slide+)>
<!ELELMET slide(tiltle ,item*)>
<!ELEMTET slilde(#PCDATA)>
<!ELEMENT slide(#PCDATA | item)*>
第二行说明slide中有title跟随着0个或更多的item,第三行说明title中包括PCDATA剖析器.第四行的 | 标识符说明"或"的关系,在这种情况下PCDATA或item都是可用的 将文件保存为 slidesamplela.dtd
11.在DTD中定义属性和实体: 定义属性: 在我们刚才的例子中添加以下代码
<!ATTLIST slideshow
title CDATA #REQUIRED
data CDATA #IMPLIED
author CDATA "unknow"
>
<!ELMENET slide(title,item*)>
ATTLIST 后跟的就是我们定义的slideshow 这个文件