﻿<?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-苍穹之铁十字-随笔分类-Xml</title><link>http://www.blogjava.net/kuxiaoku/category/21187.html</link><description>收藏</description><language>zh-cn</language><lastBuildDate>Mon, 02 Apr 2007 00:43:55 GMT</lastBuildDate><pubDate>Mon, 02 Apr 2007 00:43:55 GMT</pubDate><ttl>60</ttl><item><title>关于Schema的名字空间</title><link>http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94801.html</link><dc:creator>苦笑枯</dc:creator><author>苦笑枯</author><pubDate>Thu, 18 Jan 2007 16:11:00 GMT</pubDate><guid>http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94801.html</guid><wfw:comment>http://www.blogjava.net/kuxiaoku/comments/94801.html</wfw:comment><comments>http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kuxiaoku/comments/commentRss/94801.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kuxiaoku/services/trackbacks/94801.html</trackback:ping><description><![CDATA[<p class="MsoNormal">
<span style="font-family: 宋体;">基本的</span>
<span lang="EN-US">XML Schema</span>
<span style="font-family: 宋体;">的使用就是这样，下面我们要介绍</span>
<span lang="EN-US">XML Schema</span>
<span style="font-family: 宋体;">的另外一个核心的部分也是</span>
<span lang="EN-US">Schema</span>
<span style="font-family: 宋体;">最关键的一个部分，就是关于</span>
<span lang="EN-US">Schema</span>
<span style="font-family: 宋体;">的名字空间（</span>
<span lang="EN-US">namespace</span>
<span style="font-family: 宋体;">）的问题。在上面关于</span>
<span lang="EN-US">XML Schema</span>
<span style="font-family: 宋体;">的介绍中，为了把读者集中到对</span>
<span lang="EN-US">XML Schema</span>
<span style="font-family: 宋体;">的语法理解上，特意省略了关于名字空间</span>
<span lang="EN-US">(namespace)</span>
<span style="font-family: 宋体;">的介绍。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　首先我们还是从简单的例子着手，见下面的一段代码：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span class="SpellE">
<span lang="EN-US">xsd:schema</span>
</span>
<span lang="EN-US">
<span class="SpellE">targetNamespace</span>='http://www.SampleStore.com/Account' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　　</span>
<span class="SpellE">
<span lang="EN-US">xmlns:xsd</span>
</span>
<span lang="EN-US">='http://www.w3.org/2000/08/xmlSchema' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　　</span>
<span class="SpellE">
<span lang="EN-US">xmlns:ACC</span>
</span>
<span lang="EN-US">= 'http://www.SampleStore.com/Account'</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span class="SpellE">
<span lang="EN-US">xsd:element</span>
</span>
<span lang="EN-US"> name='</span>
<span style="font-family: 宋体;">订单号码</span>
<span lang="EN-US">' type='<span class="SpellE">xsd:positiveInteger</span>'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span class="SpellE">
<span lang="EN-US">xsd:element</span>
</span>
<span lang="EN-US"> name='</span>
<span style="font-family: 宋体;">商品编号</span>
<span lang="EN-US">' type='ACC:</span>
<span style="font-family: 宋体;">商品编号类型</span>
<span lang="EN-US">'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span class="SpellE">
<span lang="EN-US">xsd:simpleType</span>
</span>
<span lang="EN-US"> name='</span>
<span style="font-family: 宋体;">商品编号类型</span>
<span lang="EN-US">' base='<span class="SpellE">xsd:string</span>'</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span class="SpellE">
<span lang="EN-US">xsd:pattern</span>
</span>
<span lang="EN-US"> ='[A-Z]{1}d{6}'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">!-</span>
<span style="font-family: 宋体;">上面的一行代码表示商品编码的第一个字符应该为字母，后面跟六个阿拉伯数字</span>
<span lang="EN-US"> --</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">/<span class="SpellE">xsd:simpleType</span></span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　现在大家需要把注意力集中到开头几行的代码上来，如下：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span class="SpellE">
<span lang="EN-US">xsd:schema</span>
</span>
<span lang="EN-US">
<span class="SpellE">targetNamespace</span>='http://www.SampleStore.com/Account' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　</span>
<span class="SpellE">
<span lang="EN-US">xmlns:xsd</span>
</span>
<span lang="EN-US">='http://www.w3.org/2000/08/xmlSchema' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　</span>
<span class="SpellE">
<span lang="EN-US">xmlns:ACC</span>
</span>
<span lang="EN-US">= 'http://www.SampleStore.com/Account'</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　实际上，一个给定的</span>
<span lang="EN-US">XML Schema</span>
<span style="font-family: 宋体;">定义了一系列的元素名称，类型名称，属性名称和属性组名称。比如上面的代码中的订单号码、商品编号、商品编号类型等。而这些名称都有它一定的作用范围，类似于</span>
<span lang="EN-US">C++</span>
<span style="font-family: 宋体;">中的局部变量的概念。而它们的作用范围是什么呢？就是在他们的目标名字空间（</span>
<span lang="EN-US">target namespace</span>
<span style="font-family: 宋体;">）中是有效的</span>
<span lang="EN-US">,</span>
<span style="font-family: 宋体;">在上面的代码中，我们可以看到它的目标名字空间为</span>
<span lang="EN-US">http://www.SampleStore.com/Account</span>
<span style="font-family: 宋体;">。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　需要注意的是，目标名字空间的命名必须遵守</span>
<span lang="EN-US">URL</span>
<span style="font-family: 宋体;">的语义。同时需要注意的是，该目标名字空间并不是指一个具体的文件，仅仅是给它一个名字而已。实际上，在</span>
<span lang="EN-US">Schema</span>
<span style="font-family: 宋体;">中的定义和声明也可以引用其他的名字空间，我们可以把这种名字空间取名为源名字空间（</span>
<span lang="EN-US">source namespaces</span>
<span style="font-family: 宋体;">）。每一个</span>
<span lang="EN-US">Schema</span>
<span style="font-family: 宋体;">必须有一个目标名字空间，但是可以有多个源名字空间。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　实际上，在一个给定的</span>
<span lang="EN-US">Schema</span>
<span style="font-family: 宋体;">中，每一个名称都是属于一个特定的名字空间的。名字空间的名称可能会很长（比如</span>
<span lang="EN-US">http://www.SampleStore.com/Account</span>
<span style="font-family: 宋体;">），但是它们可以用在</span>
<span lang="EN-US">XML Schema</span>
<span style="font-family: 宋体;">中的语义</span>
<span class="SpellE">
<span lang="EN-US">xmlns</span>
</span>
<span style="font-family: 宋体;">来进行简化。在上面的例子中，我们用</span>
<span class="SpellE">
<span lang="EN-US">xsd</span>
</span>
<span style="font-family: 宋体;">（取名为</span>
<span class="SpellE">
<span lang="EN-US">xsd</span>
</span>
<span style="font-family: 宋体;">是任意的，比如你可以取名为</span>
<span class="SpellE">
<span lang="EN-US">kkk,tt,ppp,gh</span>
</span>
<span style="font-family: 宋体;">都可以）来表示名字空间</span>
<span lang="EN-US">'http://www.w3.org/2000/08/xmlSchema'</span>
<span style="font-family: 宋体;">，用</span>
<span lang="EN-US">ACC</span>
<span style="font-family: 宋体;">来表示名字空间</span>
<span lang="EN-US">http://www.SampleStore.com/Account</span>
<span style="font-family: 宋体;">。同时我们把</span>
<span lang="EN-US">http://www.w3.org/2000/08/xmlSchema</span>
<span style="font-family: 宋体;">这个名字空间称为标准名字空间（</span>
<span lang="EN-US">standard namespace</span>
<span style="font-family: 宋体;">），因为它是定义</span>
<span lang="EN-US">Schema</span>
<span style="font-family: 宋体;">语法的标准地</span>
</p>
<span style="font-family: 宋体;">在上面的代码中，目标名字空间（</span>
<span class="SpellE">
<span lang="EN-US">targetNamespace</span>
</span>
<span style="font-family: 宋体;">）包含了名字订单号码、商品编号、商品编号类型。而名字</span>
<span class="SpellE">
<span lang="EN-US">schema,element,simpleType,pattern,string</span>
</span>
<span style="font-family: 宋体;">和</span>
<span class="SpellE">
<span lang="EN-US">positiveInteger</span>
</span>
<span style="font-family: 宋体;">是属于标准名字空间</span>
<span lang="EN-US">http://www.w3.org/2000/08/xmlSchema</span>
<span style="font-family: 宋体;">的。也就是说，它们的意义是在</span>
<span lang="EN-US">http://www.w3.org/2000/08/xmlSchema</span>
<span style="font-family: 宋体;">中进行定义的。实际上，所有标准的</span>
<span lang="EN-US">XML <span class="SpellE">Schmea</span></span>
<span style="font-family: 宋体;">语法、语义和数据结构都在</span>
<span lang="EN-US">http://www.w3.org/2000/08/xmlSchema</span>
<span style="font-family: 宋体;">中进行定义。这样解析器碰到一个名称</span>
<span lang="EN-US">(</span>
<span style="font-family: 宋体;">如</span>
<span class="SpellE">
<span lang="EN-US">schema,element</span>
</span>
<span style="font-family: 宋体;">等等</span>
<span lang="EN-US">)</span>
<span style="font-family: 宋体;">的时候，就知道应该在哪里去得到关于它的正确的语义的使用方法。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　对于标准名字空间和目标名字空间，我们不需要指定它的</span>
<span class="SpellE">
<span lang="EN-US">SchemaLocation</span>
</span>
<span style="font-family: 宋体;">。因为对于目标名字空间来讲，</span>
<span class="SpellE">
<span lang="EN-US">SchemaLocation</span>
</span>
<span style="font-family: 宋体;">就是文档自己。对于标准名字空间来讲，它是众所周知的，也不需要指定。而对于源目标空间来讲，就需要指定它的</span>
<span class="SpellE">
<span lang="EN-US">SchemaLocation</span>
</span>
<span style="font-family: 宋体;">。见下面的例子：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">schema <span class="SpellE">targetNamespace</span>='http://www.SampleStore.com/Account' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　</span>
<span class="SpellE">
<span lang="EN-US">xmlns</span>
</span>
<span lang="EN-US">='http://www.w3.org/1999/xmlSchema' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　</span>
<span class="SpellE">
<span lang="EN-US">xmlns:ACC</span>
</span>
<span lang="EN-US">= 'http://www.SampleStore.com/Account' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　</span>
<span class="SpellE">
<span lang="EN-US">xmlns:PART</span>
</span>
<span lang="EN-US">= 'http://<span class="SpellE">www.PartnerStore.com/PartsCatalog</span>'</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">import namespace='http://<span class="SpellE">www.PartnerStore.com/PartsCatalog</span>' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　</span>
<span lang="EN-US">schemaLocation='http://www.ProductStandards.org/repository/alpha.xsd'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">element name='</span>
<span style="font-family: 宋体;">订单号码</span>
<span lang="EN-US">' type='<span class="SpellE">positiveInteger</span>'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">element name='</span>
<span style="font-family: 宋体;">商品编号</span>
<span lang="EN-US">' type='ACC: </span>
<span style="font-family: 宋体;">商品编号类型</span>
<span lang="EN-US">'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span class="SpellE">
<span lang="EN-US">simpleType</span>
</span>
<span lang="EN-US"> name='</span>
<span style="font-family: 宋体;">商品编号类型</span>
<span lang="EN-US">' base='string'</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">pattern ='[A-Z]{1}d{6}'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">/<span class="SpellE">simpleType</span></span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">element name='</span>
<span style="font-family: 宋体;">手表</span>
<span lang="EN-US">' type='PART:</span>
<span style="font-family: 宋体;">手表类型</span>
<span lang="EN-US">'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　在谈关于源目标空间的</span>
<span class="SpellE">
<span lang="EN-US">schemaLocation</span>
</span>
<span style="font-family: 宋体;">之前，我们先看一下这行代码：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US">
<span class="SpellE">xmlns</span>='http://www.w3.org/1999/xmlSchema' <br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　它表示什么呢？它表示在文档中所有的名字前面如果没有前缀的，就是由</span>
<span lang="EN-US">http://www.w3.org/1999/xmlSchema</span>
<span style="font-family: 宋体;">进行定义和解析的。这样无疑是很合理的。因为事实上，我们</span>
<span lang="EN-US">XML Schema</span>
<span style="font-family: 宋体;">中的很多名称</span>
<span lang="EN-US">(</span>
<span style="font-family: 宋体;">比如</span>
<span class="SpellE">
<span lang="EN-US">schema,element,simpleType,pattern</span>
</span>
<span style="font-family: 宋体;">等等</span>
<span lang="EN-US">)</span>
<span style="font-family: 宋体;">都是来自这个标准名字空间的，反复往前面加前缀，你烦不烦呀？所以干脆把它定义成默认的，所以如果一个名称前面没有前缀，就认定它是由</span>
<span lang="EN-US">http://www.w3.org/1999/xmlSchema</span>
<span style="font-family: 宋体;">进行处理的。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　好，接下来我们来注意</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">import namespace='http://<span class="SpellE">www.PartnerStore.com/PartsCatalog</span>' <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　　　　</span>
<span lang="EN-US">schemaLocation='http://www.ProductStandards.org/repository/alpha.xsd'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">这段代码，因为</span>
<span lang="EN-US">http://<span class="SpellE">www.PartnerStore.com/PartsCatalog</span></span>
<span style="font-family: 宋体;">是一个源名字空间，所以必须指定它的</span>
<span class="SpellE">
<span lang="EN-US">schemaLocation</span>
</span>
<span style="font-family: 宋体;">，采用关键字</span>
<span lang="EN-US">import</span>
<span style="font-family: 宋体;">来引入这个</span>
<span class="SpellE">
<span lang="EN-US">schemaLocation</span>
</span>
<span style="font-family: 宋体;">。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　注意到下面这行代码</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　＜</span>
<span lang="EN-US">element name='</span>
<span style="font-family: 宋体;">手表</span>
<span lang="EN-US">' type='PART:</span>
<span style="font-family: 宋体;">手表类型</span>
<span lang="EN-US">'/</span>
<span style="font-family: 宋体;">＞</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　它表示元素手表的类型（</span>
<span lang="EN-US">type</span>
<span style="font-family: 宋体;">）手表类型是在</span>
<span lang="EN-US">http://<span class="SpellE">www.PartnerStore.com/PartsCatalog</span></span>
<span style="font-family: 宋体;">中进行定义的。解析器如果要寻找关于手表类型的定义，需要在名字空间</span>
<span lang="EN-US">http://<span class="SpellE">www.PartnerStore.com/PartsCatalog</span></span>
<span style="font-family: 宋体;">下进行寻找。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　到此为止，你应该对名字空间有了一个比较感性的理解。</span> <img src ="http://www.blogjava.net/kuxiaoku/aggbug/94801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kuxiaoku/" target="_blank">苦笑枯</a> 2007-01-19 00:11 <a href="http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML 名字空间</title><link>http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94802.html</link><dc:creator>苦笑枯</dc:creator><author>苦笑枯</author><pubDate>Thu, 18 Jan 2007 16:11:00 GMT</pubDate><guid>http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94802.html</guid><wfw:comment>http://www.blogjava.net/kuxiaoku/comments/94802.html</wfw:comment><comments>http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kuxiaoku/comments/commentRss/94802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kuxiaoku/services/trackbacks/94802.html</trackback:ping><description><![CDATA[		<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">名字空间提供了一种避免元素<span class="GramE">名冲突</span>的方法。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> b&gt;</span>
<span style="font-family: 宋体;">名字冲突</span>
<span lang="EN-US">
<br>&nbsp;<span class="GramE">&nbsp;</span> &nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">由于</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">中的元素<span class="GramE">名不是</span>固定的，因此当两个不同的文档使用同样的名字描述两个不同类型的元素时就会发生<span class="GramE">名冲突</span>。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">下面这个</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">文档在一个表格中携带了信息</span>
<span lang="EN-US">: <br>&nbsp;&nbsp; <span>&nbsp;</span></span>
<span style="font-family: 宋体;">　</span>
<span lang="EN-US"> &lt; table&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">tr</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; td&gt;Apples&lt; /td&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; td&gt;Bananas&lt; /td&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /<span class="SpellE">tr</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /table&gt; <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">下面这个</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">文档携带了关于一个表格的信息</span>
<span lang="EN-US"> (</span>
<span style="font-family: 宋体;">关于一件家具的信息</span>
<span lang="EN-US">): <br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; table&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; name&gt;African Coffee Table&lt; /name&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; width&gt;80&lt; /width&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; length&gt;120&lt; /length&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /table&gt; <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">如果这两个</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">文档被加在一起，就会发生一个元素<span class="GramE">名冲突</span>，因为这两个文档都包含了一个</span>
<span lang="EN-US">&lt; table&gt;</span>
<span style="font-family: 宋体;">元素，而这两个元素的内容和定义都不同。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> b&gt;</span>
<span style="font-family: 宋体;">用一个前缀解决<span class="GramE">名冲突</span></span>
<span lang="EN-US">
<br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">下面这个</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">文档在一个表格中携带了信息：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:table</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:tr</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:td</span>&gt;Apples&lt; /<span class="SpellE">h:td</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:td</span>&gt;Bananas&lt; /<span class="SpellE">h:td</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /<span class="SpellE">h:tr</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /<span class="SpellE">h:table</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">而这个</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">文档则携带了一件家具的信息：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:table</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:name</span>&gt;African Coffee Table&lt; /<span class="SpellE">f:name</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:width</span>&gt;80&lt; /<span class="SpellE">f:width</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:length</span>&gt;120&lt; /<span class="SpellE">f:length</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /<span class="SpellE">f:table</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">现在就没有元素<span class="GramE">名冲突</span>的问题了，因为两个文档分别给他们的</span>
<span lang="EN-US">&lt; table&gt;</span>
<span style="font-family: 宋体;">元素使用了不同的名字：</span>
<span lang="EN-US">(&lt; <span class="SpellE">h:table</span>&gt; </span>
<span style="font-family: 宋体;">和</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:table</span>&gt;)</span>
<span style="font-family: 宋体;">。</span>
<span style="font-family: 宋体;">通过使用一个前缀，我们创建了两个不同类型的</span>
<span lang="EN-US">&lt; table&gt; </span>
<span style="font-family: 宋体;">元素。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;<span>&nbsp; </span><br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> b&gt;</span>
<span style="font-family: 宋体;">使用名字空间</span>
<span lang="EN-US">
<br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">下面这个</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">文档在一个表格中携带了信息</span>
<span style="font-family: 宋体;">：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:table</span><span class="SpellE">xmlns:h</span>="http://www.w3.org/TR/html4/"&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:tr</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:td</span>&gt;Apples&lt; /<span class="SpellE">h:td</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">h:td</span>&gt;Bananas&lt; /<span class="SpellE">h:td</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /<span class="SpellE">h:tr</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /<span class="SpellE">h:table</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">这个</span>
<span lang="EN-US">XML</span>
<span style="font-family: 宋体;">文档携带了一件家具的信息</span>
<span lang="EN-US">: <br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:table</span><span class="SpellE">xmlns:f</span>="http://www.w3schools.com/furniture"&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:name</span>&gt;African Coffee Table&lt; /<span class="SpellE">f:name</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:width</span>&gt;80&lt; /<span class="SpellE">f:width</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; <span class="SpellE">f:length</span>&gt;120&lt; /<span class="SpellE">f:length</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> &lt; /<span class="SpellE">f:table</span>&gt; <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">在这里不是只使用前缀，在</span>
<span lang="EN-US">&lt; table&gt;</span>
<span style="font-family: 宋体;">标记上还增加了一个</span>
<span lang="EN-US">
<span class="SpellE">xmlns</span>
</span>
<span style="font-family: 宋体;">属性，这样就给元素前缀一个与名字空间相联系的有资格的名字。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> b&gt;</span>
<span style="font-family: 宋体;">名字空间属性</span>
<span lang="EN-US">
<br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">名字空间属性放在一个元素的起始标记中，它的语法如下</span>
<span lang="EN-US">: <br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US">
<span class="SpellE">xmlns:namespace</span>-prefix="namespace" <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">在上面的例子中，名字空间本身是用一个</span>
<span lang="EN-US">Internet </span>
<span style="font-family: 宋体;">地址定义的：</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US">
<span class="SpellE">xmlns:f</span>="http://www.w3schools.com/furniture"&gt; <br>&nbsp;<span class="GramE">&nbsp;</span><br>&nbsp;<span class="GramE">&nbsp;</span></span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> W3C</span>
<span style="font-family: 宋体;">名字空间规范规定名字空间本身应该是一个统一资源识别号</span>
<span lang="EN-US"> (URI)</span>
<span style="font-family: 宋体;">。当一个名字空间在一个元素的起始标记中被定义时，所有<span class="GramE">有</span>相同前缀的子元素都与同样的名字空间相关。</span>
<span style="font-family: 宋体;">注意：分解器并不使用用来识别名字空间的地址去查找信息。这个地址唯一的目的就是给名字空间一个唯一的名字。但是，公司经常将名空间作为包含名空间信息的实际</span>
<span lang="EN-US">Web</span>
<span style="font-family: 宋体;">页面的一个指针。访问</span>
<span lang="EN-US">http://www.w3.org/TR/html4/</span>
<span style="font-family: 宋体;">试一试。</span>
<span lang="EN-US">
<br>&nbsp;&nbsp;&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span lang="EN-US"> b&gt;</span>
<span style="font-family: 宋体;">统一资源识别号</span>
<span lang="EN-US">
<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;</span>
<span style="font-family: 宋体;">　　</span>
<span style="font-family: 宋体;">一个统一资源识别号</span>
<span lang="EN-US">(URI)</span>
<span style="font-family: 宋体;">是识别一个</span>
<span lang="EN-US">Internet</span>
<span style="font-family: 宋体;">资源的字符串。通常</span>
<span lang="EN-US">URI</span>
<span style="font-family: 宋体;">就是识别一个</span>
<span lang="EN-US">Internet</span>
<span style="font-family: 宋体;">域地址的</span>
<span lang="EN-US">URL</span>
<span style="font-family: 宋体;">。另外，有少数一些类型的</span>
<span lang="EN-US">URI </span>
<span style="font-family: 宋体;">是通用资源名</span>
<span lang="EN-US">(URN)</span>
<span style="font-family: 宋体;">。在我们的例子中只使用</span>
<span lang="EN-US">URL</span>
<span style="font-family: 宋体;">。由于我们这个家具的例子中使用一个</span>
<span lang="EN-US">Internet</span>
<span style="font-family: 宋体;">地址去识别其名字空间，我们可以肯定我们的名字空间是唯一的。</span> <img src ="http://www.blogjava.net/kuxiaoku/aggbug/94802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kuxiaoku/" target="_blank">苦笑枯</a> 2007-01-19 00:11 <a href="http://www.blogjava.net/kuxiaoku/archive/2007/01/19/94802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>