J2ee Tutorial学习笔记(第二章Understanding XML) 一.Introduction to XML: 1.XML(Extensible Markup Language)是基于文本标记语言,用<>标记数据,成为Tag,但它不象HTML,XML标签确定的是数据,而不是详细的说明这个文件怎么显示,XML主要关系其中的数据. 例:<Message> <to> [email protected].</to> <from>[email protected]</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 = "[email protected]." from= "[email protected]" <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> [email protected].</to> <from>[email protected]</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>[email protected]</to>为我们描述了一下事件.1.start a new line.2Display"to"in bold,followed by a space.3.Display the destination datas. 这些所描述的都是为了 这个意思 To:[email protected] 告诉我们了送到你的地址去了,更重要得失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 这个文件

|