﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-viita技术空间-随笔分类-XML轻松学习手册</title><link>http://www.blogjava.net/viita/category/33959.html</link><description>J2EE开发</description><language>zh-cn</language><lastBuildDate>Thu, 21 Aug 2008 13:06:41 GMT</lastBuildDate><pubDate>Thu, 21 Aug 2008 13:06:41 GMT</pubDate><ttl>60</ttl><item><title>第六章　XML相关资源</title><link>http://www.blogjava.net/viita/archive/2008/08/21/223583.html</link><dc:creator>viita</dc:creator><author>viita</author><pubDate>Thu, 21 Aug 2008 12:31:00 GMT</pubDate><guid>http://www.blogjava.net/viita/archive/2008/08/21/223583.html</guid><wfw:comment>http://www.blogjava.net/viita/comments/223583.html</wfw:comment><comments>http://www.blogjava.net/viita/archive/2008/08/21/223583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viita/comments/commentRss/223583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viita/services/trackbacks/223583.html</trackback:ping><description><![CDATA[一. XML的大本营<br />
　　二. XML指南<br />
　　三. XML常见问题<br />
　　四. XML主题网站<br />
　　五. XML的编辑软件<br />
　　六. 支持XML的浏览器<br />
　　七. XML parser <br />
　　八. Schema编辑软件<br />
　　九. 国内XML资源
<p>　　<strong>一. XML的大本营</strong></p>
<p>　　XML是由W3C(World Wide Web Consortium)国际组织负责开发和制定标准的。关于XML最权威，最新的消息都来自W3C。<br />
　　网址是：<a href="http://w3c.org/XML/" target="_blank">http://w3c.org/XML/</a> <br />
　　另外一个名为OASIS的前著名的SGML研究组织也在一起推动XML的发展，网址是：<a href="http://www.oasis-open.org/" target="_blank">http://www.oasis-open.org/</a> </p>
<p>　　<strong>二. XML指南</strong></p>
<p>　　<a href="http://www.w3.org/TR/REC-xml" target="_blank">http://www.w3.org/TR/REC-xml</a> <br />
　　W3C关于XML规范的详细，完整的说明。不用多说，绝对权威。<br />
　　<a href="http://www.xml.com/axml/testaxml.htm" target="_blank">http://www.xml.com/axml/testaxml.htm</a> <br />
　　这是Tim Bary写的XML规范说明书，非常的详细和严密，是学习XML规范的好帮手。</p>
<p>　　<strong>三. XML常见问题</strong></p>
<p>　　Peter Flynn的XML FAQ <br />
　　<a href="http://www.ucc.ie/xml/" target="_blank">http://www.ucc.ie/xml/</a> <br />
　　包含大量详细的资料，经常更新，由W3C协会XML组维护。<br />
　　Lisa Rein&#8217;s finetuning XML FAQs <br />
　　<a href="http://www.finetuning.com/faq.html" target="_blank">http://www.finetuning.com/faq.html</a> <br />
　　这个FAQ列表有侧重点，主要包含XSLT FAQ,XPath FAQ和IE5中的XSL FAQ。<br />
　　Dave Pawson&#8217;s XSL FAQ <br />
　　<a href="http://www.dpawson.co.uk/xsl/idx.html" target="_blank">http://www.dpawson.co.uk/xsl/idx.html</a> <br />
　　提供最好的关于XSL方面的FAQ，创建于1999年。<br />
　　jGuru&#8217;s Extensible Markup Language (XML) FAQ <br />
　　<a href="http://www.jguru.com/jguru/faq/faqpage.jsp?name=XML" target="_blank">http://www.jguru.com/jguru/faq/faqpage.jsp?name=XML</a> <br />
　　这个FAQ列表是一个典型的"老百晓"，任何问题，从普通的到非常细节的XML问题都可以在这里找到。<br />
　　Ronald Bourret&#8217;s XML Namespaces FAQ <br />
　　<a href="http://www.informatik.tu-darmstadt.de/DVS1/staff/bourret/xml/NamespacesFAQ.htm" target="_blank">http://www.informatik.tu-darmstadt.de/DVS1/staff/bourret/xml/NamespacesFAQ.htm</a> <br />
　　创建于2000初，是关于namespaces概要的FAQ。</p>
<p>　　<strong>四. XML主题网站</strong></p>
<p>　　<a href="http://www.xml.com/" target="_blank">http://www.xml.com/</a> <br />
　　一个以XML为主题的内容丰富的网站<br />
　　<a href="http://www.xml-zone.com/" target="_blank">http://www.xml-zone.com/</a> <br />
　　另一个比较知名的XML网站，提供XML的新闻和资讯。<br />
　　<a href="http://www.xmlinfo.com/" target="_blank">http://www.xmlinfo.com/</a> <br />
　　网站创建者James Tauber&#8217;s是W3C组织XML发展组的成员之一，他的网站提供了大量的连接和例子。<br />
　　<a href="http://www.simonstl.com/" target="_blank">http://www.simonstl.com/</a> <br />
　　网站创建者Simon St. Laurent也是XML发展组的成员。他是W3C中XML初级入门教程的作者，他的站点主要提供有关XML的发展信息。<br />
　　<a href="http://msdn.microsoft.com/xml/c-frame.htm#/xml/default.asp" target="_blank">http://msdn.microsoft.com/xml/c-frame.htm#/xml/default.asp</a> <br />
　　微软的MSDN关于XML的主题网站。微软在推进XML应用方面不遗余力。<br />
　　<a href="http://www.xmlsoftware.com/" target="_blank">http://www.xmlsoftware.com/</a> <br />
　　是XML info的姐妹网站，内容包括XML/DTD/XSL编辑软件，XML API软件等。<br />
　　<a href="http://xmlhack.com/" target="_blank">http://xmlhack.com/</a> <br />
　　1999年9月建立的大型XML新闻网站，同时提供XML人才信息。<br />
　　<a href="http://xml.apache.org/" target="_blank">http://xml.apache.org/</a> <br />
　　Apache软件基金会(ASF),提供了大量open source的XML和XSL的工具软件。<br />
　　<a href="http://www.biztalk.org/" target="_blank">http://www.biztalk.org/</a> <br />
　　BizTalk是微软发起的以XML商业应用为目标的组织。BizTalk不是一个标准组织。</p>
<p>　　<strong>五. XML的编辑软件</strong></p>
<p>　　目前XML文档的编辑软件依然很少。虽然我们可以手工编写，但是如果有一个好的软件(类似用DW/FP编写HTML)，可以减少差错和提高效率。下面是现有的一些编辑软件。<br />
　　<a href="http://www.macromedia.com/software/dreamweaver/" target="_blank">http://www.macromedia.com/software/dreamweaver/</a> <br />
　　Macromedia最新的Dreamweaver 4.0已经支持XML文档的编写。推荐使用。<br />
　　<a href="http://www.microsoft.com/xml/notepad/intro.asp" target="_blank">http://www.microsoft.com/xml/notepad/intro.asp</a> <br />
　　微软在这方面向来不会落后，它推出的XML Notepad是一个非常小巧灵活的XML文档编辑器。推荐使用。<br />
　　<a href="http://www.adobe.com/prodindex/framemaker/prodinfosgml.html" target="_blank">http://www.adobe.com/prodindex/framemaker/prodinfosgml.html</a> <br />
　　Adobe公司的Framemaker plus是目前较好的XML编辑软件。<br />
　　<a href="http://www.arbortext.com/" target="_blank">http://www.arbortext.com/</a> <br />
　　Arbortext公司是重点开发XML游戏的公司。<br />
　　<a href="http://www.inso.com/" target="_blank">http://www.inso.com/</a> <br />
　　Inso，好象是用来处理大型SGML或者XML文档的软件。<br />
　　<a href="http://www.softquad.com/" target="_blank">http://www.softquad.com/</a> <br />
　　Softquad 是HTML和SGML软件的开发商，对XML自然不会放过。</p>
<p>　　<strong>六. 支持XML的浏览器</strong></p>
<p>　　<a href="http://www.microsoft.com/windows/ie/" target="_blank">http://www.microsoft.com/windows/ie/</a> <br />
　　IE 5.X是目前流行浏览器唯一支持XML的，它可以在微软的网站免费下载到。<br />
　　<a href="http://developer.netscape.com/software/communicator/ngl/index.html?cp=dev09fg01" target="_blank">http://developer.netscape.com/software/communicator/ngl/index.html?cp=dev09fg01</a> <br />
　　Gecko是另一种支持XML的浏览器，但目前只是测试版。</p>
<p>　　<strong>七. XML parser</strong> </p>
<p>　　Parser是一个检查XML文档语法是否符合DTD定义，并进行解析的软件。<br />
　　在线的parser <br />
　　<a href="http://validator.w3.org/" target="_blank">http://validator.w3.org/</a> <br />
　　W3C组织提供的一个在线paeser。可以根据你在线提交的XML文档URL，进行验证和解吸。<br />
　　<a href="http://www.stg.brown.edu/service/xmlvalid/" target="_blank">http://www.stg.brown.edu/service/xmlvalid/</a> <br />
　　一个Brown大学科技小组提供的parser，非常方便和容易理解。。<br />
　　可下载的Parser <br />
　　有很多可以下载到本机上运行的parser,下面列出一些主要的：<br />
　　<a href="http://www.jclark.com/xml/expat.html" target="_blank">http://www.jclark.com/xml/expat.html</a> <br />
　　James Clark是在SGML/XML领域的元老，他写的parser被广泛的运用。<br />
　　<a href="http://www.alphaworks.ibm.com/tech/xml" target="_blank">http://www.alphaworks.ibm.com/tech/xml</a> <br />
　　一个以Java语言编写的Parser，来自IBM。<br />
　　<a href="http://www.microsoft.com/xml/parser/cparser.asp" target="_blank">http://www.microsoft.com/xml/parser/cparser.asp</a> <br />
　　微软的XML Parser，用C++写成。<br />
　　<a href="http://www.stud.ifi.uio.no/%7Elarsga/download/python/xml/xmlproc.html" target="_blank">http://www.stud.ifi.uio.no/~larsga/download/python/xml/xmlproc.html</a> <br />
　　用Python写的parser。<br />
　　<a href="http://www.jeremie.com/Dev/XML/" target="_blank">http://www.jeremie.com/Dev/XML/</a> <br />
　　用Javascript写的parser，只用来检查语法，不进行解吸析。<br />
　　<a href="http://w3c.org/RDF/Implementations/SiRPAC/" target="_blank">http://w3c.org/RDF/Implementations/SiRPAC/</a> <br />
　　来自W3C组织的SiRPAC，全称是Simple RDF Parser and Compiler。</p>
<p>　　<strong>八. Schema编辑软件</strong></p>
<p>　　Schema我们前面介绍过，DTD就是一种Schema，我们可以手工写DTD，但现在已经有一些Schema编辑软件来帮助我们更方便的建立DTD。<br />
　　<a href="http://www.extensibility.com/" target="_blank">http://www.extensibility.com/</a> <br />
　　Extensibility这个软件被称为XML权威。可以以图形化方式建立和编辑schema，包括DTD文件。<br />
　　九. 国内XML资源<br />
　　<a href="http://www.xml.net.cn/" target="_blank">http://www.xml.net.cn/</a> <br />
　　XML中国论坛是一个非赢利的学术网站。由北京大学计算机科学与技术研究所创办，北大方正集团公司提供赞助。<br />
　　<a href="http://www.xml.org.cn:8188/" target="_blank">http://www.xml.org.cn:8188</a> <br />
　　中国XML联盟将建立为国内第一个开放性网络标准组织，提供XML技术认证、咨询和交流。由上海易方公司赞助。<br />
　　<a href="http://www.xml.com.cn/" target="_blank">http://www.xml.com.cn/</a> <br />
　　chinaasp.com的子站，提供XML文章和技术交流等。<br />
　　<a href="http://www.egroups.com/group/china_xml_list/info.html" target="_blank">http://www.egroups.com/group/china_xml_list/info.html</a> <br />
　　中国XML邮件组包括中文XML资源, XML的最新资料,同行的交流空间。由非盈利性组织中国XML联盟负责维护。<br />
　　<a href="http://weblab.crema.unimi.it/xmlzh/XML_FAQ.htm" target="_blank">http://weblab.crema.unimi.it/xmlzh/XML_FAQ.htm</a> <br />
　　一个XML FAQ邮件列表的中文翻译，可惜是1998年10月的。<br />
　　-------------- 全文完-----------</p>
<img src ="http://www.blogjava.net/viita/aggbug/223583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viita/" target="_blank">viita</a> 2008-08-21 20:31 <a href="http://www.blogjava.net/viita/archive/2008/08/21/223583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第四章　XML语法</title><link>http://www.blogjava.net/viita/archive/2008/08/21/223581.html</link><dc:creator>viita</dc:creator><author>viita</author><pubDate>Thu, 21 Aug 2008 12:30:00 GMT</pubDate><guid>http://www.blogjava.net/viita/archive/2008/08/21/223581.html</guid><wfw:comment>http://www.blogjava.net/viita/comments/223581.html</wfw:comment><comments>http://www.blogjava.net/viita/archive/2008/08/21/223581.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viita/comments/commentRss/223581.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viita/services/trackbacks/223581.html</trackback:ping><description><![CDATA[<strong>提纲</strong><br />
　　一.XML语法规则<br />
　　二.元素的语法<br />
　　三.注释的语法<br />
　　四.CDATA的语法<br />
　　五.Namespaces的语法<br />
　　六.entity的语法<br />
　　七.DTD的语法
<p>　　通过前面三章的学习，我们已经对什么是XML，它的实现原理以及相关的术语有所了解。接下来我们就开始学习XML的语法规范，动手写自己的XML文档。</p>
<p>　　<strong>一.XML语法规则</strong></p>
<p>　　XML的文档和HTML的原代码类似，也是用标识来标识内容。创建XML文档必须遵守下列重要规则：<br />
　　规则1：必须有XML声明语句<br />
　　这一点我们在上一章学习时已经提到过。声明是XML文档的第一句，其格式如下：<br />
　　&lt;?xml version="1.0" standalone="yes/no" encoding="UTF-8"?&gt; <br />
　　声明的作用是告诉浏览器或者其它处理程序：这个文档是XML文档。声明语句中的version表示文档遵守的XML规范的版本；standalone表示文档是否附带DTD文件，如果有，参数为no；encoding表示文档所用的语言编码，默认是UTF-8。<br />
　　规则2：是否有DTD文件<br />
　　如果文档是一个"有效的XML文档"(见上一章)，那么文档一定要有相应DTD文件，并且严格遵守DTD文件制定的规范。DTD文件的声明语句紧跟在XML声明语句后面，格式如下：<br />
　　&lt;!DOCTYPE type-of-doc SYSTEM/PUBLIC "dtd-name"&gt; <br />
　　其中：<br />
　　"!DOCTYPE"是指你要定义一个DOCTYPE;<br />
　　"type-of-doc"是文档类型的名称，由你自己定义，通常于DTD文件名相同；<br />
　　"SYSTEM/PUBLIC"这两个参数只用其一。SYSTEM是指文档使用的私有DTD文件的网址，而PUBLIC则指文档调用一个公用的DTD文件的网址。<br />
　　"dtd-name" 就是DTD文件的网址和名称。所有DTD文件的后缀名为".dtd"。<br />
　　我们还是用上面的例子，应该写成这样：<br />
　　&lt;?xml version="1.0" standalone="no" encode="UTF-8"?&gt;<br />
　　&lt;!DOCTYPE filelist SYSTEM "filelist.dtd"&gt;<br />
　　规则3：注意你的大小写<br />
　　在XML文档中，大小写是有区别的。&lt;P&gt;和&lt;p&gt;是不同的标识。注意在写元素时，前后标识大小写要保持一样。例如:&lt;Author&gt;ajie&lt;/Author&gt;，写成&lt;Author&gt;ajie&lt;/author&gt;是错误的。<br />
　　你最好养成一种习惯，或者全部大写，或者全部小写，或者大写第一个字母。这样可以减少因为大小写不匹配产生的文档错误。<br />
　　规则4：给属性值加引号<br />
　　在HTML代码里面，属性值可以加引号，也可以不加。例如:&lt;font color=red&gt;word&lt;/font&gt;和&lt;font color="red"&gt;word&lt;/font&gt;都可以被浏览器正确解释。<br />
　　但是在XML中则规定，所有属性值必须加引号(可以是单引号，也可以是双引号)，否则将被视为错误。<br />
　　规则5：所有的标识必须有相应的结束标识<br />
　　在HTML中，标识可能不是成对出现的，比如&lt;br&gt;。而在XML中规定，所有标识必须成对出现，有一个开始标识，就必须有一个结束标识。否则将被视为错误。<br />
　　规则6：所有的空标识也必须被关闭<br />
　　空标识就是标识对之间没有内容的标识。比如&lt;br&gt;,&lt;img&gt;等标识。在XML中，规定所有的标识必须有结束标识，针对这样的空标识，XML中处理的方法是在原标识最后加/，就可以了。例如：<br />
　　&lt;br&gt;应写为&lt;br /&gt;；<br />
　　&lt;META name="keywords" content="XML, SGML, HTML"&gt;应写为&lt;META name="keywords" content="XML, SGML, HTML" /&gt;；<br />
　　&lt;IMG src= "cool.gif"&gt;应写为&lt;IMG src= "cool.gif" /&gt; </p>
<p>　　<strong>二.元素的语法</strong></p>
<p>　　元素由一对标识以及其中的内容组成。就象这样：ajie。元素的名称和标识的名称是一样的。标识可以用属性来进一步描述。<br />
　　在XML中，没有任何保留字，所以你可以随心所欲的用任何词语来作为元素名称。但是也必须遵守下列规范：<br />
　　1.名称中可以包含字母、数字以及其它字母；<br />
　　2.名称不能以数字或"_" (下划线)开头；<br />
　　3.名称不能以字母xml(或XML 或Xml ..)开头<br />
　　4.名称中不能包含空格<br />
　　5.名称中间不能包含":"(冒号) <br />
　　为了使元素更容易阅读理解和操作，我们还有一些建议：<br />
　　1.名称中不要使用"."。因为在很多程序语言中,"."是作为对象的属性，例如：font.color。同样的原因"-"也最好不要用，必须使用的，以"_"代替；<br />
　　2.名称尽量简短。<br />
　　3.名称的大小写尽量采用同一标准。<br />
　　4.名称可以使用非英文字符，比如用中文。但是有些软件可能不支持。(IE5目前是支持中文元素的。) <br />
　　另外，补充一点关于属性的说明。在HTML中，属性可以用来定义元素的显示格式，比如：&lt;font color="red"&gt;word&lt;/font&gt;将把word显示为红色。而在XML中，属性只是对标识的描述，与元素内容的显示无关。例如同样一句：&lt;font color="red"&gt;word&lt;/font&gt;，并不会将word显示为红色。(那么，有网友会问：如何在XML中将文字显示为红色呢？这就需要使用CSS或者XSL，我们在下面详细讲述。) </p>
<p>　　<strong>三.注释的语法</strong></p>
<p>　　注释是为了便于阅读和理解，在XML文档添加的附加信息，将不会被程序解释或则浏览器显示。<br />
　　注释的语法如下：<br />
　　&lt;!-- 这里是注释信息--&gt; <br />
　　可以看到，它和HTML中的注释语法是一样的，非常容易。养成良好的注释习惯将使你的文档更加便于维护，共享，看起来也更专业。<br />
</p>
<p>　　<strong>四.CDATA的语法</strong></p>
<p>　　CDATA全称character data，翻译为字符数据。我们在写XML文档时，有时需要显示字母，数字和其它的符号本身，比如"&lt;"，而在XML中，这些字符已经有特殊的含义，我们怎么办呢？这就需要用到CDATA语法。语法格式如下：<br />
　　&lt;![CDATA[这里放置需要显示的字符]]&gt; <br />
　　例如：<br />
　　&lt;![CDATA[&lt;AUTHOR sex="female"&gt;ajie&lt;/AUTHOR&gt;]]&gt; <br />
　　在页面上显示的内容将是"&lt;AUTHOR sex="female"&gt;ajie&lt;/AUTHOR&gt;" </p>
<p>　　<strong>五.Namespaces的语法</strong></p>
<p>　　Namespaces翻译为名字空间。名字空间有什么作用呢？当我们在一个XML文档中使用他人的或者多个DTD文件，就会出现这样的矛盾：因为XML中标识都是自己创建的，在不同的DTD文件中，标识名可能相同但表示的含义不同，这就可能引起数据混乱。<br />
　　比如在一个文档&lt;table&gt;wood table&lt;/table&gt;中&lt;table&gt;表示桌子，<br />
　　而在另一个文档&lt;table&gt;namelist&lt;/table&gt;中&lt;table&gt;表示表格。如果我需要同时处理这两个文档，就会发生名字冲突。<br />
　　了解决这个问题，我们引进了namespaces这个概念。namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。<br />
　　Namespaces同样需要在XML文档的开头部分声明，声明的语法如下：<br />
　　&lt;document xmlns:yourname='URL'&gt;<br />
　　其中yourname是由你定义的namespaces的名称，URL就是名字空间的网址。<br />
　　假设上面的"桌子&lt;table&gt;"文档来自http://www.zhuozi.com，我们就可以声明为<br />
　　&lt;document xmlns:zhuozi='http://www.zhuozi.com'&gt; <br />
　　然后在后面的标识中使用定义好的名字空间：<br />
　　&lt;zhuozi:table&gt;wood table&lt;/table&gt;<br />
　　这样就将这两个&lt;table&gt;区分开来。注意的是：设置URL并不是说这个标识真的要到那个网址去读取，仅仅作为一种区别的标志而已。</p>
<p>　　<strong>六.entity的语法</strong></p>
<p>　　entity翻译为"实体"。它的作用类似word中的"宏"，也可以理解为DW中的摸板，你可以预先定义一个entity，然后在一个文档中多次调用，或者在多个文档中调用同一个entity。<br />
　　entity可以包含字符，文字等等，使用entity的好处在于：1.它可以减少差错，文档中多个相同的部分只需要输入一遍就可以了。2.它提高维护效率。比如你有40个文档都包含copyright的entity，如果需要修改这个copyright,不需要所有的文件都修改，只要改最初定义的entity语句就可以了。<br />
　　XML定义了两种类型的entity。一种是我们这里说的普通entity，在XML文档中使用；另一种是参数entity，在DTD文件中使用。<br />
　　entity的定义语法为:<br />
　　&lt;!DOCTYPE filename [<br />
　　&lt;!ENTITY entity-name "entity-content"<br />
　　]<br />
　　&gt;<br />
　　例如我要定义一段版权信息:<br />
　　&lt;!DOCTYPE copyright [<br />
　　&lt;!ENTITY copyright "Copyright 2001, Ajie. All rights reserved"<br />
　　]<br />
　　&gt;<br />
　　如果我的版权信息内容和他人共享一个XML文件，也可以使用外部调用的方法，语法象这样：<br />
　　&lt;!DOCTYPE copyright [<br />
　　&lt;!ENTITY copyright SYSTEM "http://www.sample.com/copyright.xml"&gt; <br />
　　]<br />
　　&gt;<br />
　　定义好的entity在文档中的引用语法为：&amp;entity-name;<br />
　　例如，上面定义的版权信息，调用时写作：&amp;copyright;<br />
　　完整的例子如下，你可以copy下来存为copyright.xml观看实例：<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;!DOCTYPE copyright [<br />
　　&lt;!ENTITY copyright "Copyright 2001, Ajie. All rights reserved"&gt;<br />
　　]&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;email&gt;ajie@aolhoo.com&lt;/email&gt;<br />
　　&lt;date&gt;20010115&lt;/date&gt;<br />
　　&lt;/myfile&gt; </p>
<p>　　<strong>七.DTD的语法</strong></p>
<p>　　DTD是"有效XML文档"的必须文件，我们通过DTD文件来定义文档中元素和标识的规则及相互关系。如何建立一个DTD文件呢？让我们一起来学习：<br />
　　1.设置元素<br />
　　元素是XML文档的基本组成部分。你要在DTD中定义一个元素，然后在XML文档中使用。元素的定义语法为：&lt;!ELEMENT DESCRIPTION (#PCDATA, DEFINITION)*&gt; <br />
　　说明：<br />
　　"&lt;!ELEMENT" 是元素的声明，说明你要定义的是一个元素；<br />
　　声明后面的"DESCRIPTION",是元素的名称；<br />
　　"(#PCDATA, DEFINITION)*&gt;"则是该元素的使用规则。规则定义了元素可以包含的内容以及相互的关系。下面的表格概要列出了元素的规则：<br />
　　2.元素规则表: </p>
<table cellspacing="0" cellpadding="0" width="90%" align="center" bgcolor="#eeeeee" border="1">
    <tbody>
        <tr>
            <td align="center" width="96" height="25"><strong>Symbol</strong></td>
            <td align="center" width="114"><strong>含 义</strong></td>
            <td align="center" width="430"><strong>举　　例</strong></td>
        </tr>
        <tr>
            <td width="96">#PCDATA</td>
            <td width="114">包含字符或文本数据</td>
            <td width="430">&lt;MYFILE(#PCDATA)&gt;<br />
            元素MYFILE包含一个文本数据</td>
        </tr>
        <tr>
            <td width="96">#PCDATA, element-name</td>
            <td width="114">包含文本和其它子元素</td>
            <td width="430">&lt;MYFILE(#PCDTATA,TITLE)&gt;<br />
            MYFILE元素必须包含文本和TITLE子元素</td>
        </tr>
        <tr>
            <td width="96">,<br />
            </td>
            <td width="114">使用逗号分隔排序</td>
            <td width="430">&lt;MYFILE (TITLE,AUTHOR,EMAIL)&gt;<br />
            MYFILE元素必须依次包含TITILE,AUTHOR,EMAIL三个子元素</td>
        </tr>
        <tr>
            <td width="96">|</td>
            <td width="114">使用"|"表示或者</td>
            <td width="430">&lt;MYFILE (TITLE | AUTHOR | EMAIL)&gt;<br />
            MYFILE元素必须包含TITLE，或者AUTHOR或者EMAIL子元素。</td>
        </tr>
        <tr>
            <td width="96">name</td>
            <td width="114">只能使用一次</td>
            <td width="430">&lt;MYFILE (TITLE)&gt;<br />
            MYFILE元素必须包含TITLE子元素，而且只能使用一次。</td>
        </tr>
        <tr>
            <td width="96">name?</td>
            <td width="114">使用一次或者不使用</td>
            <td width="430">&lt;MYFILE (TITLE,AUTHOR?,EMAIL?)&gt;<br />
            MYFILE元素必须包含TITLE子元素，而且只能使用一次；可以包含或者不包含AUTHOR和EMAIL子元素，但是如果使用，只能一次。</td>
        </tr>
        <tr>
            <td width="96">name+</td>
            <td width="114">使用至少一次或多次&gt;</td>
            <td width="430">&lt;MYFILE (TITLE+,AUTHOR?,EMAIL)&gt;<br />
            MYFILE元素必须包含TITLE子元素，而且使用至少一次；接下来可以跟随AUTHOR子元素，也可以不跟；最后必须包含EMAIL子元素，而且只能使用一次。</td>
        </tr>
        <tr>
            <td width="96">name*</td>
            <td width="114">使用一次，多次，或者根本不使用</td>
            <td width="430">&lt;MYFILE (TITLE*)&gt;<br />
            MYFILE元素可以包含一个，多个或者不包含TITLE子元素</td>
        </tr>
        <tr>
            <td width="96">( )</td>
            <td width="114">设置组，可以嵌套</td>
            <td width="430">&gt;&lt;MYFILE(#PCDATA | TITLE)*&gt;<br />
            元素MYFILE包含一个或者更多的文本或者TITLE子元素。 &lt;MYFILE((TITLE*, AUTHOR?, EMAIL)* | COMMENT)&gt;<br />
            MYFILE元素必须包含一些内容，内容或者是一个注释；也或者是多个组，组里包含：一个，多个或者没有TITLE子元素，接着是一个或者没有AUTHOR子元素，再接着是一个必须的EMAIL子元素。</td>
        </tr>
    </tbody>
</table>
<p>　　另外，我们还可以为元素定义属性，因为我们不推荐使用属性，在这里就不详细展开了。<br />
　　最后，我们来总结一些前四章学习的内容，写一个包含DTD，XML，以及Script的简单实例，便于读者理解：<br />
　　1.将下面文件存为myfile.dtd<br />
　　&lt;!ELEMENT myfile (title, author)&gt;<br />
　　&lt;!ELEMENT title (#PCDATA)&gt;<br />
　　&lt;!ELEMENT author (#PCDATA)&gt;<br />
　　2.然后建立XML文档myfile.xml:<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;!DOCTYPE myfile SYSTEM "myfile.dtd"&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML轻松学习手册&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;/myfile&gt;<br />
　　3.建立HTML文档myfile.html<br />
　　&lt;html&gt;<br />
　　&lt;head&gt;<br />
　　&lt;script language="JavaScript" for="window" event="onload"&gt;<br />
　　var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />
　　xmlDoc.async="false";<br />
　　xmlDoc.load("myfile.xml");<br />
　　nodes = xmlDoc.documentElement.childNodes;<br />
　　title.innerText = nodes.item(0).text;<br />
　　author.innerText = nodes.item(1).text;<br />
　　&lt;/script&gt;<br />
　　&lt;title&gt;在HTML中调用XML数据&lt;/title&gt;<br />
　　&lt;/head&gt;<br />
　　&lt;body bgcolor="#FFFFFF"&gt;<br />
　　&lt;b&gt;标题: &lt;/b&gt;<br />
　　&lt;span id="title"&gt;&lt;/span&gt;&lt;br&gt;<br />
　　&lt;b&gt;作者: &lt;/b&gt;<br />
　　&lt;span id="author"&gt;&lt;/span&gt;&lt;br&gt;<br />
　　&lt;/body&gt;<br />
　　&lt;/html&gt;<br />
　　4.用IE5.0以上浏览器打开myfile.html就可以看到效果了。<br />
　　好了，到今天第四章结束，我们对XML已经有了一些基本的了解。第五章我将为大家讲解一个XMl实际应用的成功例子，展现XML的强大功能。让我们一起来看下一章：XML实例分析。</p>
<img src ="http://www.blogjava.net/viita/aggbug/223581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viita/" target="_blank">viita</a> 2008-08-21 20:30 <a href="http://www.blogjava.net/viita/archive/2008/08/21/223581.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第五章　XML实例解析</title><link>http://www.blogjava.net/viita/archive/2008/08/21/223582.html</link><dc:creator>viita</dc:creator><author>viita</author><pubDate>Thu, 21 Aug 2008 12:30:00 GMT</pubDate><guid>http://www.blogjava.net/viita/archive/2008/08/21/223582.html</guid><wfw:comment>http://www.blogjava.net/viita/comments/223582.html</wfw:comment><comments>http://www.blogjava.net/viita/archive/2008/08/21/223582.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viita/comments/commentRss/223582.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viita/services/trackbacks/223582.html</trackback:ping><description><![CDATA[<strong>提纲</strong><br />
　　一：实例效果<br />
　　二：实例解析<br />
　　1.定义新标识。<br />
　　2.建立XML文档。<br />
　　3.建立相应的HTML文件。<br />
　　XML在不同领域有着广泛的应用，比如在科技领域的MathML，无线通信应用的WML，在网络图象方面的SVG等等，我们这里侧重讨论XML在web上的应用。XML在web上应用主要是利用其强大的数据操作能力。一般用XML配合javascript和asp等服务器端程序，可以实现网络上几乎所有的应用需求。<br />
　　考虑讲解方便，我们在下面介绍一个简单的实例，不包含服务器端程序。目的在于让您对XML的数据操作能力有一个感性的认识。<br />
　　好，我们首先[ 点击这里]来看实例的效果。(请用IE5.0以上版本浏览器打开) <br />
　　这是一个简单的CD唱片数据检索功能。你通过点击"上一张","下一张"可以看到单张CD的有关信息。这样的效果我们原来用两种方法可以实现：<br />
　　1.利用DHTML，将数据隐藏在不同的层中，通过鼠标事件依次显示；<br />
　　2.利用后台程序(如ASP,CGI,PHP,JSP等)，调用服务器端的数据。<br />
　　但是在这个实例中，我们打开页面原代码可以看到，其中没有用DHTML的DIV，也没有表单的action，它完全是用XML来实现的。下面我们来分析它的制作过程：
<p>　　<strong>第一步：定义新标识。</strong></p>
<p>　　根据实际的CD数据，首先新建一个名为&lt;CD&gt;的标识；其次建立它相关的数据标识，分别是:CD名称&lt;Title&gt;,演唱者&lt;Artist&gt;,出版年代&lt;Year&gt;,国家&lt;Country&gt;,发行公司&lt;Company&gt;和价格&lt;Price&gt;；最后还要建立一个名为目录&lt;CATALOG&gt;的标识。为什么要再建立一个&lt;CATALOG&gt;标识呢？因为在XML文档中规定，必须且只能有一个根元素(标识)，我们有多个CD数据，这些数据是并列的关系，所以需要为这些并列的元素建立一个根元素。<br />
　　以上元素的定义和关系都完全符合XML标准，不需要特别的DTD文件来定义，所以可以省略DTD定义。如果我们想使用DTD来定义，以上过程可以表示为：<br />
　　&lt;!ELEMENT CATALOG (CD)*&gt;<br />
　　&lt;!ELEMENT CD (Title,Artist,Year,Country,Company,Price)&gt;<br />
　　&lt;!ELEMENT Title (#PCDATA)&gt;<br />
　　&lt;!ELEMENT Artist (#PCDATA)&gt;<br />
　　&lt;!ELEMENT Year (#PCDATA)&gt;<br />
　　&lt;!ELEMENT Country (#PCDATA)&gt;<br />
　　&lt;!ELEMENT Company (#PCDATA)&gt;<br />
　　&lt;!ELEMENT Price (#PCDATA)&gt;<br />
　　这段代码表示：元素CATALOG包含多个CD子元素，而子元素CD又依次包含Title, Artist, Year, Country, Company, Price 六个子元素，它们的内容都定义为文本(字符,数字,文本)。(注:具体的语法说明可以看上一章关于DTD的介绍)</p>
<p>　　<strong>第二步：建立XML文档。</strong></p>
<p>　　&lt;?xml version="1.0"?&gt;<br />
　　&lt;CATALOG&gt;<br />
　　&lt;CD&gt;<br />
　　&lt;TITLE&gt;Empire Burlesque&lt;/TITLE&gt;<br />
　　&lt;ARTIST&gt;Bob Dylan&lt;/ARTIST&gt;<br />
　　&lt;COUNTRY&gt;USA&lt;/COUNTRY&gt;<br />
　　&lt;COMPANY&gt;Columbia&lt;/COMPANY&gt;<br />
　　&lt;PRICE&gt;10.90&lt;/PRICE&gt;<br />
　　&lt;YEAR&gt;1985&lt;/YEAR&gt;<br />
　　&lt;/CD&gt;<br />
　　&lt;CD&gt;<br />
　　&lt;TITLE&gt;Hide your heart&lt;/TITLE&gt;<br />
　　&lt;ARTIST&gt;Bonnie Tylor&lt;/ARTIST&gt;<br />
　　&lt;COUNTRY&gt;UK&lt;/COUNTRY&gt;<br />
　　&lt;COMPANY&gt;CBS Records&lt;/COMPANY&gt;<br />
　　&lt;PRICE&gt;9.90&lt;/PRICE&gt;<br />
　　&lt;YEAR&gt;1988&lt;/YEAR&gt;<br />
　　&lt;/CD&gt;<br />
　　&lt;CD&gt;<br />
　　&lt;TITLE&gt;Greatest Hits&lt;/TITLE&gt;<br />
　　&lt;ARTIST&gt;Dolly Parton&lt;/ARTIST&gt;<br />
　　&lt;COUNTRY&gt;USA&lt;/COUNTRY&gt;<br />
　　&lt;COMPANY&gt;RCA&lt;/COMPANY&gt;<br />
　　&lt;PRICE&gt;9.90&lt;/PRICE&gt;<br />
　　&lt;YEAR&gt;1982&lt;/YEAR&gt;<br />
　　&lt;/CD&gt;<br />
　　&lt;CD&gt;<br />
　　&lt;TITLE&gt;Still got the blues&lt;/TITLE&gt;<br />
　　&lt;ARTIST&gt;Gary More&lt;/ARTIST&gt;<br />
　　&lt;COUNTRY&gt;UK&lt;/COUNTRY&gt;<br />
　　&lt;COMPANY&gt;Virgin redords&lt;/COMPANY&gt;<br />
　　&lt;PRICE&gt;10.20&lt;/PRICE&gt;<br />
　　&lt;YEAR&gt;1990&lt;/YEAR&gt;<br />
　　&lt;/CD&gt;<br />
　　&lt;CD&gt;<br />
　　&lt;TITLE&gt;Eros&lt;/TITLE&gt;<br />
　　&lt;ARTIST&gt;Eros Ramazzotti&lt;/ARTIST&gt;<br />
　　&lt;COUNTRY&gt;EU&lt;/COUNTRY&gt;<br />
　　&lt;COMPANY&gt;BMG&lt;/COMPANY&gt;<br />
　　&lt;PRICE&gt;9.90&lt;/PRICE&gt;<br />
　　&lt;YEAR&gt;1997&lt;/YEAR&gt;<br />
　　&lt;/CD&gt;<br />
　　&lt;/CATALOG&gt; <br />
　　上面代码首先用&lt;?xml version="1.0"?&gt;声明语句表明这是一个XML文档，它的格式遵守XML 1.0标准规范。然后是文档内容，结构树非常清晰：<br />
　　&lt;CATALOG&gt;<br />
　　&lt;CD&gt;<br />
　　...... <br />
　　&lt;/CD&gt;<br />
　　&lt;CD&gt;<br />
　　...... <br />
　　&lt;/CD&gt;<br />
　　&lt;/CATALOG&gt;<br />
　　一共定义了5组数据。我们将上面的代码存为cd.xml文件，以备调用。</p>
<p>　　<strong>第三步：建立相应的HTML文件。</strong></p>
<p>　　1.导入XML数据。<br />
　　我们知道，目前流行的浏览器中，暂时只有微软的IE5.0以上版本浏览器支持XML。IE是通过在HTML中的object物件来支持插入XML，并通过js的XMLDocument.load()方法来导入数据。我们看代码：<br />
　　&lt;object WIDTH="0" HEIGHT="0"<br />
　　CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" ID="xmldso"&gt;<br />
　　&lt;/object&gt;<br />
　　定义一个object，ID名为xmldso。然后在head区用js引入xml数据：<br />
　　&lt;script for="window" event="onload"&gt;<br />
　　xmldso.XMLDocument.load("cd.xml");<br />
　　&lt;/script&gt;<br />
　　2.捆绑数据。<br />
　　然后将用&lt;SPAN&gt;标识来将XML数据绑定在表格中。其中ID,DATASRC,DTATFLD都是&lt;SPAN&gt;的属性。代码如下：<br />
　　&lt;table&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Title:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Artist:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Year:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Country:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Company:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Price:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;/table&gt;<br />
　　3.动作操作。<br />
　　最后，为数据提供浏览按钮：<br />
　　&lt;INPUT TYPE=button VALUE="上一张CD" ONCLICK="moveprevious()"&gt;<br />
　　&lt;INPUT TYPE=button VALUE="下一张CD" ONCLICK="movenext()"&gt;<br />
　　并利用js来完成两个鼠标点击功能：movenext()和moveprevious()。在head区加入如下代码：<br />
　　&lt;script language="JavaScript"&gt;<br />
　　function movenext()<br />
　　{<br />
　　if (xmldso.recordset.absoluteposition &lt; xmldso.recordset.recordcount)<br />
　　{<br />
　　xmldso.recordset.movenext();<br />
　　}<br />
　　}<br />
　　function moveprevious()<br />
　　{<br />
　　if (xmldso.recordset.absoluteposition &gt; 1)<br />
　　{<br />
　　xmldso.recordset.moveprevious();<br />
　　}<br />
　　}<br />
　　&lt;/script&gt;<br />
　　好，我们先看HTML文件的全部原代码：<br />
　　&lt;html&gt;<br />
　　&lt;head&gt;<br />
　　&lt;script for="window" event="onload"&gt;<br />
　　xmldso.XMLDocument.load("cd.xml");<br />
　　&lt;/script&gt;<br />
　　&lt;script language="JavaScript"&gt;<br />
　　function movenext()<br />
　　{<br />
　　if (xmldso.recordset.absoluteposition &lt; xmldso.recordset.recordcount)<br />
　　{<br />
　　xmldso.recordset.movenext();<br />
　　}<br />
　　}<br />
　　function moveprevious()<br />
　　{<br />
　　if (xmldso.recordset.absoluteposition &gt; 1)<br />
　　{<br />
　　xmldso.recordset.moveprevious();<br />
　　}<br />
　　}<br />
　　&lt;/script&gt;<br />
　　&lt;TITLE&gt;CD Navigate&lt;/TITLE&gt;<br />
　　&lt;/head&gt;<br />
　　&lt;body&gt;<br />
　　&lt;p&gt;<br />
　　&lt;object WIDTH="0" HEIGHT="0"<br />
　　CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" ID="xmldso"&gt;<br />
　　&lt;/object&gt;<br />
　　&lt;table&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Title:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Artist:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Year:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Country:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Company:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;tr&gt;&lt;td&gt;Price:&lt;/td&gt;&lt;td&gt;&lt;SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE"&gt;&lt;/SPAN&gt;&lt;/td&gt;&lt;/tr&gt;<br />
　　&lt;/table&gt;<br />
　　&lt;p&gt;<br />
　　&lt;INPUT TYPE=button VALUE="上一张CD" ONCLICK="moveprevious()"&gt;<br />
　　&lt;INPUT TYPE=button VALUE="下一张CD" ONCLICK="movenext()"&gt;<br />
　　&lt;/p&gt;<br />
　　&lt;/body&gt;<br />
　　&lt;/html&gt;<br />
　　将以上代码存为cd.htm文件，于第二步的cd.xml文件放在一起。打开cd.htm文件，你就看见和上面实例一样的效果了。<br />
　　好，到今天为止，我们已经学习了关于XML的不少知识，我们来总结一下前面五个章节，分别是XML快速入门，XML的概念原理，XML的术语，XML的语法和本章的实例解析。到这里，教程部分就结束了。在写作过程中，阿捷尽最大努力将有关XML概念讲得通俗易懂，尽量把自己的理解告诉给大家，但因为本人学习XML时间也不长，对整个XML的技术把握还不够系统和深入，所以难免有疏漏的地方，请大家指正和谅解，谢谢！<br />
　　在教程最后，附带一章"XML的相关资源"，提供了许多非常好的学习网站和资源连接，推荐您保存下来。请继续浏览：XML的相关资源。</p>
<img src ="http://www.blogjava.net/viita/aggbug/223582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viita/" target="_blank">viita</a> 2008-08-21 20:30 <a href="http://www.blogjava.net/viita/archive/2008/08/21/223582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第二章　XML概念</title><link>http://www.blogjava.net/viita/archive/2008/08/12/221574.html</link><dc:creator>viita</dc:creator><author>viita</author><pubDate>Tue, 12 Aug 2008 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/viita/archive/2008/08/12/221574.html</guid><wfw:comment>http://www.blogjava.net/viita/comments/221574.html</wfw:comment><comments>http://www.blogjava.net/viita/archive/2008/08/12/221574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viita/comments/commentRss/221574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viita/services/trackbacks/221574.html</trackback:ping><description><![CDATA[<strong>导言</strong><br />
　　经过第一章的快速入门学习，你已经知道了XML是一种能够让你自己创造标识的语言，它可以将数据与格式从网页中分开，它可以储存数据和共享数据的特性使得XML无所不能。如果你希望深入学习XML，系统掌握XML的来龙去脉，那么我们首先还是要回到XML概念的问题上来。XML(Extensible Markup Language)，一种扩展性标识语言。"扩展性""标识""语言"。每一个词都明确的点明了XML的重要特点和功能。我们来仔细分析：<br />
　　一. 扩展性<br />
　　二. 标识<br />
　　三. 语言<br />
　　四. 结构化<br />
　　五. Meta数据<br />
　　六. 显示<br />
　　七. DOM
<p>　　<strong>一.扩展性---使用XML，你可以为你的文档建立自己的标记(tags)。</strong></p>
<p>　　XML的第一个词是"扩展性"，这正是XML强大的功能和弹性的原因。<br />
　　在HTML里，有许多固定的标记，我们必须记住然后使用它们，你不能使用HTML规范里没有的标记。而在XML中，你能建立任何你需要的标记。你可以充分发挥你的想象力，给你的文档起一些好记的标记名称。比如，你的文档里包含一些游戏的攻略，你可以建立一个名为&lt;game&gt;的标记，然后在&lt;game&gt;下再根据游戏类别建立&lt;RPG&gt;,&lt;SLG&gt;等标记。只要清晰，易于理解你可以建立任何数量的标记。<br />
　　一开始你也许会不适应，因为我们在学习HTML时，有固定的标记可以直接学习和使用；(很多人包括我自己都是边分析别人的代码和标识，边建立自己的网页)，而XML却没有任何标记可以学，也很少有文档的标记是一模一样的。我们怎么办？呵呵，没有就自己创建呀。一旦你真正开始写XML文档，你会发现随心所欲的创造新标记也是一份很有趣的事。你可以建立有自己特色的标记，甚至建立你自己的HTML语言。<br />
　　扩展性使你有更多的选择和强大的能力，但同时也产生一个问题就是你必须学会规划。你自己要理解自己的文档，知道它由哪几部分组成，相互之间的关系和如何识别它们。<br />
　　关于建立标识还需要说明一点，标识是描述数据的类型或特性，比如宽&lt;width&gt;，年龄&lt;age&gt;，姓名&lt;name&gt;等，而不是数据的内容，比如：&lt;10pxl&gt;,&lt;18&gt;,&lt;张三&gt;，这些都是无用的标记。如果你学过数据库，你可以这样理解，标识就是一种字段名。</p>
<p>　　<strong>二.标识---使用XML你可以识别文档中的元素。</strong></p>
<p>　　XML的第二个词是"标识"，这表明了XML的目的是标识文档中的元素。<br />
　　不论你是HTML,还是XML，标识的本质在于便于理解，如果没有标识，你的文档在计算机看来只是一个很长的字符串，每个字看起来都一样，没有重点之分。<br />
　　通过标识，你的文档才便于阅读和理解，你可以划分段落，列明标题。XML中，你更可以利用其扩展性来为文档建立更合适的标识。<br />
　　不过，有一点要提醒大家注意：标识仅仅是用来识别信息，它本身并不传达信息。例如这样的HTML代码：<br />
　　&lt;b&gt;frist step&lt;b&gt; <br />
　　这里&lt;b&gt;表示粗体，只用来说明是用粗体来显示"frist step"字符，&lt;b&gt;本身并不包含任何实际的信息，在页面上你看不到&lt;b&gt;，真正传达信息的是"frist step "。</p>
<p>　　<strong>三.语言---使用XML你要遵循特定的语法来标识你的文档。</strong></p>
<p>　　XML第三个词是"语言"。这表明了作为一种语言XML必须遵循一定的规则。虽然XML的扩展性允许你创建新标识，但它仍然必须遵循特定的结构，语法和明确的定义。<br />
　　在计算机领域，语言常常表示一种"程序语言"，用来编程实现一些功能和应用，但不是所有的"语言"都是用来编程的，XML就只是一种用来定义标识和描述信息的语言。<br />
　　下面我们来深入了解一下XML应用的其本原理，可能会很枯燥，但是对于整体的理解很重要，你可以先快速过一遍，心里有一个模糊的概念，具体精髓则需要在实践中慢慢领会。</p>
<p>　　<strong>四.结构化---XML促使文档结构化，所有的信息按某种关系排列。</strong></p>
<p>　　"结构化"听起来太抽象了，我们这样理解，结构化就是为你的文档建立一个框架，就象写文章先写一个提纲。结构化使你的文档看起来不会杂乱无章，每一部分都紧密联系，形成一个整体。<br />
　　结构化有两个原则：<br />
　　1.每一部分(每一个元素)都和其他元素有关联。关联的级数就形成了结构。<br />
　　2.标识本身的含义与它描述的信息相分离。<br />
　　我们来看一个简单的例子帮助理解：<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;myfile&gt;<br />
　　　&lt;title&gt;XML轻松学习手册&lt;/title&gt;<br />
　　　&lt;chapter&gt;XML快速入门<br />
　　　　&lt;para&gt;什么是XML&lt;/para&gt;<br />
　　　　&lt;para&gt;使用XML的好处&lt;/para&gt;<br />
　　　&lt;/chapter&gt;<br />
　　　&lt;chapter&gt;XML的概念<br />
　　　　&lt;para&gt;扩展性&lt;/para&gt;<br />
　　　　&lt;para&gt;标识&lt;/para&gt;<br />
　　　&lt;/chapter&gt;<br />
　　&lt;/myfile&gt;<br />
　　这是本文的XML描述文档，可以看到标识分三级关联,非常清晰：<br />
　　&lt;myfile&gt;<br />
　　　&lt;chapter&gt;<br />
　　　　&lt;para&gt;<br />
　　　　　...<br />
　　　　&lt;/para&gt;<br />
　　　&lt;/chapter&gt;<br />
　　&lt;/myfile&gt;<br />
　　上面这样的文档结构，我们又称之为"文档树"，主干是父元素，如&lt;myfile&gt;，分支和页是子元素，如&lt;chapter&gt;和&lt;para&gt;。</p>
<p>　　<strong>五.Meta数据(Metadata)---专业的XML使用者会使用meta数据来工作。</strong></p>
<p>　　在HTML中我们知道可以使用meta标识来定义网页的关键字，简介等，这些标识不会显示在网页中，但可以被搜索引擎搜索到，并影响搜索结果的排列顺序。<br />
　　XML对这一原理进行了深化和扩展，用XML，你可以描述你的信息在哪里，你可以通过meta来验证信息，执行搜索，强制显示，或者处理其他的数据。<br />
　　下面是一些XML metadata在实际应用中的用途：<br />
　　1.可以验证数字签名，使在线商务的提交动作(submission)有效。<br />
　　2.可以被方便的建立索引和进行更有效搜索。<br />
　　3.可以在不同语言之间传输数据。<br />
　　W3C组织正在研究一种名为RDF(Resource Description Framework)的metadata处理方法，可以自动交换信息，W3C宣称，使用RDF配合数字签名，将使网络中存在"真实可信"的电子商务。</p>
<p>　　<strong>六.显示</strong></p>
<p>　　单独用XML不能显示页面，我们使用格式化技术，比如CSS或者XSL，才能显示XML标记创建的文档。<br />
　　我们在前面第一章讲到XML是将数据和格式分离的。XML文档本身不知道如何来显示，必须有辅助文件来帮助实现。(XML取消了所有标识，包括font,color,p等风格样式定义标识，因此XML全部是采用类似DHTML中CSS的方法来定义文档风格样式。)，XML中用来设定显示风格样式的文件类型有：<br />
　　1.XSL <br />
　　XSL全称是Extensible Stylesheet Language(可扩展样式语言), 是将来设计XML文档显示样式的主要文件类型。它本身也是基于XML语言的。使用XSL，你可以灵活的设置文档显示样式，文档将自动适应任何浏览器和PDA(掌上电脑)。<br />
　　XSL也可以将XML转化为HTML，那样，老的浏览器也可以浏览XML文档了。<br />
　　2.CSS <br />
　　CSS大家很熟悉了，全称是Cascading Style Sheets(层叠样式表)，是目前用来在浏览器上显示XML文档的主要方法。<br />
　　3.Behaviors <br />
　　Behaviors现在还没有成为标准。它是微软的IE浏览器特有的功能，用它可以对XML标识设定一些有趣动作。感兴趣可以点这里看一个例子</p>
<p>　　<strong>七.DOM</strong></p>
<p>　　DOM全称是document object model(文档对象模型)，DOM是用来干什么的呢？假设把你的文档看成一个单独的对象，DOM就是如何用HTML或者XML对这个对象进行操作和控制的标准。<br />
　　面向对象的思想方法已经非常流行了，在编程语言(例如java，js)中，都运用面向对象的编程思想。在XML中，就是要将网页也作为一个对象来操作和控制，我们可以建立自己的对象和模板。与对象进行交流，如何命令对象，就要用到API。API全称Application Programming Interface，它是访问和操作对象的规则。而DOM就是一种详细描述HTML/XML文档对象规则的API。它规定了HTML/XML文档对象的命名协定，程序模型，沟通规则等。在XML文档中，我们可以将每一个标识元素看作一个对象---它有自己的名称和属性。<br />
　　XML创建了标识，而DOM的作用就是告诉script如何在浏览器窗口中操作和显示这些标识<br />
　　上面我们已经简要的讲述了一些XML的基本原理，我们来看看它们之间的关联以及它们是如何工作的，先看这里一张图：<br />
　　<img height="434" src="mk:@MSITStore:F:\学习\其他应用资料\XML轻松学习手册.chm::/易都网--XML轻松学习手册2.files/xml02_01.gif" width="373"  alt="" /> <br />
　　1.XML描述数据类型。例如:"King lear"是一个标题元素；<br />
　　2.CSS储存并控制元素的显示样式。例如：标题将被以18pt字体显示<br />
　　3.script脚本控制元素如何动作。例如：当一个title元素"out of stock"，将被用红色显示。<br />
　　4.DOM则为脚本和对象的交流提供一个公共平台，并将结果显示在浏览器窗口。<br />
　　如果任何一个部分发生错误，都不会得到正确结果。<br />
　　好了，看到这里，我们已经对XML是如何工作的有一个整体的大致的概念。通过这一章的学习，我们可能感觉到XML似乎更偏向数据处理，更方便程序员学习。实际情况也是这样的，XML设计的目的就是用来方便的共享和交互数据的。下一章，我们将系统的了解关于XML的各种术语。欢迎您继续浏览。</p>
   <img src ="http://www.blogjava.net/viita/aggbug/221574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viita/" target="_blank">viita</a> 2008-08-12 22:48 <a href="http://www.blogjava.net/viita/archive/2008/08/12/221574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第三章　XML的术语</title><link>http://www.blogjava.net/viita/archive/2008/08/12/221575.html</link><dc:creator>viita</dc:creator><author>viita</author><pubDate>Tue, 12 Aug 2008 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/viita/archive/2008/08/12/221575.html</guid><wfw:comment>http://www.blogjava.net/viita/comments/221575.html</wfw:comment><comments>http://www.blogjava.net/viita/archive/2008/08/12/221575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viita/comments/commentRss/221575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viita/services/trackbacks/221575.html</trackback:ping><description><![CDATA[<strong>提纲</strong><br />
　　一.XML文档的有关术语<br />
　　二.DTD的有关术语<br />
　　<strong>导言</strong><br />
　　初学XML最令人头疼的就是有一大堆新的术语概念要理解。由于XML本身也是一个崭新的技术，正在不断发展和变化，各组织和各大网络公司(微软,IBM,SUN等)都在不断推出自己的见解和标准，因此新概念漫天飞就不足为奇了。而国内又缺乏权威的机构或组织来对这些术语正式定名，你所看见的有关XML的中文教材大部分是靠作者本身的理解翻译过来的，有些是正确的，有些是错误的，更加妨碍了我们对这些概念的理解和学习。<br />
　　你下面将要看到的关于XML术语的解释，也是作者本身的理解和翻译。阿捷是以W3C组织发布的XML1.0标准规范和相关的正式说明文档为根据来讲述。可以确保这些理解是基本正确的，至少不是错误的。你如果想进一步阅读和了解，我在本文的最后部分列明了相关资源的出处和链接，你可以直接访问。好，我们转入正题：
<p>　　<strong>一.XML文档的有关术语</strong></p>
<p>　　什么是XML文档？知道HTML原代码文件吧，XML文档就是用XML标识写的XML原代码文件。XML文档也是ASCII的纯文本文件，你可以用Notepad创建和修改。XML文档的后缀名为.XML，例如myfile.xml。用IE5.0以上浏览器也可以直接打开.xml文件，但你看到的就是"XML原代码"，而不会显示页面内容。你可以将下面代码存为myfile.xml试试：<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML轻松学习手册&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;email&gt;ajie@aolhoo.com&lt;/email&gt;<br />
　　&lt;date&gt;20010115&lt;/date&gt;<br />
　　&lt;/myfile&gt;<br />
　　XML文档包含三个部分：<br />
　　1. 一个XML文档声明；<br />
　　2. 一个关于文档类型的定义；<br />
　　3. 用XML标识创建的内容。<br />
　　举例说明:<br />
　　&lt;?xml version="1.0"?&gt;<br />
　　&lt;!DOCTYPE filelist SYSTEM "filelist.dtd"&gt;<br />
　　&lt;filelist&gt; <br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;QUICK START OF XML&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;/myfile&gt;<br />
　　......<br />
　　&lt;/filelist&gt; <br />
　　其中第一行&lt;?xml version="1.0"?&gt;就是一个XML文档的声明，第二行说明这个文档是用filelist.dtd来定义文档类型的，第三行以下就是内容主体部分。<br />
　　我们来了解XML文档中有关的术语：<br />
　　1.Element(元素)：<br />
　　元素在HTML我们已经有所了解，它是组成HTML文档的最小单位，在XML中也一样。一个元素由一个标识来定义，包括开始和结束标识以及其中的内容，就象这样：&lt;author&gt;ajie&lt;/author&gt; <br />
　　唯一不同的就是：在HTML中，标识是固定的，而在XML中，标识需要你自己创建。<br />
　　2.Tag(标识) <br />
　　标识是用来定义元素的。在XML中，标识必须成对出现，将数据包围在中间。标识的名称和元素的名称是一样的。例如这样一个元素：<br />
　　&lt;author&gt;ajie&lt;/author&gt; <br />
　　其中&lt;author&gt;就是标识。<br />
　　3.Attribute(属性): <br />
　　什么是属性？看这段HTML代码:&lt;font color="red"&gt;word&lt;/font&gt;。其中color就是font的属性之一。<br />
　　属性是对标识进一步的描述和说明，一个标识可以有多个属性，例如font的属性还有size。XML中的属性与HTML中的属性是一样的，每个属性都有它自己的名字和数值，属性是标识的一部分。举例：<br />
　　&lt;author sex="female"&gt;ajie&lt;/author&gt;<br />
　　XML中属性也是自己定义的，我们建议你尽量不使用属性，而将属性改成子元素，例如上面的代码可以改成这样：<br />
　　&lt;author&gt;ajie<br />
　　&lt;sex&gt;female&lt;/sex&gt;<br />
　　&lt;/author&gt;<br />
　　原因是属性不易扩充和被程序操作。<br />
　　4.Declaration(声明) <br />
　　在所有XML文档的第一行都有一个XML声明。这个声明表示这个文档是一个XML文档，它遵循的是哪个XML版本的规范。一个XML的声明语句就象这样：<br />
　　&lt;?xml version="1.0"?&gt; <br />
　　5.DTD(文件类型定义) <br />
　　DTD是用来定义XML文档中元素，属性以及元素之间关系的。<br />
　　通过DTD文件可以检测XML文档的结构是否正确。但建立XML文档并不一定需要DTD文件。关于DTD文件的详细说明我们将在下面单独列项。<br />
　　6.Well-formed XML(良好格式的XML)<br />
　　一个遵守XML语法规则，并遵守XML规范的文档称之为"良好格式"。如果你所有的标识都严格遵守XML规范，那么你的XML文档就不一定需要DTD文件来定义它。<br />
　　良好格式的文档必须以一个XML声明开始，例如：<br />
　　&lt;?xml version="1.0" standalone="yes" encoding="UTF-8"?&gt;<br />
　　其中你必须说明文档遵守的XML版本，目前是1.0；其次说明文档是"独立的"，它不需要DTD文件来验证其中的标识是否有效；第三，要说明文档所使用的语言编码。默认的是UTF-8，如果使用中文，你需要设置为GB2312。<br />
　　良好格式的XML文档必须有一个根元素，就是紧接着声明后面建立的第一个元素，其它元素都是这个根元素的子元素，属于根元素一组。<br />
　　良好格式的XML文档的内容书写时必须遵守XML语法。(有关XML语法我们将在下一章仔细讲解)<br />
　　7.Valid XML(有效的XML)<br />
　　一个遵守XML语法规则，并遵守相应DTD文件规范的XML文档称为有效的XML文档。注意我们比较"Well-formed XML"和"Valid XML"，它们最大的差别在于一个完全遵守XML规范，一个则有自己的"文件类型定义(DTD)"。<br />
　　将XML文档和它的DTD文件进行比较分析，看是否符合DTD规则的过程叫validation(确认)。这样的过程通常我们是通过一个名为parser的软件来处理的。<br />
　　有效的XML文档也必须以一个XML声明开始，例如：<br />
　　&lt;?xml version="1.0" standalone="no" encode="UTF-8"?&gt;<br />
　　和上面例子不同的，在standalone(独立)属性中，这里设置的是"no"，因为它必须和相应的DTD一起使用，DTD文件的定义方法如下：<br />
　　&lt;!DOCTYPE type-of-doc SYSTEM/PUBLIC "dtd-name"&gt; <br />
　　其中：<br />
　　"!DOCTYPE"是指你要定义一个DOCTYPE;<br />
　　"type-of-doc"是文档类型的名称，由你自己定义，通常与DTD文件名相同；<br />
　　"SYSTEM/PUBLIC"这两个参数只用其一。SYSTEM是指文档使用的私有DTD文件的网址，而PUBLIC则指文档调用一个公用的DTD文件的网址。<br />
　　"dtd-name" 就是DTD文件的网址和名称。所有DTD文件的后缀名为".dtd"。<br />
　　我们还是用上面的例子，应该写成这样：<br />
　　&lt;?xml version="1.0" standalone="no" encode="UTF-8"?&gt;<br />
　　&lt;!DOCTYPE filelist SYSTEM "filelist.dtd"&gt;</p>
<p>　　<strong>二.DTD的有关术语</strong></p>
<p>　　什么是DTD,我们上面已经简略提到。DTD是一种保证XML文档格式正确的有效方法，可以比较XML文档和DTD文件来看文档是否符合规范，元素和标签使用是否正确。一个DTD文档包含：元素的定义规则，元素间关系的定义规则，元素可使用的属性，可使用的实体或符号规则。<br />
　　DTD文件也是一个ASCII的文本文件，后缀名为.dtd。例如:myfile.dtd。<br />
　　为什么要用DTD文件呢？我的理解是它满足了网络共享和数据交互，使用DTD最大的好处在于DTD文件的共享。(就是上文DTD说明语句中的PUBLIC属性)。比如，两个相同行业不同地区的人使用同一个DTD文件来作为文档创建规范，那么他们的数据就很容易交换和共享。网上有其他人想补充数据，也只需要根据公用的DTD规范来建立文档，就立刻可以加入。<br />
　　目前，已经有数量众多的写好的DTD文件可以利用。针对不同的行业和应用，这些DTD文件已经建立了通用的元素和标签规则。你不需要自己重新创建，只要在他们的基础上加入你需要的新标识。<br />
　　当然，如果愿意，你可以创建自己的DTD，它可能和你的文档配合的更加完美。建立自己的DTD也是很简单的一件事，一般只需要定义4-5个元素就可以了。<br />
　　调用DTD文件的方法有两种：<br />
　　1.直接包含在XML文档内的DTD<br />
　　你只要在DOCTYPE声明中插入一些特别的说明就可以了，象这样：<br />
　　我们有一个XML文档：<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML轻松学习手册&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;/myfile&gt;<br />
　　我们在第一行后面插入下面代码就可以：<br />
　　&lt;!DOCTYPE myfile [<br />
　　&lt;!ELEMENT title (#PCDATA)&gt;<br />
　　&lt;!ELEMENT author (#PCDATA)&gt;<br />
　　&lt;!ENTITY copyright "Copyright 2001, Ajie."&gt;<br />
　　]&gt;<br />
　　2.调用独立的DTD文件<br />
　　将DTD文档存为.dtd的文件，然后在DOCTYPE声明行中调用，例如，将下面的代码存为myfile.dtd<br />
　　&lt;!ELEMENT myfile (title, author)&gt;<br />
　　&lt;!ELEMENT title (#PCDATA)&gt;<br />
　　&lt;!ELEMENT author (#PCDATA)&gt;<br />
　　然后在XML文档中调用，在第一行后插入：<br />
　　&lt;!DOCTYPE myfile SYSTEM "myfile.dtd"&gt;<br />
　　我们可以看到DTD文档和HTML中js的调用是差不多的，关于DTD文档具体如何写，我们将在下一章和XML文档的语法一起介绍。<br />
　　下面我们来了解DTD有关的术语：<br />
　　1.Schema(规划) <br />
　　schema是数据规则的描述。schema做两件事：<br />
　　a.它定义元素数据类型和元素之间的关系；<br />
　　b.它定义元素所能包含的内容类型。<br />
　　DTD就是关于XML文档的一个schema。<br />
　　2.Document Tree(文档树) <br />
　　"文档树"在前面第二章我们已经提到过，它是文档元素分级结构的形象表示。一个文档结构树包含根元素，根元素是最顶级的元素，(就是紧接着XML声明语句后的第一个元素)。看例子：<br />
　　&lt;?xml version="1.0"?&gt;<br />
　　&lt;filelist&gt; <br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;...&lt;/title&gt;<br />
　　&lt;author&gt;...&lt;/author&gt;<br />
　　&lt;/myfile&gt;<br />
　　&lt;/filelist&gt;<br />
　　上面的例子分三级结构排列成"树"状，其中的&lt;filelist&gt;就是根元素。在XML和DTD文件中，第一个定义的都是根元素。<br />
　　3.Parent Element(父元素)/Child Element(子元素)<br />
　　父元素是指包含有其它元素的元素，被包含的元素称为它的子元素。看上面的"结构树"，其中&lt;myfile&gt;是父元素，&lt;title&gt;,&lt;author&gt;是它的子元素，而&lt;myfile&gt;又是&lt;filelist&gt;的子元素。象&lt;title&gt;这样没有包含任何子元素的最后一级元素我们也称之为"页元素"。<br />
　　4.Parser(解析软件) <br />
　　Parser是一种检查XML文档是否遵循DTD规范的工具软件。<br />
　　XML的parser发展为两类：一种是"非确认类paeser"，只检测文档是否遵守XML语法规则，是否用元素标识建立了文档树。另一种是"确认类paeser"，它不但检测文档语法，结构树，而且比较解析你使用的元素标识是否遵守了相应DTD文件的规范。<br />
　　Parser能独立使用，也可以成为编辑软件或浏览器的一部分。在后面的相关资源列表里，我列出了当前比较流行的一些parsers。<br />
　　好了，通过第三章的学习，我们已经了解了一些XML和DTD的基本术语，但是我们还不知道怎样来写这些文件，需要遵循什么样的语法，在下一章，将重点介绍有关撰写XML和DTD文档的语法。请继续浏览，谢谢！</p>
  <img src ="http://www.blogjava.net/viita/aggbug/221575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viita/" target="_blank">viita</a> 2008-08-12 22:48 <a href="http://www.blogjava.net/viita/archive/2008/08/12/221575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第一章　XML快速入门</title><link>http://www.blogjava.net/viita/archive/2008/08/12/221572.html</link><dc:creator>viita</dc:creator><author>viita</author><pubDate>Tue, 12 Aug 2008 14:47:00 GMT</pubDate><guid>http://www.blogjava.net/viita/archive/2008/08/12/221572.html</guid><wfw:comment>http://www.blogjava.net/viita/comments/221572.html</wfw:comment><comments>http://www.blogjava.net/viita/archive/2008/08/12/221572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/viita/comments/commentRss/221572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/viita/services/trackbacks/221572.html</trackback:ping><description><![CDATA[<strong>前言</strong><br />
　　XML越来越热，关于XML的基础教程网络上也随处可见。可是一大堆的概念和术语往往让人望而生畏，很多朋友问我：XML到底有什么用，我们是否需要学习它？我想就我个人学习过程的心得和经验，写一篇比较全面的介绍文章。首先有两点是需要肯定的：<br />
　　第一：XML肯定是未来的发展趋势，不论是网页设计师还是网络程序员，都应该及时学习和了解，等待只会让你失去机会；<br />
　　第二：新知识肯定会有很多新概念，尝试理解和接受，您才可能提高。不要害怕和逃避，毕竟我们还年轻。<br />
　　<strong>提纲</strong><br />
　　本文共分五大部分。分别是XML快速入门，XML的概念，XML的术语，XML的实现，XML的实例分析。最后附录介绍了XML的相关资源。作者站在普通网页设计人员的角度，用平实生动的语言，向您讲述XML的方方面面，帮助你拨开XML的神秘面纱，快速步入XML的新领域。<br />
　　第一章:XML快速入门<br />
　　一. 什么是XML？<br />
　　二. XML是新概念吗？<br />
　　三. 使用XML有什么好处？<br />
　　四. XML很难学吗？<br />
　　五. XML和HTML的区别<br />
　　六. XML的严格格式<br />
　　七. 关于XML的更多
<p>　　<strong>一. 什么是XML？</strong></p>
<p>　　这往往是第一个问题，也往往在第一个问题上你就会搞不明白，因为大多的教材上这样回答：<br />
　　XML是Extensible Markup Language的简写，一种扩展性标识语言。<br />
　　这是标准的定义。那么什么是标志语言，为什么叫扩展性？已经让人有些糊涂。我想我们这样来理解会好一些：<br />
　　对HTML你已经非常熟悉了吧，它就是一种标记语言，记得它的全称吗："Hypertext Markup Language" 超文本标记语言。明白了？同时，HTML里面有很多标签，类似&lt;head&gt;,&lt;table&gt;等，都是在HTML 4.0里规范和定义，而XML里允许你自己创建这样的标签，所以叫做可扩展性。<br />
　　这里有几个容易混淆的概念要提醒大家：<br />
　　1.XML并不是标记语言。它只是用来创造标记语言(比如HTML)的元语言。天，又糊涂了！不要紧，你只要知道这一点：XML和HTML是不一样的，它的用途比HTML广泛得多，我们将在后面仔细介绍。<br />
　　2.XML并不是HTML的替代产品。XML不是HTML的升级，它只是HTML的补充，为HTML扩展更多功能。我们仍将在较长的一段时间里继续使用HTML。(但值得注意的是HTML的升级版本XHTML的确正在向适应XML靠拢。)<br />
　　3.不能用XML来直接写网页。即便是包含了XML数据，依然要转换成HTML格式才能在浏览器上显示。<br />
　　下面就是一段XML示例文档(例1)，用来表示本文的信息:<br />
　　&lt;?xml version="1.0"?&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML Quick Start&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;email&gt;ajie@aolhoo.com&lt;/email&gt;<br />
　　&lt;date&gt;20010115&lt;/date&gt;<br />
　　&lt;/myfile&gt;<br />
　　注意：<br />
　　1.这段代码仅仅是代码，让你初步感性认识一下XML，并不能实现什么具体应用；<br />
　　2.其中类似&lt;title&gt;,&lt;author&gt;的语句就是自己创建的标记(tags)，它们和HTML标记不一样，例如这里的&lt;title&gt;是文章标题的意思，HTML里的&lt;title&gt;是页面标题。</p>
<p>　　<strong>二. XML是新概念吗？</strong></p>
<p>　　不是。XML来源于SGML，一种比HTML更早的标志语言标准。<br />
　　关于SGML，我们来简单了解一下，你只需要有个大致概念就可以。<br />
　　SGML全称是"Standard Generalized Markup Language"(通用标识语言标准)。看名称就知道：它是标志语言的标准，也就是说所有标志语言都是依照SGML制定的，当然包括HTML。SGML的覆盖面很广，凡是有一定格式的文件都属于SGML，比如报告，乐谱等等，HTML是SGML在网络上最常见的文件格式。因此，人们戏称SGML是HTML的"妈妈"。<br />
　　而XML就是SGML的简化版，只不过省略了其中复杂和不常用的部分。(哦，明白了！是HTML第二个"mother"，难怪比HTML功能强大呢。)，和SGML一样，XML也可以应用在金融，科研等各个领域，我们这里讲的，只是XML在web方面的运用而已。<br />
　　到这里，你应该有点明白了：XML是用来创建定义类似HTML的标记语言，然后再用这个标记语言来显示信息。</p>
<p>　　<strong>三. 使用XML有什么好处？</strong></p>
<p>　　有了HTML，为什么还需要用XML？<br />
　　因为现在网络应用越来越广泛，仅仅靠HTML单一文件类型来处理千变万化的文档和数据已经力不从心，而且HTML本身语法十分不严密，严重影响网络信息传送和共享。(想想浏览器兼容的问题伤透多少设计师的脑细胞啊。)人们早已经开始探讨用什么方法来满足网络上各种应用的需要。使用SGML是可以的，但SGML太庞大，编程复杂，于是最终选择了"减肥"的SGML---XML作为下一代web运用的数据传输和交互的工具。<br />
　　使用XML有什么好处？来看w3c组织(XML标准制定者)的说明：<br />
　　XML使得在网络上使用SGML语言更加"简单和直接": 简化了定义文件类型的过程，简化了编程和处理SGML文件的过程，简化了在Web上的传送和共享。<br />
　　1.XML可以广泛的运用于web的任何地方; <br />
　　2.XML可以满足网络应用的需求；<br />
　　3.使用XML将使编程更加简单；<br />
　　4.XML便于学习和创建；<br />
　　5.XML代码将清晰和便于阅读理解；<br />
　　还是抽象了些。让我们在后面的实例教程中慢慢体会XML的强大优势吧！<br />
<br />
　　<strong>四. XML很难学吗？</strong><br />
<br />
　　如果你有兴趣学习XML，不禁会问：XML难吗？学习XML需要什么样的基础？<br />
　　XML非常简单，学习容易。如果你熟悉HTML，你会发现它的文档和HTML非常相似，看同样的示例文档(例1)：<br />
　　&lt;?xml version="1.0"?&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML Quick Start&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;email&gt;ajie@aolhoo.com&lt;/email&gt;<br />
　　&lt;date&gt;20010115&lt;/date&gt;<br />
　　&lt;/myfile&gt;<br />
　　第一行&lt;?xml version="1.0"?&gt;是一个XML声明，表示文档遵循的是XML的1.0 版的规范。<br />
　　第二行定义了文档里面的第一个元素(element)，也称为根元素: &lt;myfile&gt;。这个就类似HTML里的&lt;HTML&gt;开头标记。注意，这个名称是自己随便定义的。<br />
　　再下面定义了四个子元素：title,author,email,和date。分别说明文章的标题，作者，邮箱和日期。当然，你可以用中文来定义这些标签，看上去更便于理解：<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;文章&gt;<br />
　　&lt;标题&gt;XML轻松学习手册&lt;/标题&gt;<br />
　　&lt;作者&gt;ajie&lt;/作者&gt;<br />
　　&lt;信箱&gt;ajie@aolhoo.com&lt;/信箱&gt;<br />
　　&lt;日期&gt;20010115&lt;/日期&gt;<br />
　　&lt;/文章&gt;<br />
　　这就是XML的文档，任何掌握HTML的网友都可以直接写出这样简单的XML文档。<br />
　　另外，学习XML还必须掌握一种页面脚本语言，常见的就是javascript和VB script。因为XML数据是使用script实现HTML中调用和交互的。我们看一个最简单的例子(例2)：<br />
　　1.将下面代码存为myfile.htm<br />
　　&lt;html&gt;<br />
　　&lt;head&gt;<br />
　　&lt;script language="JavaScript" for="window" event="onload"&gt;<br />
　　var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");<br />
　　xmlDoc.async="false";<br />
　　xmlDoc.load("myfile.xml");<br />
　　nodes = xmlDoc.documentElement.childNodes;<br />
　　title.innerText = nodes.item(0).text;<br />
　　author.innerText = nodes.item(1).text;<br />
　　email.innerText = nodes.item(2).text;<br />
　　date.innerText = nodes.item(3).text;<br />
　　&lt;/script&gt;<br />
　　&lt;title&gt;在HTML中调用XML数据&lt;/title&gt;<br />
　　&lt;/head&gt;<br />
　　&lt;body bgcolor="#FFFFFF"&gt;<br />
　　&lt;b&gt;标题: &lt;/b&gt;<br />
　　&lt;span id="title"&gt; &lt;/span&gt;&lt;br&gt;<br />
　　&lt;b&gt;作者: &lt;/b&gt;<br />
　　&lt;span id="author"&gt;&lt;/span&gt;&lt;br&gt;<br />
　　&lt;b&gt;信箱: &lt;/b&gt;<br />
　　&lt;span id="email"&gt;&lt;/span&gt;&lt;br&gt;<br />
　　&lt;b&gt;日期：&lt;/b&gt;<br />
　　&lt;span id="date"&gt;&lt;/span&gt;&lt;br&gt;<br />
　　&lt;/body&gt;<br />
　　&lt;/html&gt;<br />
　　2.将下面代码存为myfile.xml<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML轻松学习手册&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;email&gt;ajie@aolhoo.com&lt;/email&gt;<br />
　　&lt;date&gt;20010115&lt;/date&gt;<br />
　　&lt;/myfile&gt;<br />
　　3.将它们放在同一个目录下，用IE5以上版本浏览器打开，可以看到效果。点这里看实例。<br />
　　学习并掌握一种script，你将真正发挥XML无比强大的功能。</p>
<p>　　<strong>五. XML和HTML的区别</strong></p>
<p>　　XML和HTML都来自于SGML，它们都含有标记，有着相似的语法，HTML和XML的最大区别在于：HTML是一个定型的标记语言，它用固有的标记来描述，显示网页内容。比如&lt;H1&gt;表示首行标题，有固定的尺寸。相对的，XML则没有固定的标记，XML不能描述网页具体的外观，内容，它只是描述内容的数据形式和结构。<br />
　　这是一个质的区别：网页将数据和显示混在一起，而XML则将数据和显示分开来。<br />
　　我们看上面的例子，在myfile.htm中，我们只关心页面的显示方式，我们可以设计不同的界面，用不同的方式来排版页面，但数据是储存在myfile.xml中，不需要任何改变。<br />
　　(如果你是程序员，你会惊讶的发现，这与模块化面向对象编程的思想极其相似！其实网页何尝不是一种程序呢？) <br />
　　正是这种区别使得XML在网络应用和信息共享上方便，高效，可扩展。所以我们相信，XML做为一种先进的数据处理方法，将使网络跨越到一个新的境界。</p>
<p>　　<strong>六. XML的严格格式</strong></p>
<p>　　吸取HTML松散格式带来的经验教训，XML一开始就坚持实行"良好的格式"。<br />
　　我们先看HTML的一些语句，这些语句在HTML中随处可见:<br />
　　1.&lt;p&gt;sample<br />
　　2.&lt;b&gt;&lt;i&gt;sample&lt;/b&gt;&lt;/i&gt;<br />
　　3.&lt;td&gt;sample&lt;/TD&gt;<br />
　　4.&lt;font color=red&gt;samplar&lt;/font&gt;<br />
　　在XML文档中，上述几种语句的语法都是错误的。因为:<br />
　　1.所有的标记都必须要有一个相应的结束标记；<br />
　　2.所有的XML标记都必须合理嵌套；<br />
　　3.所有XML标记都区分大小写；<br />
　　4.所有标记的属性必须用""括起来；<br />
　　所以上列语句在XML中正确的写法是<br />
　　1.&lt;p&gt;sample&lt;/p&gt;<br />
　　2.&lt;b&gt;&lt;i&gt;sample&lt;/i&gt;&lt;/b&gt;<br />
　　3.&lt;td&gt;sample&lt;/td&gt;<br />
　　4.&lt;font color="red"&gt;samplar&lt;/font&gt;<br />
　　另外，XML标记必须遵循下面的命名规则:<br />
　　1.名字中可以包含字母、数字以及其它字母；<br />
　　2.名字不能以数字或"_" (下划线) 开头；<br />
　　3.名字不能以字母xml (或XML 或Xml ..) 开头；<br />
　　4.名字中不能包含空格。<br />
　　在XML文档中任何的差错，都会得到同一个结果：网页不能被显示。各浏览器开发商已经达成协议，对XML实行严格而挑剔的解析，任何细小的错误都会被报告。你可以将上面的myfile.xml修改一下，比如将&lt;email&gt;改为&lt;Email&gt;，然后用IE5直接打开myfile.xml，会得到一个出错信息页面：<br />
　　&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
　　&lt;myfile&gt;<br />
　　&lt;title&gt;XML轻松学习手册&lt;/title&gt;<br />
　　&lt;author&gt;ajie&lt;/author&gt;<br />
　　&lt;Email&gt;ajie@aolhoo.com&lt;/email&gt;<br />
　　&lt;date&gt;20010115&lt;/date&gt;<br />
　　&lt;/myfile&gt;</p>
<p>　　<strong>七. 关于XML的更多</strong></p>
<p>　　好了，到现在你已经知道：<br />
　　1.什么是XML；<br />
　　2.XML,HTML,SGML之间的关系和区别；<br />
　　3.XML的简单应用。<br />
　　恭喜你！你已经不再对XML一无所知，并且已经走在了网络技术的前沿。整个学习过程好象并不很难哦:) <br />
　　如果你对XML有更多的兴趣，希望进一步了解XML的详细资料和其它的实际运用技术，欢迎继续浏览我们的下一章：XML的概念。</p>
   <img src ="http://www.blogjava.net/viita/aggbug/221572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/viita/" target="_blank">viita</a> 2008-08-12 22:47 <a href="http://www.blogjava.net/viita/archive/2008/08/12/221572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>