Java and XML_读书笔记_2010-05-14

JAVATMXML 2010-05-14

一、概念

l  任何XML文档对任何类型的应用以及正确的解析都必须具有良好的结构well-formed

l  XML文档可以是有效地(valid),但并非一定要求有效。

l  PIprocessing instruction)格式:<?target instructions?>XML中的处理指令只能是解析器可以识别的XML标准处理命令集中的一部分

l  DTDDocument Type Definition),为一个XML文档(或一个文档集合)监理了一套规则。DTD本身不是独立的技术规范,它属于规范的一部分,XML文档中的文档类型声明既可以是标记约束,也可以是带有标记约束的外部文档。这两种约束的综合就是DTD

l  namespace(名字空间)就是一个元素前缀与URI(统一资源标识符)之间的一种映射关系

l  XSLExtensible Stylesheet Language)可扩展样式表语言。能够改变及转换一种XML格式的XML数据,使其变为另一种XML格式。

l  XSLTExtensible Stylesheet Language Transformation,可扩展样式表语言转换)过程中,一个XSL文本样式表和一个XML文本文档被“合并到一块”,这将导致XML数据按照XSL类型而被格式化。

l  XPathXML Path LanguageXML路径语言)是一个独立的技术规范,但它为XSLT大量使用。XPath技术规范定义了一个XML文档的特定条目该如何定位。

l  XML模式(Schema)是被设计用来代替和增强DTD的。

l  XQL是被设计用来允许XML文档格式轻松地描述数据库查询的一种查询语言。

l  SAXXML简单APISimple API for XML)的缩写。提供了一个用来解析XML数据的基于事件的框架,它是扫描整个文档,并将数据拆解成几个游泳部门的一种处理过程。SAX是提供和解析XML数据的一种方法。SAX为解析器提供了一个可用的框架,而且定义了解析过程中用于监视的事件。SAX API为文档解析提供的是方法,而不是XML解析器本身。

l  DOMDocument Object Model),相比之下,SAX只是在一个XML文档范围内位数据提供通路,DOM则提供了操作此类数据的一种方式。DOM还将整个XML文档读入内存,并将所有的数据储存在节点中,是整个文档可以快速使用。这也是DOM的缺陷,占用大量的内存,文档越庞大,缺陷越明显。

l  Java是可移植的代码,XML是可移植的数据。

l  XML最流行的用法是创建内容与表现形式的分离,此时我们将应用程序的内容(content)定义为需要为客户方显示的数据,将应用程序的表述(presentation)定义为该数据的格式

l  XML-RPCB2BXSP

二、分析XML结构

<?xml version="1.0" standalone=”no”?>

<?xml-stylesheet href="XSL/JavaXML.html.xsl" type="text/xsl"?>

<?xml-stylesheet href="XSL/JavaXML.wml.xsl" type="text/xsl" media="wap"?>

<?cocoon-process type="xslt"?>

<!DOCTYPE JavaXML:Book SYSTEM "DTD/JavaXML.dtd">

 

<!-- Java and XML -->

<JavaXML:Book xmlns:JavaXML="http://www.oreilly.com/catalog/javaxml/">

      <JavaXML:Title>Java and XML</JavaXML:Title>

      <JavaXML:Contents>

          

           <JavaXML:Chapter focus="XML">

                 <JavaXML:Heading>Introduction</JavaXML:Heading>

                 <JavaXML:Topic subSections="7">What Is It?</JavaXML:Topic>

                 <JavaXML:Topic subSections="3">How Do I Use It?</JavaXML:Topic>

                 <JavaXML:Topic subSections="4">Why Should I Use It?</JavaXML:Topic>

                 <JavaXML:Topic subSections="0">What's Next</JavaXML:Topic>

           </JavaXML:Chapter>

          

           <JavaXML:Chapter focus="XML">

                 <JavaXML:Heading>Creating XML</JavaXML:Heading>

                 <JavaXML:Topic subSections="0">An XML Document</JavaXML:Topic>

                 <JavaXML:Topic subSections="2">The Header</JavaXML:Topic>

                 <JavaXML:Topic subSections="6">The Content</JavaXML:Topic>

                 <JavaXML:Topic subSections="1">What's Next?</JavaXML:Topic>

           </JavaXML:Chapter>

          

           <JavaXML:Chapter focus="Java">

                 <JavaXML:Heading>Parsing XML</JavaXML:Heading>

                 <JavaXML:Topic subSections="3">Getting Prepared</JavaXML:Topic>

                 <JavaXML:Topic subSections="3">SAX Readers</JavaXML:Topic>

                 <JavaXML:Topic subSections="9">Content Handlers</JavaXML:Topic>

                 <JavaXML:Topic subSections="4">Error Handlers</JavaXML:Topic>

                 <JavaXML:Topic subSections="0">A Better Way to Load aParser</JavaXML:Topic>

                 <JavaXML:Topic subSections="4">"Gotcha!"</JavaXML:Topic>

                 <JavaXML:Topic subSections="0">What's Next?</JavaXML:Topic>

           </JavaXML:Chapter>

          

           <JavaXML:SectionBreak/>

          

           <JavaXML:Chapter focus="Java">

                 <JavaXML:Heading>Web Publishing Frameworks</JavaXML:Heading>

                 <JavaXML:Topic subSections="4">Selecting a Framework</JavaXML:Topic>

                 <JavaXML:Topic subSections="4">Installation</JavaXML:Topic>

                 <JavaXML:Topic subSections="3">Using a Publishing Framework</JavaXML:Topic>

                 <JavaXML:Topic subSections="2">XSP</JavaXML:Topic>

                 <JavaXML:Topic subSections="3">Cocoon 2.0 and Beyond</JavaXML:Topic>

                 <JavaXML:Topic subSections="0">What's Next?</JavaXML:Topic>

           </JavaXML:Chapter>

                

      </JavaXML:Contents>

     

      <JavaXML:Copyright>&OReillyCopyright;</JavaXML:Copyright>

     

</JavaXML:Book>

l  headercontent:首部给出XML解析器和XML应用程序信息,指明了处理文档的方式;内容是XML数据本身。

l  任何XML文档中首先看到的声明就是XML指令,XML指令实际上是PI的一个特定子集。指令并不一定是一对“关键字=值”。通常以xml-[name]开头的PI指定的是[name]中所给出的与XML相关的技术

<?xml-stylesheet href="XSL/JavaXML.html.xsl" type="text/xsl"?>

<?xml-stylesheet href="XSL/JavaXML.wml.xsl" type="text/xsl" media="wap"?>

指令中给出的是一个XSL样式表,这条指令被传给XSLT引擎而不是XML解析器。第一个参照的是一个缺省的样式表(定位和类型已被指定了),第二个指定了另一种样式表,并给出了媒体属性,当发布引擎请求的媒体与指定类型相匹配,所替代的样式表就是用了。

l  初始化XML指令指令后通常是一个DOCTYPE声明。这个声明有独一无二的句法、一个特定的目的:为XML文档指定一个DTD

<!DOCTYPE JavaXML:Book SYSTEM "DTD/JavaXML.dtd">

DOCTYPE的第一个参数是文档的根元素。第二个参数是SYSTEM或者PUBLIC。该参数是由URI来标识的

l  内容包含了所有的元素、属性和包含在这些结构中的文本化数据。

l  根元素是XML文档中最高级别的元素。,在文档中必须是第一个打开最后一个关闭的标签。提供了一个XML解析器或XML应用程序能够识别出XML文档的开始和结束的参考点。

l  名字空间规范要求用一个唯一的URI与前缀联系起来,以把这个名字空间中的元素与其他名字空间中的元素区别开。推荐采用URL如本例。(难以理解)

l  元素是由任意名字描述的,并且必须包含在一对尖括号中。

<!-- Standard element opening tag -->

<JavaXML:Contents>

     

      <!-- Standard element with attribute -->

      <JavaXML:Chapter focus="XML">

     

      <!-- Element with textual data -->

      <JavaXML:Heading>Web Publishing Frameworks</JavaXML:Heading>

     

      <!-- Empty element -->

      <JavaXML:SectionBreak/>

     

<!-- Standard element closing tag -->

</JavaXML:Contents>

创建元素的第一规则是,名字必须以一个字母、数字、下划线、连字符和句点开始。不能内嵌空格。大小写敏感。用良好命名方式定义自我文档时非常必要的。每一个被打开的元素都必须依次关闭。良构文档并不一定是有效的(valid),还要看它是否符合它的DTD或者模式设定的约束集合。空元素使用<chapterIncomplete/><img src=”/imges/xml.gif”/>

l  元素属性:元素属性和他们的值可以在打开声明中,也可以在关闭声明中。

n  <JavaXML:Chapter focus="Java"> 其中focus可取值为JavaXML

n  属性名必须放在一对引号之中(单双引号都可以),普遍都是用双引号,引号中的引号也可以成为属性值的一部分()使用时慎重

n  何时使用属性:用元素来描述有规律的数据,用属性来描述系统数据

n  实体引用(entity reference)是XML中的一种特殊的数据类型,用于饮用另外一些数据段。格式为:&[entity name];

n  当大量字符要实体引用进行转换,或者当空格必须要保留下来时,要用CDATA项标记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值