<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>sxhong的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=sxhong</link>
<description>sxhong的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[trackbacks]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=12034</link>
<author>sxhong</author>
<pubDate>2006/2/26 13:22:35</pubDate>
<description><![CDATA[测试]]></description>
</item><item>
<title><![CDATA[jakarta-ant的使用(java编译工具)]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=6141</link>
<author>sxhong</author>
<pubDate>2005/5/27 13:12:28</pubDate>
<description><![CDATA[<P>jakarta-ant的使用(java编译工具)<BR>一：介绍： <BR>ant 是jakarta的一个编译工具，如果你了解linux/Unix下的makefile你就很容易 <BR>理解ant的用途了。ant最适合你使用UltraEdit(EditPlus)写java程序，然后你使用ant去编译，同时javadoc ,生成一个jar,war，实现文件的copy都可以在build.xml通过不同的tager去实现，还是很方便的一个东东强烈推荐是使用。 <BR>二：下载 <BR>你可以从下面的地址下载到ant,目前版本：1.41 <BR><A href="http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/">http://jakarta.apache.org/builds/jakarta-ant/release/v1.4.1/bin/</A> </P>
<P>三：安装 <BR>a:)Windows <BR>1:解压你下载的文件，会有一个jakarta-ant(版本号的)目录产生，把他改名为ant <BR>2:copy ant 目录到你需要的位置。 <BR>3:在环境变量中添加：ANT_HOME=ant的安装目录，path中加$ANT_HOME$\in;注意你同时必须已经安装了jdk,并添加了JAVA_HOME的环境变量，同时早path中加了$JAVA_HOME$\in; </P>
<P>b:)Linux/Unix <BR>1:解压你下载的文件，会有一个jakarta-ant(版本号的)目录产生，把他改名为ant <BR>2:copy ant 目录到你需要的位置。 <BR>3:在环境变量中添加：ANT_HOME=ant的安装目录，path中加$ANT_HOME$\in;注意你同时必须已经安装了jdk,并添加了JAVA_HOME的环境变量，同时早path中加了$JAVA_HOME$\in;实现修改环境变量你需要修改.bash_profile文件。 <BR>如下 <BR>ANT_HOME=/usr/local/ant <BR>JAVA_HOME=/usr/local/jdk <BR>PATH=$PATH:$HOME/bin:/usr/local/ant/bin:/usr/local/jdk/bin </P>
<P>export PATH ANT_HOME JAVA_HOME </P>
<P>四:编写build.xml <BR>build.xml相当Linux下的makefile,具体的实现都在build.xml中实现。 <BR>我给给例子说明一下。 <BR>build.xml <BR>================================================================ <BR>&lt;project name="bingo" default="build" basedir="../.." &gt; <BR>&lt;!--basedir设定工作目录--&gt; <BR>&lt;property name="version" value="1.0"/&gt; </P>
<P>&lt;!-- The base directory relative to which most targets are built --&gt; <BR>&lt;property name="base" value="."/&gt; </P>
<P>&lt;!-- The directory where source files are stored. --&gt; <BR>&lt;property name="java.source.dir" value="bingo/src"/&gt; <BR>&lt;!--代码保存路径--&gt; <BR>&lt;!-- Destination for compiled files --&gt; <BR>&lt;property name="javac.dest" value="bingo/classes"/&gt; <BR>&lt;!--class保存路径--&gt; <BR>&lt;!-- Destination for generated jar files --&gt; <BR>&lt;property name="jar.dest" value="bingo/jar"/&gt; <BR>&lt;!--jar文件保存路径--&gt; <BR>&lt;!-- Destination for documentation files generated or not --&gt; <BR>&lt;property name="docs" value="bingo/docs"/&gt; <BR>&lt;!--javadoc文件保存路径--&gt; <BR>&lt;!-- Destination for javadoc generated files --&gt; <BR>&lt;property name="javadoc.dest" value="bingo/docs"/&gt; </P>
<P>&lt;!-- The stem where most log4j source code is located. --&gt; <BR>&lt;property name="stem" value="com/bingo"/&gt; </P>
<P>&lt;property name="base-files" value="include"/&gt; </P>
<P>&lt;!-- Original manifest.mf file before filtering. --&gt; <BR>&lt;property name="manifest.src" value="bingo/build/manifest.mf"/&gt; </P>
<P>&lt;!-- Some targets needs a more precise stem. --&gt; <BR>&lt;property name="BSTEM" value="${java.source.dir}/${stem}"/&gt; </P>
<P>&lt;property name="tomcat.dir" value="c:/Apache/Tomcat"/&gt; </P>
<P>&lt;property name="webapp.dir" value="${tomcat.dir}/webapps/ROOT/WEB-INF/classes"/&gt; </P>
<P>&lt;!--List all Package used in this project --&gt; <BR>&lt;property name="PackageList" value=" <BR>com.bingo, <BR>com.bingo.database, <BR>com.bingo.dbocw, <BR>com.bingo.util, <BR>com.bingo.taglibs.jndi, <BR>com.bingo.finance.database, <BR>com.bingo.finance.entity, <BR>com.bingo.finance.manager" <BR>/&gt; <BR>&lt;!--你的project中所有的包--&gt; <BR>&lt;!-- List all jar or file used in this project --&gt; <BR>&lt;property name="classpath" value="${classpath}; <BR>${base-files}/tomcat/servlet.jar; <BR>${base-files}/tomcat/webserver.jar; <BR>${base-files}/log4j/log4j.jar; <BR>${base-files}/log4j/log4j-core.jar" </P>
<P>/&gt; <BR>&lt;!--你需要用到的包--&gt; <BR>&lt;target name="init"&gt; <BR>&lt;tstamp /&gt; <BR>&lt;/target&gt; </P>
<P>&lt;target name="build" depends="init"&gt; <BR>&lt;echo&gt; <BR>Building... <BR>&lt;/echo&gt; </P>
<P>&lt;mkdir dir="${javac.dest}" /&gt; <BR>&lt;javac srcdir="${java.source.dir}" <BR>destdir="${javac.dest}" <BR>classpath="${classpath}" <BR>debug="on"/&gt; </P>
<P>&lt;/target&gt; <BR>&lt;!-- ================================================================= --&gt; <BR>&lt;!-- Copy class files to tomcat dir. --&gt; <BR>&lt;!-- ================================================================= --&gt; <BR>&lt;target name="copy" depends="build"&gt; <BR>&lt;copy todir="${webapp.dir}/com/bingo"&gt; <BR>&lt;fileset dir="${javac.dest}/com/bingo"&gt; <BR>&lt;include name="*.class"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/copy&gt; <BR>&lt;copy todir="${webapp.dir}/com/bingo/util"&gt; <BR>&lt;fileset dir="${javac.dest}/com/bingo/util"&gt; <BR>&lt;include name="*.class"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/copy&gt; <BR>&lt;copy todir="${webapp.dir}/com/bingo/database"&gt; <BR>&lt;fileset dir="${javac.dest}/com/bingo/database"&gt; <BR>&lt;include name="*.class"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/copy&gt; <BR>&lt;copy todir="${webapp.dir}/com/bingo/dbocw"&gt; <BR>&lt;fileset dir="${javac.dest}/com/bingo/dbocw"&gt; <BR>&lt;include name="*.class"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/copy&gt; <BR>&lt;copy todir="${webapp.dir}/com/bingo/finance/database"&gt; <BR>&lt;fileset dir="${javac.dest}/com/bingo/finance/database"&gt; <BR>&lt;include name="*.class"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/copy&gt; <BR>&lt;copy todir="${webapp.dir}/com/bingo/finance/entity"&gt; <BR>&lt;fileset dir="${javac.dest}/com/bingo/finance/entity"&gt; <BR>&lt;include name="*.class"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/copy&gt; <BR>&lt;copy todir="${webapp.dir}/com/bingo/finance/manager"&gt; <BR>&lt;fileset dir="${javac.dest}/com/bingo/finance/manager"&gt; <BR>&lt;include name="*.class"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/copy&gt; <BR>&lt;/target&gt; </P>
<P>&nbsp;</P>
<P>&lt;!-- ================================================================= --&gt; <BR>&lt;!-- Remove all generated (compiled) class files. --&gt; <BR>&lt;!-- ================================================================= --&gt; <BR>&lt;target name="clean" depends="init"&gt; <BR>&lt;delete dir="${javac.dest}/" /&gt; <BR>&lt;/target&gt; </P>
<P>&lt;!-- ================================================================= --&gt; <BR>&lt;!-- Remove all backup files. --&gt; <BR>&lt;!-- ================================================================= --&gt; <BR>&lt;target name="delete" depends="init"&gt; <BR>&lt;delete &gt; <BR>&lt;fileset dir="${java.source.dir}/com/bingo"&gt; <BR>&lt;include name="*.bak"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/delete&gt; <BR>&lt;delete &gt; <BR>&lt;fileset dir="${java.source.dir}/com/bingo/util"&gt; <BR>&lt;include name="*.bak"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/delete&gt; <BR>&lt;delete &gt; <BR>&lt;fileset dir="${java.source.dir}/com/bingo/database"&gt; <BR>&lt;include name="*.bak"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/delete&gt; <BR>&lt;delete &gt; <BR>&lt;fileset dir="${java.source.dir}/com/bingo/finance/database"&gt; <BR>&lt;include name="*.bak"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/delete&gt; <BR>&lt;delete &gt; <BR>&lt;fileset dir="${java.source.dir}/com/bingo/finance/entity"&gt; <BR>&lt;include name="*.bak"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/delete&gt; <BR>&lt;delete &gt; <BR>&lt;fileset dir="${java.source.dir}/com/bingo/finance/manager"&gt; <BR>&lt;include name="*.bak"/&gt; <BR>&lt;/fileset&gt; <BR>&lt;/delete&gt; <BR>&lt;/target&gt; </P>
<P>&nbsp;</P>
<P>&lt;!-- ================================================================= --&gt; <BR>&lt;!-- Remove the temporary manifest file, actual work is done in the --&gt; <BR>&lt;!-- dependencies. --&gt; <BR>&lt;!-- ================================================================= --&gt; </P>
<P>&lt;target name="prejar" depends="build"&gt; <BR>&lt;mkdir dir="${jar.dest}"/&gt; <BR>&lt;filter token="version" value="${version}" /&gt; <BR>&lt;copy file="${manifest.src}" tofile="${jar.dest}/manifest.mf" <BR>filtering="true"/&gt; <BR>&lt;/target&gt; </P>
<P>&lt;!-- ================================================================= --&gt; <BR>&lt;!-- This target Create bingo.jar --&gt; <BR>&lt;!-- ================================================================= --&gt; <BR>&lt;target name="jar" depends="prejar"&gt; <BR>&lt;delete file="${jar.dest}/bingo.jar"/&gt; <BR>&lt;jar jarfile="${jar.dest}/bingo.jar" basedir="${javac.dest}" <BR>manifest="${jar.dest}/manifest.mf" <BR>/&gt; <BR>&lt;/target&gt; </P>
<P>&lt;!-- ================================================================= --&gt; <BR>&lt;!-- This target builds the javadoc files. --&gt; <BR>&lt;!-- ================================================================= --&gt; <BR>&lt;target name="javadoc" depends="build,init"&gt; <BR>&lt;mkdir dir="${javadoc.dest}" /&gt; <BR>&lt;javadoc sourcepath="${java.source.dir}" <BR>destdir="${javadoc.dest}" <BR>classpath="${classpath}" <BR>packagenames="${PackageList}" <BR>version="true" <BR>protected="true" <BR>author="true" <BR>use="true" <BR>windowtitle="Bingo Free Java Code Version ${version}" <BR>header="Bingo Free Java Code${version}" <BR>/&gt; <BR>&lt;/target&gt; <BR>&lt;/project&gt; <BR></P>]]></description>
</item><item>
<title><![CDATA[妙语连珠！！！]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=5850</link>
<author>sxhong</author>
<pubDate>2005/5/17 10:40:01</pubDate>
<description><![CDATA[
<P>标&nbsp; 题: 妙语连珠！！！<BR>发信站: BBS 蓝色星空站 (Mon May 16 19:56:40 2005)</P>
<P>Money is not everything. There’s Mastercard &amp; Visa.<BR>&nbsp;&nbsp;&nbsp; 钞票不是万能的,有时还需要信用卡.</P>
<P>&nbsp;&nbsp;&nbsp; One should love animals. They are so tasty.<BR>&nbsp;&nbsp;&nbsp; 每个人都应该热爱动物,因为它们很好吃 .</P>
<P>&nbsp;&nbsp;&nbsp; Save water. Shower with your girlfriend.<BR>&nbsp;&nbsp;&nbsp; 要节约用水,尽量和女友一起洗澡.</P>
<P>&nbsp;&nbsp;&nbsp; Love the neighbor. But don’ t get caught.<BR>&nbsp;&nbsp;&nbsp; 要用心去爱你的邻居,不过不要让她的老公知道.</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Every man should marry. After all, happiness is not the only thing in l<BR>ife.<BR>&nbsp;&nbsp;&nbsp; 再快乐的单身汉迟早也会结婚,幸福不是永久的嘛 .</P>
<P>&nbsp;&nbsp;&nbsp; The wise never marry, And when they marry they become otherwise.<BR>&nbsp;&nbsp;&nbsp; 聪明人都是未婚的,结婚的人很难再聪明起来.</P>
<P>&nbsp;&nbsp;&nbsp; Success is a relative term. It brings so many relatives.<BR>&nbsp;&nbsp;&nbsp; 成功是一个相关名词,他会给你带来很多不相关的亲戚(联系).</P>
<P>&nbsp;&nbsp;&nbsp; Never put off the work till tomorrow what you can put off today.<BR>&nbsp;&nbsp;&nbsp; 不要等明天交不上差再找借口, 今天就要找好.</P>
<P>&nbsp;&nbsp;&nbsp; Love is photogenic. It needs darkness to develop.<BR>&nbsp;&nbsp;&nbsp; 爱情就象照片,需要大量的暗房时间来培养.</P>
<P>&nbsp;&nbsp;&nbsp; Children in backseats cause accidents. Accidents in backseats cause childr<BR>en.<BR>&nbsp;&nbsp;&nbsp; 后排座位上的小孩会生出意外, 后排座位上的意外会生出小孩.</P>
<P>&nbsp;&nbsp;&nbsp; “Your future depends on your dreams.“ So go to sleep.<BR>&nbsp;&nbsp;&nbsp; “现在的梦想决定着你的将来“,所以还是再睡一会吧.</P>
<P>&nbsp;&nbsp;&nbsp; There should be a better way to start a day than waking up every morning.</P>
<P>&nbsp;&nbsp;&nbsp; 应该有更好的方式开始新一天,而不是千篇一律的在每个上午都醒来.</P>
<P>&nbsp;&nbsp;&nbsp; “Hard work never killed anybody.“ But why take the risk?<BR>&nbsp;&nbsp;&nbsp; 努力工作不会导致死亡 !不过我不会用自己去证明.</P>
<P>&nbsp;&nbsp;&nbsp; “Work fascinates me.“ I can look at it for hours!<BR>&nbsp;&nbsp;&nbsp;&nbsp; 工作好有意思耶!尤其是看着别人工作.</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; God made relatives; Thank God we can choose our friends.<BR>&nbsp;&nbsp;&nbsp;&nbsp; 神决定了谁是你的亲戚,幸运的是在选择朋友方面他给了你留了余地.</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; When two’s company, three’s the result!<BR>&nbsp;&nbsp;&nbsp;&nbsp; 两个人的状态是不稳定的,三个人才是!</P>
<P>&nbsp; 　　The more you learn, the more you know, The more you know, the more you f<BR>orget. The more you forget, the less you know. So why bother to learn.<BR>&nbsp;&nbsp;&nbsp; 学的越多,知道的越多, 知道的越多,忘记的越多, 忘记的越多,知道的越少, 为什么学<BR>来着</P>]]></description>
</item><item>
<title><![CDATA[成功的CIO]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=5832</link>
<author>sxhong</author>
<pubDate>2005/5/16 10:23:33</pubDate>
<description><![CDATA[<A></A>
<P style="COLOR: #336699; TEXT-INDENT: 0px; LINE-HEIGHT: 150%" align=center><B>成功的CIO</B></P>
<P style="TEXT-INDENT: 0px; LINE-HEIGHT: 110%"><SPAN class=ln>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;企业信息化是一个很热的话题，但如何引入企业信息系统并取得良好的应用效果确实是横在企业面前的一个大难题。有一点不可置疑的是：一个称职的信息主管是非常重要和关键的。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;信息主管（Chief Information Officer,首字母简略形式为CIO）这一族是近几年在中国崛起的职业群体，它是高度发展的信息技术和机构信息处理数量日增的产物。在经过全球化竞争的压力下，各大企业纷纷意识到信息化策略的重要性，纷纷开始寻求熟谙信息化策略设计人才，但此时通晓懂信息科技的人才，不了解产业知识与企业流程；而详悉企业策略、流程的经理却对电脑网络束手无策，正是在这种背景下，CIO一族脱颖而出。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;美国电子前线基金会发起人约翰·佩里·巴洛说："信息是一种活动。……信息一词是动词，不是名词。……事实上，信息是心灵之间，或与物体之间，或与其他信息之间互动时所产生的那个东西。"看作是活动或活动产生的结果，那么，信息主管就是促成这种活动，并把这种活动结果当作工作对象加以研究利用的职业群体。随着信息科技的发展和应用，信息科学和信息技术对组织的价值与功能也越来越重要，信息管理人员也从过去单纯地协助数据处理的会计师、统计师、文书，到进入管理决策过程的秘书、助理，再提高到今天的制定信息支持策略和全局策略的"信息主管"，从这个发展趋势来分析，可以明显地觉察到信息处理专业人员在未来的企业经营与竞争中，将扮演不可或缺的角色。25年前，信息工作人员只是进行各项信息处理，现在的信息主管则必须既明察秋毫，又统揽全局，惟有如此方能真正切合实际业务需求，协助总裁寻找企业商机、制定企业策略，并作出正确的决策。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;信息官已经涉及四个领域：决策层、管理、技术及竞争优势。与这四个领域相关，信息主管这个群体要具备如下的基本素质：1.拟订组织内部信息应用的策略和规划的能力和见识；2.对企业经营要有深刻的了解；3.随时准备改进企业工作和生产方式的助推能力；4.优良的沟通协调、形成组织内部共识的能力；5.掌握信息科技最新知识；6.能熟练运用各项信息工具；7.物色优秀的信息管理人才的能力。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;七条基本素质中，前四条是一个高级管理者和策划者必须具备的能力，无论是把握企业整体战略、生产流程的知识，还是改变组织工作方式的设想，甚至沟通上下形成共识的能力，其目的和归宿只有一个：制定新的企业信息应用策略和规划，促进组织的信息化，最终决策过程信息化。第五、六条是方法和手段，信息主管为组织内部的信息处理提供技术支持，这种支持来自对信息科技的直接把握，软件、硬件是最现代的，系统分析方法必须是模式化和程序化的，提供的分析数据才可能具备科学性和合理性。最后一条指的是信息管理部门自身建设，"物色"能力包括发现、培训、凝聚人才的潜力，主管手下无弱兵，各人都能独挡一面，首席方能运筹帷幄。 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CIO的内涵是信息资源管理，确切地说，是战略信息管理。显然，我国CIO能够达到这个层次的还很少。我国CIO族群的发展尚处初级阶段，其标志是：（1）本国CIO的真实内涵尚未明确；（2）对这个群体的现状缺乏整体描述和调查；（3）没有建立各层面的CIO交流媒体和空间；（4）没有找到缩小与先进国家CIO之间差距的根本途径和方法，目前学到的CIO工作方法无法实现战略信息管理的目标。&nbsp;</SPAN></P>]]></description>
</item><item>
<title><![CDATA[据说被称为世上最经典的24句话]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=5583</link>
<author>sxhong</author>
<pubDate>2005/5/8 10:53:18</pubDate>
<description><![CDATA[
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" height="100%" cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top><A href="http://www.crazystudy.com/crazy/misc.php?action=viewkarma&amp;tid=7879&amp;pid=19431" name=pid19431 alt="查看评分记录"></A><SPAN class=smalltxt><SPAN class=bold>据说被称为世上最经典的24句话</SPAN></SPAN><BR><BR><SPAN style="FONT-SIZE: 12px">1．记住该记住的，忘记该忘记的。改变能改变的，接受不能改变的<BR><BR>2．能冲刷一切的除了眼泪，就是时间，以时间来推移感情，时间越长，冲突越淡，仿佛不断稀释的茶。<BR><BR>3．怨言是上天得至人类最大的供物，也是人类祷告中最真诚的部分<BR><BR>4．智慧的代价是矛盾。这是人生对人生观开的玩笑。<BR><BR>5．世上的姑娘总以为自己是骄傲的公主（除了少数极丑和少数极聪明的姑娘例外）<BR><BR>6．如果敌人让你生气，那说明你还没有胜他的把握<BR><BR>7．如果朋友让你生气，那说明你仍然在意他的友情<BR><BR>8．令狐冲说“有些事情本身我们无法控制，只好控制自己。”<BR><BR>9．我不知道我现在做的哪些是对的，那些是错的，而当我终于老死的时候我才 知道这些。所以我现在所能做的就是尽力做好每一件事，然后等待着老死。<BR><BR>10．也许有些人很可恶，有些人很卑鄙。而当我设身为他想象的时候，我才知道：他比我还可怜。所以请原谅所有你见过的人，好人或者坏人<BR><BR>11．鱼对水说你看不到我的眼泪，因为我在水里．水说我能感觉到你的眼泪，因为你在我心里。<BR><BR>12．快乐要有悲伤作陪，雨过应该就有天晴。如果雨后还是雨，如果忧伤之后还是忧伤．请让我们从容面对这离别之后的离别。 微笑地去寻找一个不可能出现的你！<BR><BR>13．死亡教会人一切，如同考试之后公布的结果？？虽然恍然大悟，但为时晚矣！<BR><BR>14．你出生的时候，你哭着，周围的人笑着；你逝去的时候，你笑着，而周围的人在哭！<BR><BR>15．男人在结婚前觉得适合自己的女人很少，结婚后觉得适合自己的女人很多<BR><BR>16．于千万人之中，遇见你所遇见的人；于千万年之中，时间的无涯荒野里，没有早一步，也没有晚一步，刚巧赶上了<BR><BR>17．每个人都有潜在的能量，只是很容易:被习惯所掩盖，被时间所迷离,被惰性所消磨.<BR><BR>18．人生短短几十年，不要给自己留下了什么遗憾，想笑就笑，想哭就哭，该爱的时候就去爱，无谓压抑自己<BR><BR>19．《和平年代》里的话：当幻想和现实面对时，总是很痛苦的。要么你被痛苦击倒，要么你把痛苦踩在脚下<BR><BR>20．真正的爱情是不讲究热闹不讲究排场不讲究繁华更不讲究嚎头的<BR><BR>21．生命中，不断地有人离开或进入。于是，看见的，看不见的；记住的，遗忘了。生命中，不断地有得到和失落。于是，看不见的，看见了；遗忘的，记住了。 然而，看不见的，是不是就等于不存在？记住的，是不是永远不会消失？<BR><BR>22．我们确实活得艰难，一要承受种种外部的压力，更要面对自己内心的困惑。在苦苦挣扎中，如果有人向你投以理解的目光，你会感到一种生命的暖意，或许仅有短暂的一瞥，就足以使我感奋不已。<BR><BR>23．我不去想是否能够成功,既然选择了远方,便只顾风雨兼程；我不去想,身后会不会袭来寒风冷雨,既然目标是地平线,留给世界的只能是背影.<BR><BR>24．后悔是一种耗费精神的情绪.后悔是比损失更大的损失,比错误更大的错误.所以不要后悔</SPAN> <BR><BR></TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[[收藏]XQuery及XSLT处理器Saxon简介 -- 作者：ksu99]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=1069</link>
<author>sxhong</author>
<pubDate>2004/12/17 23:28:54</pubDate>
<description><![CDATA[<B>XQuery及XSLT处理器Saxon简介</B><BR><BR>XQuery及XSLT处理器Saxon简介 
<P></P>
<P>Saxon 是由英国的Michael Kay开发的XSLT与XQuery处理器，自从1999年以开源产品发布，引导着XSLT处理器技术，并赢得较高声誉。迄今依然是仅有的XSLT2.0规范草案的实现，在很大程度上推动了XSLT语言的普及。<BR>从2003年中发布的7.6版开始，Saxon增加了对XQuery的支持。两种语言的运行期代码是相同的，这说明，事实上它们有非常相似的语义。Saxon中的XQuery支持本质上由一个XQuery解析器（也是XPath解析器的扩展）组成；解析器与XSLT处理器一样，生成相同的内部可解释的代码。<BR>XQuery处理器没有提供图形用户界面，可以从操作系统的命令行调用，也可以通过Java应用程序的API调用。 <BR>Saxon是一个内存处理器。无论使用XSLT还是XQuery，Saxon被设计来处理在内存中装配好的源。<BR>Saxon也是仅有的在一个集成包中提供XSLT和XQuery的产品，可以使用每种语言以获得最好的效果。两个接口是互补的：你可以在XQuery中写一个函数库，并在XSLT样式表中调用此函数。<BR>Saxon介绍<BR>版本8.1.1是最新的Saxonica的对XPath2.0、XSLT2.0和XQuery1.0的实现。这个版本实现了这些语言的模式敏感（schema-aware）的特性，也包含一个自立的符合XML Schema1.0的模式处理器。<BR>Saxon 8.1 是在与Stylus Studio合作下开发的。Stylus Studio版本6利用了8.1版Saxon引入的新特性，而支持样式表和查询调试。Saxonica乐于推荐Stylus Studio作为一个领先的XML、XSLT和XQuery开发环境。<BR>Saxon 8.1 提供新的功能，改良的性能，和更好的程序诊断。Saxon-SA 的特许样式也更加灵活，在不同的价格层次提供不同的特性组合。<BR>产品已经按照2004年6月发布的工作草案调整，虽然少数特性尚未实现，自从草案发布，改变已经列入实现结果。 <BR>Saxon 8.1现有两个版本。Saxon-B 8.1是一个无模式的处理器，并且作为开源产品免费在SourceForge（<A class=contentlink href="http://saxon.sf.net/" target=_blank>http://saxon.sf.net/</A>）上提供。它遵照XSLT2.0的基本一致性，也遵循XQuery1.0。Saxon-SA 8.1 是程序包的模式敏感（schema-aware）版本，在Saxonica有限公司（<A class=contentlink href="http://www.saxonica.com/" target=_blank>http://www.saxonica.com/</A>）以商业配套产品提供。许可证选项有XSLT、XQuery、模式验证，全部证书就可获得全部功能。 <BR>Saxon 8.1.1是一个维护版本，更正了8.1中的几个错误。<BR>请注意：帮助文档在Saxonica站点和下载文件中都有。有时在线版本会更新一些。下载文件也包括全部的API文档，在doc/api目录中。 <BR>当前版本的Java文档API详细说明在<A class=contentlink href="http://www.saxonica.com/documentation/javadoc/index.html" target=_blank>http://www.saxonica.com/documentation/javadoc/index.html</A>提供<BR>全部变更记录在changes.html中提供。<BR>Saxon 8.0 已经被许多用户用来开发应用程序。代码提供稳定可靠。但是你要清楚，规范还在改动，新的Saxon版本将跟踪规范改动，不保证向后兼容。 <BR>如果你期待完全的稳定性，优先选用版本是Saxon 6.5.3，它实现了XSLT1.0和XPath1.0。 <BR>Saxon 8.1 要求Java JDK 1.4。尽管由于在DOM接口不兼容而不能在JDK1.5下编译源码，确信在JDK1.5下也没有问题。 <BR>什么是Saxon?<BR>Saxon程序包是一个处理XML文档的工具集。主要组成有： <BR>．XSLT 2.0处理器，可以从命令行使用，或者使用标准JAXP应用程序接口从Java应用程序调用。Saxon可以用JAXP应用程序接口与Java应用程序结合，这意味着一个Java应用程序可以在不改变应用程序代码的情况下，在不同的XSLT处理器之间切换。Saxon既精密的符合XSLT 2.0规范，还提供了大量强大的扩展。 <BR>．XPath 2.0处理器，Java应用程序可以通过一个应用程序接口访问。<BR>．XQuery 1.0处理器，可以从命令行使用，或者使用一个API从Java应用程序调用。 <BR>．XML Schema 1.0处理器，可以单独使用来验证一个模式的正确性，或者对比一个模式中的定义来验证一个源文档。也用来支持XSLT和XQuery处理器的模式敏感（schema-aware）功能。<BR>你可以通过写XSLT样式表、写XQuery查询、写Java应用程序、或者组合这些方法来使用Saxon处理XML。 <BR>Saxon完全实现了XSLT 1.0 推荐标准，包括XPath 1.0， Saxon 8.0 也实现了在XSLT 2.0、XPath 2.0和Query 1.0工作草案中定义的几乎所有的特性。超出XSLT 1.0以外的新特性包括： <BR>．使用xsl:result-document对多个输出文件的支持 <BR>．临时树(以前通常所说的结果树片段)的完全处理能力 <BR>．支持节点序列和简单值<BR>．功能组合<BR>．正则表达式处理<BR>．支持新的XPath结构比如if、 for、 some 和 every<BR>．支持指定的排序序列<BR>．许多新函数和运算符<BR>．支持新的数据类型，如日期（dates）、时间（timews）和持续时间（durations）<BR>另外，Saxon提供了一个广泛的扩展元素和扩展函数库，所有的实现与XSLT推荐标准保持一致，以确保能够写出可移植的样式表。这些包括EXSLT扩展库common、 sets、 math、和 dates-and-times 。很多这类扩展都是Saxon首先采用的。<BR>这些扩展功能通常在XQuery中也可以使用，除了那些依赖样式表信息的。 <BR>Saxon还提供了一个API允许Java应用程序执行XPath 表达式并处理结果。XQuery使用一个单独的API，不同表现在设置的上下文的方式。<BR>可扩展性及功能扩展<BR>Saxon提供了功能扩展机制，可以通过增加扩展函数和其他挂钩（hook）对Saxon XSLT样式表和XQuery查询的性能进行扩展 <BR>Saxon XQuery 实现允许调用Java方法作为外部函数，函数不需要声明。使用命名空间声明如下： declare namespace math=java:java.lang.Math，就可以调用此方法，如： math:sqrt(2)。<BR>Saxon 包括一套扩展组件，提供了对SQL数据库的访问。这些不打算作为产品的必要属性（在设计中有许多局限性），更多的用以说明扩展组件如何增强处理器的性能。 <BR>在一个样式表中使用SQL扩展，需要在元素xsl:stylesheet的扩展元素前缀属性中定义一个命名空间前缀（如“sql”），并把这个前缀映射到以“/net.sf.saxon.sql.SQLElementFactory”为结果的命名空间URI上。 <BR>这个扩展定义了5个新的样式表元素： sql:connect、 sql:query、 sql:insert、 sql:column和 sql:close。<BR><BR>&lt;完&gt;<BR><A href="http://bbs.w3china.org/dispbbs.asp?boardid=14&amp;ID=12856&amp;replyID=32033&amp;skin=1" target=_blank>参与讨论本主题</A><BR></P>]]></description>
</item><item>
<title><![CDATA[[收藏]XML Schema 与 XML DTD的技术比较与分析 -- 作者：anchen0617]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=315</link>
<author>sxhong</author>
<pubDate>2004/11/16 12:49:14</pubDate>
<description><![CDATA[<B>XML Schema 与 XML DTD的技术比较与分析</B><BR><BR>XML DTD是目前使用最广泛的一种XML 模式，XML Schema则已经成为W3C的正式推荐标准，并有替代XML DTD的趋势。那么，从技术角度看，XML Schema与XML DTD有那些区别，XML Schema又有那些优势呢？<BR>引言 <BR>XML DTD(XML的文档类型定义)是近几年来XML技术领域所使用的最广泛的一种模式。但是，由于XML DTD并不能完全满足XML自动化处理的要求，例如不能很好实现应用程序不同模块间的相互协调，缺乏对文档结构、属性、数据类型等约束的足够描述等等，所以W3C于2001年5月正式推荐XML Schema为XML 的标准模式。显然，W3C希望以XML Schema来作为XML模式描述语言的主流，并逐渐代替XML DTD。那么XML Schema与XML DTD相比到底有哪些优势呢，XML DTD是否真的会在XML的模式描述领域中逐渐消失呢？ 
<P></P>
<P>XML模式与XML格式 <BR>XML模式是指用来描述XML结构、约束等因素的语言，例如XML Schema、XML DTD、XDR，SOX等等。XML格式则是XML文档本身所具有的格式。本文以XML Schema来代表W3C所推荐的XML Schema模式标准，而以"XML模式"来代表所有的XML模式描述语言。</P>
<P>从模式的描述语言来说，XML Schema和XML DTD都属于语法模式。与概念模式不同，语法模式在对同一事物描述时，可以采用不同的语法，例如在对关系模式描述时，无论是使用XML Schema还是XML DTD，都既可以用元素也可以用属性来描述关系模式的列。</P>
<P>模式必须以某种格式来表示，XML Schema的格式与XML DTD的格式有着非常明显的区别，XML Schema事实上也是XML的一种应用，也就是说XML Schema的格式与XML的格式是完全相同的，而作为SGML DTD的一个子集，XML DTD具有着与XML格式完全不同的格式。这种区别会给XML Schema的使用带来许多好处： </P>
<P>XML用户在使用XML Schema的时候，不需要为了理解XML Schema而重新学习，节省了时间； <BR>由于XML Schema本身也是一种XML，所以许多的XML编辑工具、API 开发包、XML语法分析器可以直接的应用到XML Schema，而不需要修改。 <BR>作为XML的一个应用，XML Schema理所当然的继承了XML的自描述性和可扩展性，这使得XML Schema 更具有可读性和灵活性。 <BR>由于格式完全与XML一样，XML Schema除了可以像XML一样处理外，也可以同它所描述的XML文档以同样的方式存储在一起，方便管理。 <BR>XML Schema与XML格式的一致性，使得以XML为数据交换的应用系统之间，也可以方便的进行模式交换。 <BR>XML有非常高的合法性要求，XML DTD对XML的描述，往往也被用作验证XML合法性的一个基础，但是XML DTD本身的合法性却缺少较好的验证机制，必需独立处理。XML Schema则不同，它与XML有着同样的合法性验证机制。 </P>
<P>数据类型</P>
<P>或许，对于许多开发人员来讲，XML Schema与XML DTD相比的一个最显著的特征，就是其对数据类型的支持了。这完全是因为XML DTD提供的数据类型只有CDATA 、Enumerated、NMTOKEN 、NMTOKENS等十种内置（built-in）数据类型。这样少的数据类型通常无法满足文档的可理解性和数据交换的需要。XML Schema则不同，它内置了三十七种数据类型，如long，int，short，double等常用的数据类型，并通过将数据类型表示为由<I>value</I> space、lexical space和facet三部分组成的三元组而获得更大的灵活性。但是， XML Schema数据类型的真正灵活性来自于其对用户自定义类型的支持。XML Schema提供两种方式来实现数据类型的定义。</P>
<P>1)简单类型定义（simpleType），即在XML Schema内置的数据类型基础上或其它由XML Schema内置的数据类型继承或定义所得到的简单的数据类型（simpleType）基础上，通过restriction，list 或者 union方式定义新的数据类型。</P>
<P>例如：<BR>源码1 restriction方式的定义<BR>&lt;simpleType name='Sku'&gt;<BR>&lt;restriction base='string'&gt;<BR>&lt;pattern <I>value</I>='\d{3}-[A-Z]{2}'/&gt;<BR>&lt;/restriction&gt;<BR>&lt;/simpleType&gt;<BR></P>
<P><BR>源码2 list方式的定义<BR>&lt;simpleType name='listOfDouble'&gt;<BR>&lt;list itemType='double'/&gt;<BR>&lt;/simpleType&gt;<BR></P>
<P><BR>源码3 union方式的定义<BR>&lt;xsd:attribute name="size"&gt;<BR>&lt;xsd:simpleType&gt;<BR>&lt;xsd:union&gt;<BR>&lt;xsd:simpleType&gt;<BR>&lt;xsd:restriction base="xsd:positiveInteger"&gt;<BR>&lt;xsd:minInclusive <I>value</I>="1"/&gt;<BR>&lt;xsd:maxInclusive <I>value</I>="12"/&gt;<BR>&lt;/xsd:restriction&gt;<BR>&lt;/xsd:simpleType&gt;<BR>&lt;xsd:simpleType&gt;<BR>&lt;xsd:restriction base="xsd:string"&gt;<BR>&lt;xsd:enumeration <I>value</I>="month"/&gt;<BR>&lt;/xsd:restriction&gt;<BR>&lt;/xsd:simpleType&gt;<BR>&lt;/xsd:union&gt;<BR>&lt;/xsd:simpleType&gt;<BR>&lt;/xsd:attribute&gt;<BR></P>
<P><BR>2) 复合类型定义（complexType），该方法提供了一种功能强大的复杂数据类型定义机制，可以实现包括结构描述在内的复杂的数据类型。下面是一个以complexType定义实现关系模式中表结构的例子，设有表T_C_Type（Psign，Count），其中Psign为CHAR数据类型，Count为NUMBER数据类型。则有：</P>
<P>源码4 complexType定义 <BR>&lt;!--表结构类型定义--&gt;<BR>&lt;complexType name="T_C_Type"&gt;<BR>&lt;sequence minOccurs="0" maxOccurs="unbounded"&gt;<BR>&lt;element name="Psign"&gt;<BR>&lt;complexType&gt;<BR>&lt;simpleContent&gt;<BR>&lt;restriction base="string"&gt;<BR>&lt;attribute name="<I>value</I>" type="string"/&gt;<BR>&lt;/restriction&gt;<BR>&lt;/simpleContent&gt;<BR>&lt;/complexType&gt;<BR>&lt;/element&gt;<BR>&lt;element name="Count" minOccurs="0"&gt;<BR>&lt;complexType&gt;<BR>&lt;complexContent&gt;<BR>&lt;restriction base="anyType"&gt;<BR>&lt;attribute name="<I>value</I>" type="int" use="optional"/&gt;<BR>&lt;/restriction&gt;<BR>&lt;/complexContent&gt;<BR>&lt;/complexType&gt;<BR>&lt;/element&gt;<BR>&lt;/sequence&gt;<BR>&lt;/complexType&gt;<BR></P>
<P><BR>不仅如此，XML Schema还允许元素的内容取空值，这一点可以扩大XML Schema对数据情况的描述范围，而XML DTD则无能为力。例如：</P>
<P>源码5 XML Schema 元素取空值的定义 &lt;element name='test' nullable='true'/&gt;<BR></P>
<P><BR>元素顺序的支持 <BR>XML DTD与XML Schema 都支持对子元素节点顺序的描述，但XML DTD没有提供对于无序情况的描述，也就是如果以XML DTD来描述元素的无顺序出现情况，它必须采用穷举元素各种可能出现的排列顺序的方式来实现，这种方法不仅繁琐，有时甚至是不现实的。例如对于table的a，b子元素，如果希望它们以任意的顺序出现，用XML DTD来描述：</P>
<P>源码6 a，b子元素任意顺序出现的XML DTD定义 <BR>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<BR>&lt;!ELEMENT ENTER_NAME_OF_ROOT_ELEMENT_HERE EMPTY&gt;<BR>&lt;!ELEMENT table ((a,b)|(b,a))&gt;<BR>&lt;!ELEMENT a (#PCDATA)&gt;<BR>&lt;!ELEMENT b (#PCDATA)&gt;</P>
<P></P>
<P><BR>XML Schema提供了&lt;all&gt;标记来描述这种情况：</P>
<P>源码7 a，b子元素任意顺序出现的XML Schema定义 <BR>&lt;xsd:element name="a" type="xsd:string"/&gt;<BR>&lt;xsd:element name="b" type="xsd:string"/&gt;<BR>&lt;xsd:element name="table"&gt;<BR>&lt;xsd:complexType&gt;<BR>&lt;xsd:all&gt;<BR>&lt;xsd:element ref="a"/&gt;<BR>&lt;xsd:element ref="b"/&gt;<BR>&lt;/xsd:all&gt;<BR>&lt;/xsd:complexType&gt;<BR>&lt;/xsd:element&gt;<BR></P>
<P><BR>可见，用XML Schema来实现子元素的无序描述要简单的多。</P>
<P>命名空间 <BR>在XML中引入命名空间的目的是为了能够在一个XML文档中使用其它XML文档中的一些具有通用性的定义（通常是一些元素或数据类型等的定义），并保证不产生语义上的冲突。XML DTD并不能支持这一特性，这进一步限制了XML DTD的适用范围。而XML Schema则很好的满足了这一点。</P>
<P>并且， XML Schema还提供了include 和 import两种引用命名空间的方法。下面的例子中XML Schema文档引用了其它两个XML Schema的定义，通过使用import实现了混合使用不同命名空间的目的。例子中还定义了不同命名空间中元素之间的keyref约束。</P>
<P>源码8 XML Schema对命名空间的使用 <BR>schema targetNamespace="<A class=contentlink href='http://202.117.84.144"/' target=_blank>http://202.117.84.144"</A><BR>xmlns:xs="<A class=contentlink href='http://202.117.84.144"/' target=_blank>http://202.117.84.144"</A><BR>xmlns="<A class=contentlink href='http://www.w3.org/2001/XMLSchema"' target=_blank>http://www.w3.org/2001/XMLSchema"</A><BR>xmlns:a="<A class=contentlink href='http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"' target=_blank>http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"</A><BR>xmlns:b="<A class=contentlink href='http://202.117.84.228/middlewareOracle805ioracletest20211784144"' target=_blank>http://202.117.84.228/middlewareOracle805ioracletest20211784144"</A> <BR>elementFormDefault="qualified"&gt;<BR>&lt;import namespace="<A class=contentlink href='http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"' target=_blank>http://202.117.84.228/middlewareSqlServer2000sqlservertest20211784228"</A> <BR>schemaLocation="F:\xml schema\middlewareSqlServer2000sqlservertest20211784228.xsd"/&gt;<BR>&lt;import namespace="<A class=contentlink href='http://202.117.84.228/middlewareOracle805ioracletest20211784144"' target=_blank>http://202.117.84.228/middlewareOracle805ioracletest20211784144"</A><BR>schemaLocation="F:\xml schema\middlewareOrcal805ioracletest20211784144.xsd"/&gt;<BR>&lt;annotation&gt;<BR>&lt;documentation xml:lang="cn"&gt;<BR>schema for Middleware<BR>Copyright 2001 Zhou Jingtao. All rights reserved.<BR>&lt;/documentation&gt;<BR>&lt;/annotation&gt;<BR>&lt;element name="CombineDatabase"&gt;<BR>&lt;complexType&gt;<BR>&lt;sequence&gt;<BR>&lt;element name="CombinGlobeSchema"&gt;<BR>&lt;complexType&gt;<BR>&lt;sequence&gt;<BR>&lt;element ref="a:H-Database"/&gt;<BR>&lt;element ref="b:H-Database"/&gt;<BR>&lt;/sequence&gt;<BR>&lt;/complexType&gt;<BR>&lt;keyref name="SqlServerTest_T_C_Psign" refer="b:gz_jgxx_ID_pk"&gt;<BR>&lt;selector xpath="a:H-Database/a:SqlServerTest/a:T_C/a:Count"/&gt;<BR>&lt;field xpath="@<I>value</I>"/&gt;<BR>&lt;/keyref&gt;<BR>&lt;/element&gt;<BR>&lt;/sequence&gt;<BR>&lt;/complexType&gt;<BR>&lt;/element&gt;<BR>&lt;/schema&gt;<BR></P>
<P><BR>对于API的支持 <BR>在掌握和使用XML技术时，DOM和SAX可能是技术人员最常使用到的XML API。DOM和SAX只对XML实例文档有效，虽然可以通过它们实现以XML DTD来验证XML文档,但是DOM和SAX却没有提供解析XML DTD文档内容的功能，也就是说我们无法通过DOM或SAX来得到DTD中元素、属性的声明和约束的描述。但是在基于XML+DTD的数据交换过程中，一些应用程序需要得到DTD本身的描述内容和结构，以方便对XML文档中数据的处理，例如在使用关系数据库存储XML 文档的过程中就涉及到如何将XML DTD映射为关系模式描述的问题。为了实现对XML DTD的解读，研究人员必须为XML DTD开发新的接口或者专用工具，带来了很大的不便。</P>
<P>由于XML Schema本身就是一个XML 文档，所以我们可以通过使用DOM、SAX或JDOM等XML API很容易的解析XML Schema，这就实现了XML文档与其描述模式处理方式的一致性，利于数据的传输和交换。</P>
<P>更加清晰的属性出现情况的限制、以及缺省值和枚举 <BR>XML DTD以关键字#IMPlIED、#FIXED和#REQUIRED来指定属性是否出现，并支持属性缺省值的定义。XML Schema则提供了更明确的标记来实现清晰易懂的表示。XML Schema废弃了XML DTD的#IMPlIED，不再支持属性的隐含状态，而要求必须给出明确的状态，并以prohibited来表示属性的禁用。对于缺省值的表达则更为直观，用default来直接给出。</P>
<P>源码9 XML DTD 、XML Schema对属性出现情况的限制 <BR>&lt;!ATTLIST TestDTD testAr1 CDATA #IMPLIED&gt;<BR>&lt;!ATTLIST TestDTD testAr2 CDATA #REQUIRED&gt;<BR>&lt;!ATTLIST TestDTD testAr3 CDATA #FIXED "3"&gt;<BR>&lt;!ATTLIST TestDTD testAr4 CDATA "3"&gt;</P>
<P>&lt;xsd:attribute name="TestAr1" type="xsd:string" use="optional" default="3"/&gt;<BR>&lt;xsd:attribute name="TestAr2" type="xsd:string" use="prohibited"/&gt;<BR>&lt;xsd:attribute name="TestAr3" type="xsd:string" use="required" fixed="3"/&gt;<BR></P>
<P><BR>对于XML Schema在枚举方面的改进，请参见参考资料中"XML 问题 #7 W3C XML Schema 与文档类型定义 (DTD) 比较"一文（文献9）。</P>
<P>注释 <BR>XML DTD和XML Schema都支持&lt;!-注释内容--&gt;这样的注释方法，但是XML Schema提供了更灵活和有用的注释方式：documentation和appinfo。它们提供了面向读者和应用的注释。</P>
<P>源码10 XML Schema的注释<BR>&lt;xsd:annotation&gt;<BR>&lt;xsd:documentation&gt;面向用户和应用的注释&lt;/xsd:documentation&gt;<BR>&lt;xsd:appinfo&gt;<BR>//这是一段C语言代码。<BR>#include stdio.h<BR>void main()<BR>{<BR>int i,j;<BR>i =1;<BR>j=i+1;<BR>}<BR>&lt;/xsd:appinfo&gt;<BR></P>
<P><BR>对数据库的支持 <BR>目前如何将关系数据表示为XML数据和如何实现基于关系数据库的XML数据存储、查询和更新已经成为了研究的热点。Deutsh，Florescu[5]，Kossman[5]，Shanmugasundaram[6,7]和D W Lee[8]等人都在XML与关系数据的相互转化问题方面作了较深入的研究。然而由于XML Schema成为正式推荐标准的时间较晚，加之XML DTD语法相对简单，所以现在大部分的研究和应用都是基于XML DTD展开的。但是，XML DTD在对关系数据的描述方面明显存在着不足，例如XML DTD有限的数据类型根本无法完成对关系数据数据类型的一一映射，也无法实现大部分的数据规则的描述。XML Schema提供了更多的内建数据类型，并支持用户对数据类型的扩展，基本上满足了关系模式在数据描述上的需要，这一点可以作为XML Schema比XML DTD更适合描述关系数据的一个主要的原因。 </P>
<P>一个结论 <BR>通过比较，可以看出，XML Schema比XML DTD具有更强的表现力，能够更好的满足不同领域应用的需求。那么，是不是可以说XML DTD会很快被XML Schema替代并最终消失呢。从作者的观点来看，XML Schema虽然在大多数的应用领域都有替代XML DTD的趋势，但是XML DTD仍然有它的适用范围，并不可能被XML Schema完全替代： </P>
<P>XML DTD是作为XML 标准的一部分发布的，W3C似乎并没有准备将其从XML标准中废除掉，对于XML DTD的支持还将持续。 <BR>目前大多数的面向XML应用，都对XML DTD做了很好的支持，XML DTD的工具也相对较为成熟，一般情况下，这些应用和工具并不会选择以XML Schema替换XML DTD的方式对其升级，更多的选择应该是二者都支持。当然，对于那些对数据交换或者描述能力要求较高、XML DTD已不能满足功能需求的应用来说，以XML Schema来代替XML DTD已经成为一种必然趋势。 <BR>当前大多数与XML 模式相关的算法研究都是基于XML DTD展开的，作为一种研究的延续，并不会放弃XML DTD的研究成果，但是，针对XML Schema的研究将会成为一个新的热点。 <BR>在一些相对要求简单的处理环境中，XML DTD仍然会占有它的一席之地。 <BR>同其他技术的发展一样，由于新标准的出现，XML DTD的作用会逐渐减弱，但正如层次数据库在今天仍然在使用一样， 对XML Schema是否会完全替代XML DTD做一个结论似乎为时过早。 </P>
<P>所以，作为一种强有力的标准，XML Schema作为XML模式的主流已经成为一种趋势；但作为一种最简单的XML模式，XML DTD也还将会在一段时间内发挥它应有的作用。<BR><BR><BR>&lt;完&gt;<BR><A href="http://bbs.w3china.org/dispbbs.asp?boardid=23&amp;ID=11585&amp;replyID=28238&amp;skin=1" target=_blank>参与讨论本主题</A><BR></P>]]></description>
</item><item>
<title><![CDATA[[收藏]Java 打包生成可执行.jar文件的问题? -- 作者：sxhong]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=sxhong&amp;id=295</link>
<author>sxhong</author>
<pubDate>2004/11/15 18:49:54</pubDate>
<description><![CDATA[<B>Java 打包生成可执行.jar文件的问题?</B><BR><BR>我现将一个Class文件打成开双击执行的.jar格式,我建了一个MANIFEST.MF文件,里面包含了Main-Class:HelloWorld.但当我在执行jar hello.jar MANIFEST.MF HelloWorld.class的时候出现如下的错误: 
<P></P>
<P>java.io.IOException:invalid header field<BR>at java.util.jar.Attributes.read&lt;Attributes.java:387&gt;<BR>at java.util.jar.Manifest.read&lt;Manifest.java:167&gt;<BR>at java.util.jar.Manifest.&lt;init&gt;&lt;manifest.java:52&gt;<BR>at sun.tools.jar.Main.run&lt;Main.java:124&gt;<BR>at sun.tools.jar.Mani.main&lt;Main.java:904&gt;</P>
<P><BR>请高手指点!<BR><BR><BR>&lt;完&gt;<BR><A href="http://bbs.w3china.org/dispbbs.asp?boardid=41&amp;ID=12088&amp;replyID=29516&amp;skin=1" target=_blank>参与讨论本主题</A><BR></P>]]></description>
</item>
</channel>
</rss>