﻿<?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-For a few RMB more-文章分类-XML与Java</title><link>http://www.blogjava.net/asenyifei/category/28665.html</link><description>我曾经跳进冰冷彻骨的河水中，救起了一个豆蔻少女&lt;br&gt;
是的，是这样的</description><language>zh-cn</language><lastBuildDate>Sun, 27 Jan 2008 02:11:59 GMT</lastBuildDate><pubDate>Sun, 27 Jan 2008 02:11:59 GMT</pubDate><ttl>60</ttl><item><title>潜心学习XML之篇章三：DTD文档的结构</title><link>http://www.blogjava.net/asenyifei/articles/173436.html</link><dc:creator>Jason.Chen</dc:creator><author>Jason.Chen</author><pubDate>Fri, 25 Jan 2008 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/asenyifei/articles/173436.html</guid><wfw:comment>http://www.blogjava.net/asenyifei/comments/173436.html</wfw:comment><comments>http://www.blogjava.net/asenyifei/articles/173436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asenyifei/comments/commentRss/173436.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asenyifei/services/trackbacks/173436.html</trackback:ping><description><![CDATA[<blockquote><span style="color: rgb(153, 153, 153);">（本系列文章是我学习的过程中，整理出来的笔记，如有错漏，看官请一定不吝回复，让我能认识自己的不足，并改进错误。非常感谢！）</span><br />
</blockquote><blockquote>本章大概内容：<br />
1、为什么需要DTD<br />
2、XML文档如何使用DTD<br />
&nbsp;&nbsp;&nbsp; 1）内部定义DTD<br />
&nbsp;&nbsp;&nbsp; 2）关联外部DTD<br />
3、DTD的结构<br />
&nbsp;&nbsp;&nbsp; 1）元素类型声明<br />
&nbsp;&nbsp;&nbsp; 2）属性列表声明<br />
&nbsp;&nbsp;&nbsp; 3）实体声明<br />
&nbsp;&nbsp;&nbsp; 4）记号声明<br />
</blockquote>
<br />
<blockquote>&nbsp;&nbsp;&nbsp; 对于一个格式良好的XML文档，我们只能保证这个文档的格式符合XML规范，但是元素与元素的关系，元素与属性的关系，属性的取值，我们就无法保证了。对于一个格式良好的文档，如果只是在有限的应用中使用，或者是用于存储和传输，那么它也能能够很好的满足我们的应用，但是如果要其它的用户了解你所写的XML文档，或者与其它应用进行数据的交换，那么就有必要提供一种机制，来保证我们写的XML文档和别人所写的XML文档在结构上是相同的，元素与元素之间的关系是正确的，属性的取值也是符合要求的，那么这种机制在XML规范中已经为我们提供了，那就是前一章中介绍过的文档类型声明中提到的DTD。<br />
<br />
DTD（Document Type Definition），文档类型定义。<br />
<br />
&nbsp;&nbsp;&nbsp; 在XML标准中，描述了如何创建DTD，以及如何将它与根据它的规范所编写的XML文档相关联，并且还定义了XML处理器应该如何对DTD进行处理。有了DTD就可以检测XML文档的结构是否正确。<br />
DTD为XML文档的编写者与处理者提供了共同遵循的原则，使得与文档相关的各种工作有了统一的标准。<br />
<br />
如何在XML文档中引入DTD<br />
<br />
通过在XML文档中包含文档类型声明，来建立当前文档和DTD的关联。当进行有效性验证的XML处理器读到该声明时，它获取DTD，并根据其中定义的规则对文档进行检验。文档类型声明必须位于XML声明之后，且在根元素（文档元素）之前。不过，在XML声明和文档类型声明之间可以插入注释和处理指令。<br />
我们可以直接在XML文档中定义DTD，也可以通过URI引用外部的DTD文件，或者同时采用这两种方式。<br />
上一章中，已经学习过如何通过包含文档类型声明来建立与DTD的关联。现在来分析一下这两种包含方式。<br />
<br />
<strong>
在XML文档内部给出DTD的方式：</strong><br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE&nbsp;OrganizationChart&nbsp;[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!ELEMENT&nbsp;OrganizationChart&nbsp;(Name,Office)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">ELEMENT&nbsp;Name&nbsp;(#PCDATA)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">ELEMENT&nbsp;Office&nbsp;(#PCDATA)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;]&gt;<br />
<br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">OrganizationChart</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">OrganizationChart是该XML文档的document&nbsp;element</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Toone，INC.</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Office</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">zhuhai</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Office</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">因为DTD中定义了Name，Office两个元素的顺序，Office元素不能放在Name元素的前面，否则不是有效的XML文档</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">OrganizationChart</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
</blockquote><blockquote>
&nbsp;&nbsp;&nbsp; 文档类型声明由&lt;!开始，后面紧跟一个关键字DOCTYPE，然后是文档根元素的名字，接下来是标记声明块，标记声明块放在中括号[]之间，由一个或者多个标记声明构成，最后由&gt;结束。<br />
<br />
&nbsp;&nbsp;&nbsp; 在DTD中，所有的关键字都是大写的。不过，在DTD中定义的元素和属性的大小写是可以任意制定的，但是要注意，因为XML文档是大小写相关的，所以一旦给一个元素命名，那么在整个文档中要使用相同的大小写。例如，organizationchart和OrganizationChart是不同的两个元素名。<br />
<br />
&nbsp;&nbsp;&nbsp; 在XML文档中定义DTD，比较直观，修改也比较方便，而且不用担心XML处理器找不到DTD，但是它也有一些缺点：<br />
<br />
&nbsp;&nbsp;&nbsp; 1、在文档中定义DTD会导致文档本身的长度增加，在传输数据时，即使不需要验证文档的有效性，这些声明也要一起传输。<br />
<br />
&nbsp;&nbsp;&nbsp; 2、如果多个XML文档要共用同一个DTD，我们就需要在每一个文档中加入DTD。<br />
<br />
<br />
&nbsp;&nbsp;&nbsp; <strong>引进外部DTD方式：</strong><br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE&nbsp;OrganizationChart&nbsp;SYSTEM&nbsp;"dtdTest.dtd"&nbsp;</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">OrganizationChart</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Toone，INC.</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Office</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">zhuhai</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Office</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">OrganizationChart</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
&nbsp;&nbsp;&nbsp; 对应DTD内容为：<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">ELEMENT&nbsp;OrganizationChart&nbsp;(Name,Office)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">ELEMENT&nbsp;Name&nbsp;(#PCDATA)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">ELEMENT&nbsp;Office&nbsp;(#PCDATA)</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
在文档类型声明时，用管间质SYSTEM或PUBLIC来指出外部DTD文件的位置，使用SYSTEM关键字的声明语法如下：<br />
<br />
&lt;!DOCTYPE 根元素的名字 SYSTEM "外部DTD文件的URI"&gt;<br />
<br />
SYSTEM关键字表示文档使用的是私有的DTD文件，&#8220;外部DTD文件的URI&#8221;可以是相对URI或者绝对URI。例如上面的例子使用的就是相对URI：<br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE&nbsp;OrganizationChart&nbsp;SYSTEM&nbsp;"dtdTest.dtd"&nbsp;</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
使用PUBLIC关键字的声明语法如下：<br />
<br />
&lt;!DOCTYPE 根元素的名字 PUBLIC "DTD的名字" "外部DTD文件的URI"&gt;<br />
<br />
PUBLIC关键字用于声明公共的DTD，并且这个DTD还有一个名称，"DTD的名称"也称为公共标识符(public identifier)。这个DTD可以存放在某个公共的地方，XML处理程序会根据名称按照某种方式去检索DTD，如果XML处理器不能根据名称检索到DTD，就会使用"外部DTD文件的URI"来查找该DTD。例如Java web开发的web.xml中的DTD声明（版本不同会稍有不同，我们只关注它的结构）：<br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE&nbsp;web-app&nbsp;PUBLIC&nbsp;'-//Sun&nbsp;Microsystems,&nbsp;Inc.//DTD&nbsp;Web&nbsp;Application&nbsp;2.3//EN' <br />
'http://java.sun.com/dtd/web-app_2_3.dtd'</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
<br />
DTD名称与XML名称略有不同，他们只能包含ASCII字母和数字符号、空格、回车符、换行符和一些标点符号：-'()+,/:=?;!#@*$_%.<br />
<br />
公共DTD名称要遵守一些约定。如果一项DTD是ISO标准，它的名称要以字符串"ISO"开始。如果是一个非ISO的标准组织批准的DTD，它的名字以加号（＋）开始。如果不是标准组织批准的DTD，它的名称以连字符（－）开始。这些开始字符或字符串后接双斜杠（//）和DTD所有者的名字（比如上面例子的Sun Microsystems，Inc.），之后是另一个双斜杠和DTD描述的文档类型，接着优势一个双斜杠后接ISO 639语言标识符，如EN表示英语，ZH表示中文。例如：<br />
<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE&nbsp;OrganizationChart&nbsp;PUBLIC&nbsp;"-//Jason&nbsp;Chen//DTD&nbsp;organization&nbsp;chart&nbsp;1.0//ZH"&nbsp;"dtdTest.dtd"</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
在上一章我们提到，如果我们的文档不依赖于外部文档，在XML声明中，可以通过standalone="yes"来声明这个文档是独立的文档。如果文档依赖于外部文档，可以通过standalone="no"来声明。当我们使用外部DTD文件时，就需要将属性standalone的值设置为"no"。<br />
在实际应用中，很少使用standalone属性，它的主要用途是作为XML处理器行业其他应用程序的标志，表示是否需要获取外部内容。如果文档依赖于外部文档，即使我们不使用standalone属性,XML处理器也能很好地进行处理。<br />
<br />
<strong>DTD的结构：<br />
<br />
</strong>DTD的结构一般由以下四种声明构成：<br />
&nbsp;&nbsp;&nbsp; 1、元素类型声明<br />
&nbsp;&nbsp;&nbsp; 2、属性列表声明<br />
&nbsp;&nbsp;&nbsp; 3、实体声明<br />
&nbsp;&nbsp;&nbsp; 4、记号声明<br />
一个典型的文档类型定义文件会吧所要创建的XML文档的元素结构、属性类型、实体引用等预先进行定义。<br />
下面分别介绍这四种声明。<br />
<br />
1、元素类型声明：<br />
<br />
一个DTD不仅要告诉XML处理器它所对应的文档根元素，而且还要告知处理器，文档的内容和结构，描述清楚文档结构中的每一个细节。<br />
元素类型声明不但说明了每一个文档中可能存在的元素，给出了元素的名称，而且给出了元素的具体类型。<br />
一个XML元素可以为空，也可以只包含字符数据，还可以有若干个子元素，而这些子元素同时又可以拥有它们的子元素。<br />
元素类型声明采用如下的语法格式：<br />
&lt;!ELEMENT 元素名称 元素内容说明&gt;<br />
元素内容说明可以指明五种可能的元素内容形式：＃PCDATA、子元素、混合内容、EMPTY和ANY。<br />
下面详细说明每一种元素内容说明。<br />
<br />
#PCDATA:<br />
<br />
关键字#PCDATA说明元素包含字符数据。<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 0, 255);">&lt;?</span><span style="color: rgb(255, 0, 255);">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: rgb(0, 0, 255);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">DOCTYPE&nbsp;OrganizationChart&nbsp;[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!ELEMENT&nbsp;OrganizationChart&nbsp;(Name,Office)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">ELEMENT&nbsp;Name&nbsp;(#PCDATA)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;!</span><span style="color: rgb(255, 0, 255);">ELEMENT&nbsp;Office&nbsp;(#PCDATA)</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;]&gt;<br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">OrganizationChart</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Toone，INC.</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">Office</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">ZhuHai</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">Office</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">OrganizationChart</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<br />
子元素：<br />
<br />
当一个元素只包含子元素，而没有字符数据时，则称此元素类型具有元素型内容（element content）。<br />
在该类型的元素声明时，通过内容模型来指定在其内容上的约束。内容模型是决定子元素类型和子元素出现顺序的一种简单语法。<br />
<br />
<br />
</blockquote><strong><br />
</strong>
<img src ="http://www.blogjava.net/asenyifei/aggbug/173436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asenyifei/" target="_blank">Jason.Chen</a> 2008-01-25 10:58 <a href="http://www.blogjava.net/asenyifei/articles/173436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>潜心学习XML之篇章一：概述</title><link>http://www.blogjava.net/asenyifei/articles/172869.html</link><dc:creator>Jason.Chen</dc:creator><author>Jason.Chen</author><pubDate>Fri, 04 Jan 2008 15:40:00 GMT</pubDate><guid>http://www.blogjava.net/asenyifei/articles/172869.html</guid><wfw:comment>http://www.blogjava.net/asenyifei/comments/172869.html</wfw:comment><comments>http://www.blogjava.net/asenyifei/articles/172869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/asenyifei/comments/commentRss/172869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/asenyifei/services/trackbacks/172869.html</trackback:ping><description><![CDATA[<blockquote>
&nbsp;&nbsp;&nbsp; <span style="color: #999999;">（本系列文章是我学习的过程中，整理出来的笔记，如有错漏，看官请一定不吝回复告知我，让我能认识自己的不足，并改进错误。非常感谢！）<br />
<br />
</span>
&nbsp;&nbsp;&nbsp; XML的全称是Extensible Markup Language，意思是可扩展的标识语言，是SGML（<span style="color: #999999;">Standard Generalized Markup Language</span>）的一个子集。1998年2月，W3C组织发布了XML1.0标准，其目的是为了在Web上能以现有的超文本标识语言（HTML）的使用提供，接收和处理通用的SGML。XML以一种开放的，自我描述的方式定义了数据结构，在描述数据内容的同事能突出对结构的描述，从而体现出数据与数据之间的关系。XML的最新版本是1.1，于2004年2月4日发布。目前大多数的应用还是基于XML1.0的推荐标准。1.0版本的规范在下面网址中定义：<br />
<a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-20040204/">http://www.w3.org/TR/2004/REC-xml-20040204/</a><br />
<br />
&nbsp;&nbsp;&nbsp; XML不是（X）HTML的扩展，两者之所以看起来很像，是因为它们都是SGML发展而来的标识语言，语法很相似，标识的使用也很相似。HTML只是SGML的一个子应用，它的DTD（<span style="color: #999999;">Document Type Definition</span>）被固定下来，所以不能用来定义新的应用。而XML不同，我们可以根据自己的需要，随意定义我们自己的DTD，所以，利用XML，可以定义出新的应用，比如，RDF（<span style="color: #999999;">Resource Description Framework，资源描述框架，blog中经常看见的RSS1.0就是RDF Site Summary，RDF网站摘要,关于RSS，我将在潜心学习RSS中去认识它</span>）,CDF（<span style="color: #999999;">Channel Definition Format，通道定义格式，微软在IE4.0中引入的一个新功能。基于CDF，网站可以通过活动通道将数据聚合到设置为活动桌面的用户桌面上</span>）。<br />
<br />
&nbsp;&nbsp;&nbsp; XML规范的制定者之一Tim Bray说，XML的设计出发点是取SGML的优点，去除复杂的部分，使其保持轻巧，可以在Web上工作。<br />
<br />
&nbsp;&nbsp;&nbsp; XML的应用非常广泛，计算机和网络的世界里，处处活跃着它矫健轻快的身影，或为配置文件，或为数据存储，或为数据传输使用的格式。XML已经成为事实上的数据交换格式的标准，使用XML，意味着所有设备，比如手机，PDA，信息家电等等，都可以轻松的读取，解析你的数据。<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; XML很重要的两个特性：<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">一：XML文档仅仅描述数据，它不关心数据是如何表现外观的，</span>比如字体大小，颜色，间距之类的，所以它能将数据和数据的表现方式完全的分离开，这个特性很重要，HTML就万万做不到这种完全的分离，所以W3C组织不得不推出一个XHTML，作为HTML向XML过度的产物。<br />
<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">二：XML对文档的格式要求非常严格，符合标准的XML文档就是格式良好的XML文档（Well-Formed XML Documents）。</span>这是使得XML文档能被普遍认可的一个特点。严格的文档格式，减轻了解析的复杂性。相对来说，HTML的文档格式就非常松散，解析起来就比较复杂，也造成了浏览器兼容的问题。XML文档格式的要求有下面几点：<br />
&nbsp;&nbsp;&nbsp; 1、所有的标签都必须关闭，开始标签有对应的结束标签，空标签必须被关闭。<br />
&nbsp;&nbsp;&nbsp; 2、所有的标签都区分大小写<br />
&nbsp;&nbsp;&nbsp; 3、所有的标签都必须合理嵌套<br />
&nbsp;&nbsp;&nbsp; 4、所有的标签的属性值必须用收引号（""）或单引号（''）括起来<br />
&nbsp;&nbsp;&nbsp; 5、XML文档有且只能有一个根元素<br />
&nbsp;&nbsp;&nbsp; 6、（还有其他的嘛？）<br />
<br />
本章到此结束，重点掌握XML与HTML的异同点，XML的两个特性。<br />
下一章学习XML的结构。<br />
</blockquote>
<br />
<img src ="http://www.blogjava.net/asenyifei/aggbug/172869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/asenyifei/" target="_blank">Jason.Chen</a> 2008-01-04 23:40 <a href="http://www.blogjava.net/asenyifei/articles/172869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>