<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/feedsky8.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/Openyourthoughts" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/Openyourthoughts" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 10 Oct 2008 09:41:10 GMT</lastBuildDate><title>Open your thoughts</title><description>On the Java road following James Gosling</description><image><url>http://www.feedsky.com/feed/Openyourthoughts/sc/gif</url><title>Open your thoughts</title><link>http://blog.baturu.com</link></image><link>http://blog.baturu.com</link><language>zh-cn</language><pubDate>Fri, 10 Oct 2008 09:41:10 GMT</pubDate><item><title>VirtualBox安装OpenSolaris</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/122611911/5112837/1/item.html</link><content:encoded>&lt;p&gt;VirtualBox 是SUN收购来的一个虚拟化软件，就我个人感觉而言，小巧精悍，资源占用比vmware小。&lt;/p&gt;
&lt;p&gt;废话少说，其实安装VirtualBox没什么好说的了，但是在VirtualBox安装OpenSolaris和增强功能后却会出现问题，由于某些配置发生变动，导致难以启动界面，提示信息如下：&lt;/p&gt;
&lt;p&gt;&amp;#8230;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Requesting System Maintenance Mode&lt;br /&gt;
(see /lib/svc/share/README for more information.)&lt;br /&gt;
Console login service(s) cannot run&lt;/p&gt;
&lt;p&gt;Root password for system maintenance (control-d to bypass):&lt;/p&gt;
&lt;p&gt;当系统意外退出或者升级不当，也会发生这种情况。&lt;/p&gt;
&lt;p&gt;解决方法：&lt;/p&gt;
&lt;p&gt;输入root密码，然后输入如下命令：svcadm clear boot-archive&lt;/p&gt;
&lt;h3&gt;随机日志&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 07月 13日, 星期日 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/13/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-security-policy-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Security Policy API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Security Policy API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 06月 29日, 星期日 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/06/29/uddi-%e8%a7%84%e8%8c%83-v302.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Inquiry API Set(2)&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Inquiry API Set(2) (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2007年, 05月 15日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2007/05/15/the-open-closed-principle-%e2%80%94-%e8%af%bb%e3%80%8ahead-first-design-patterns%e3%80%8b.html&quot; title=&quot;The Open-Closed Principle — 读《Head first Design Patterns》&quot;&gt;The Open-Closed Principle — 读《Head first Design Patterns》 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2006年, 05月 12日, 星期五 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2006/05/12/%e5%b7%a7%e5%a6%99%e8%a3%85%e8%bd%bd%e4%bd%a0%e7%9a%84properties.html&quot; title=&quot;巧妙装载你的properties&quot;&gt;巧妙装载你的properties (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 03月 26日, 星期三 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/03/26/%e5%ad%a6%e4%b9%a0-sql-server-%e6%96%87%e6%a1%a3%ef%bc%88%e4%b8%80%ef%bc%89.html&quot; title=&quot;学习 SQL Server 文档（一） 数据库设计的大体步骤&quot;&gt;学习 SQL Server 文档（一） 数据库设计的大体步骤 (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/10/10/virtualbox-opensolaris-installation.html/feed</wfw:commentRss><description>&lt;p&gt;VirtualBox 是SUN收购来的一个虚拟化软件，就我个人感觉而言，小巧精悍，资源占用比vmware小。&lt;/p&gt;
&lt;p&gt;废话少说，其实安装VirtualBox没什么好说的了，但是在VirtualBox安装OpenSolaris和增强功能后却会出现问题，由于某些配置发生变动，导致难以启动界面，提示信息如下：&lt;/p&gt;
&lt;p&gt;&amp;#8230;&amp;#8230;&lt;/p&gt;
&lt;p&gt;Requesting System Maintenance Mode&lt;br /&gt;
(see /lib/svc/share/README for more information.)&lt;br /&gt;
Console login service(s) cannot run&lt;/p&gt;
&lt;p&gt;Root password for system maintenance (control-d to bypass):&lt;/p&gt;
&lt;p&gt;当系统意外退出或者升级不当，也会发生这种情况。&lt;/p&gt;
&lt;p&gt;解决方法：&lt;/p&gt;
&lt;p&gt;输入root密码，然后输入如下命令：svcadm clear boot-archive&lt;/p&gt;
随机日志2008年, 03月 22日, 星期六 -- 你看过Steve Jobs秀舞吗？ (0)2008年, 06月 16日, 星期一 -- UDDI 规范 v3.0.2 - UDDI Registry 数据结构 之 bindingTemplate (0)2008年, 08月 2日, 星期六 -- Mac  上的免费编辑器 (0)2007年, 08月 27日, 星期一 -- HttpClient以jdbc realm方式的系统集成 (0)2008年, 06月 19日, 星期四 -- UDDI 规范 v3.0.2 - UDDI Registry 数据结构 之 operationalInfo (0)</description><category>solaris</category><category>操作系统</category><category>virtualbox</category><pubDate>Fri, 10 Oct 2008 17:41:10 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/10/10/virtualbox-opensolaris-installation.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=195</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/10/10/virtualbox-opensolaris-installation.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/122611911/5112837</fs:itemid></item><item><title>关于 HTTP 协议的一些常识</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697605/5112837/1/item.html</link><content:encoded>&lt;p&gt;响应代码的含义：&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;100-199表示消息中包含一个临时的信息响应&lt;br /&gt;
200-299表示请求成功&lt;br /&gt;
300-399表示请求需要被重定向到另一个资源&lt;br /&gt;
400－499表示客户端发生了一个不应该重复的错误&lt;br /&gt;
500-599表示服务器端遇到了一个错误，但是客户端稍后可以得到一个更好的响应（或者通过某个其他服务器）&lt;/p&gt;
&lt;p&gt;响应头 &amp;#8216;Content-Length&amp;#8217; 的由来:&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;早期的HTTP，包括大多数的HTTP/1.0实现，使用了底层的传输协议作为表示响应消息结束的方法。一个服务器通过关闭TCP连接来表明响应消息的结束。不幸的是，这导致了在协议中出现了一个严重的故障状况：一个客户端没有办法区分一个完成的响应和一个因为某种网络故障而被截断的响应。为了解决这个问题，Content-Length头信息字段在HTTP/1.0中被重新定义了，以表示消息体的字节长度（只要能够预先知道它的长度），并且还将“chunked”（分块）转移编码引入到了HTTP/1.1中。&lt;/p&gt;
&lt;h3&gt;随机日志&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2007年, 05月 8日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2007/05/08/has-a-is-better-than-is-a-%e2%80%94-%e8%af%bb%e3%80%8ahead-first-design-patterns%e3%80%8b.html&quot; title=&quot;HAS-A is better than IS-A — 读《Head first Design Patterns》&quot;&gt;HAS-A is better than IS-A — 读《Head first Design Patterns》 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 03月 24日, 星期一 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/03/24/%e8%ae%a9-safari-31-%e5%bc%ba%e5%88%b6%e4%bd%bf%e7%94%a8%e5%90%8c%e4%b8%80%e7%aa%97%e5%8f%a3.html&quot; title=&quot;让 safari 3.1 强制使用同一窗口&quot;&gt;让 safari 3.1 强制使用同一窗口 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2007年, 03月 27日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2007/03/27/%e5%85%b3%e4%ba%8eurl-writting%e7%9a%84%e9%97%ae%e9%a2%98.html&quot; title=&quot;关于URL writting的问题&quot;&gt;关于URL writting的问题 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2007年, 04月 24日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2007/04/24/%e5%85%b3%e4%ba%8ejava%e6%a0%88%e4%b8%8e%e5%a0%86%e7%9a%84%e6%80%9d%e8%80%83-%e4%bd%9c%e8%80%85%ef%bc%9azdmilan-%e6%9d%a5%e8%87%aa%ef%bc%9acsdn.html&quot; title=&quot;关于Java栈与堆的思考&lt;img src=&quot;http://blog.baturu.com/wp-content/emotions/%CB%BC%BF%BC.gif&quot; alt=&quot;思考&quot; /&gt; - 作者：zdmilan 来自：CSDN&quot;&gt;关于Java栈与堆的思考&lt;img src=&quot;http://blog.baturu.com/wp-content/emotions/%CB%BC%BF%BC.gif&quot; alt=&quot;思考&quot; /&gt; - 作者：zdmilan 来自：CSDN (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 06月 4日, 星期三 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/06/04/java%e4%b8%ad%e7%b1%bb%e7%9a%84%e5%88%9d%e5%a7%8b%e5%8c%96%e5%92%8c%e5%85%b6%e5%8e%9f%e5%9b%a0.html&quot; title=&quot;Java中类的初始化和其原因&quot;&gt;Java中类的初始化和其原因 (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/09/26/a-little-http-protocol-knowledge.html/feed</wfw:commentRss><description>&lt;p&gt;响应代码的含义：&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;100-199表示消息中包含一个临时的信息响应&lt;br /&gt;
200-299表示请求成功&lt;br /&gt;
300-399表示请求需要被重定向到另一个资源&lt;br /&gt;
400－499表示客户端发生了一个不应该重复的错误&lt;br /&gt;
500-599表示服务器端遇到了一个错误，但是客户端稍后可以得到一个更好的响应（或者通过某个其他服务器）&lt;/p&gt;
&lt;p&gt;响应头 &amp;#8216;Content-Length&amp;#8217; 的由来:&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;早期的HTTP，包括大多数的HTTP/1.0实现，使用了底层的传输协议作为表示响应消息结束的方法。一个服务器通过关闭TCP连接来表明响应消息的结束。不幸的是，这导致了在协议中出现了一个严重的故障状况：一个客户端没有办法区分一个完成的响应和一个因为某种网络故障而被截断的响应。为了解决这个问题，Content-Length头信息字段在HTTP/1.0中被重新定义了，以表示消息体的字节长度（只要能够预先知道它的长度），并且还将“chunked”（分块）转移编码引入到了HTTP/1.1中。&lt;/p&gt;
随机日志2008年, 05月 26日, 星期一 -- Technical Note: Providing A Value Set For Use In UDDI Version 3 (0)2008年, 04月 15日, 星期二 -- Axis2的发布注意事项 (0)2008年, 03月 21日, 星期五 -- IIS6.0建立多个网站发生错乱的问题 (0)2008年, 05月 25日, 星期日 -- 制作了一个wordpress的收藏插件 (0)2008年, 06月 29日, 星期日 -- UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Publication API Set(1) (0)</description><category>HTTP</category><category>Java</category><pubDate>Fri, 26 Sep 2008 17:33:31 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/09/26/a-little-http-protocol-knowledge.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=194</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/09/26/a-little-http-protocol-knowledge.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697605/5112837</fs:itemid></item><item><title>阅读 Java API 的一些笔记</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697606/5112837/1/item.html</link><content:encoded>&lt;p&gt;一. List使用事项：&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;1.Object[] toArray()和&amp;lt;T&amp;gt; T[] toArray(T[] a)返回的是一个新的数组，而不是List实现内部所使用的&lt;br /&gt;
2.List&amp;lt;E&amp;gt; subList(int fromIndex, int toIndex)返回列表的部分视图，因此对这个视图的更改都将直接反映到原列表&lt;/p&gt;
&lt;p&gt;二. LinkedIterator类:&lt;/p&gt;
&lt;p&gt;支持前、后遍历&lt;/p&gt;
&lt;p&gt;三. Arrays类:&lt;/p&gt;
&lt;p&gt;包含用来操作数组（比如排序和搜索）的各种方法，支持排序(sort)，查找(binarySearch)，复制(copyOf &amp;amp; copyOfRange)，填充(fill)&lt;/p&gt;
&lt;p&gt;四. Collections类:&lt;/p&gt;
&lt;p&gt;用于操作 collection，可以对List进行排序(sort)，查找(binarySearch)，翻转(reverse)，填充(fill)，复制(copy)，最大、小值(min,max)，替换(replaceAll)，定位子列表(indexOfSubList &amp;amp; lastIndexOfSubList)，不可修改集合(unmodifiableCollection, unmodifiableSet, unmodifiableSortedSet, unmodifiableList, unmodifiableMap, unmodifiableSortedMap)，同步集合(synchronizedCollection, synchronizedSet, synchronizedSortedSet, synchronizedList, synchronizedMap, synchronizedSortedMap)，类型安全集合(checkedCollection, checkedSet, checkedSortedSet, checkedList, checkedMap, checkedSortedMap)，其中：&lt;br /&gt;
1.对获得的synchronizedXxx的iterator和listIterator必须自己进行同步，因为该实现对这个方法没有进行synchronized&lt;br /&gt;
2.checkedXxx所得到的集合可以确保无论何时，放入该集合中的对象都是类型安全的&lt;br /&gt;
3.可以提供不可修改的空list、map和set&lt;br /&gt;
static List EMPTY_LIST&lt;br /&gt;
空的列表（不可变的）。&lt;br /&gt;
static Map EMPTY_MAP&lt;br /&gt;
空的映射（不可变的）。&lt;br /&gt;
static Set EMPTY_SET&lt;br /&gt;
空的 set（不可变的）。&lt;br /&gt;
也可以通过emptySet()、emptyList()和emptyMap()来获得&lt;br /&gt;
4.public static &amp;lt;T&amp;gt; Set&amp;lt;T&amp;gt; singleton(T o)&lt;br /&gt;
返回一个只包含指定对象的不可变 set。&lt;br /&gt;
5.public static &amp;lt;T&amp;gt; List&amp;lt;T&amp;gt; singletonList(T o)&lt;br /&gt;
返回一个只包含指定对象的不可变列表。&lt;br /&gt;
6.public static &amp;lt;K,V&amp;gt; Map&amp;lt;K,V&amp;gt; singletonMap(K key, V value)&lt;br /&gt;
返回一个不可变的映射，它只将指定键映射到指定值。&lt;/p&gt;
&lt;p&gt;五. HashSet 和 TreeSet 类:&lt;/p&gt;
&lt;p&gt;HashSet 和 TreeSet 的底层使用Map结构(分别是HashMap和TreeMap)存储，放入到set中的对象作为map的key，而对应的值则是一个dummy的object&lt;/p&gt;
&lt;h3&gt;您可能会对以下内容感兴趣&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 07月 15日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/15/%e5%a6%82%e4%bd%95%e7%bb%99eclipse%e4%b8%ad%e7%9a%84%e6%9f%90%e4%b8%aajar%e6%b7%bb%e5%8a%a0%e6%ba%90%e4%bb%a3%e7%a0%81%ef%bc%9f.html&quot; title=&quot;如何给Eclipse中的某个Jar添加源代码？&quot;&gt;如何给Eclipse中的某个Jar添加源代码？ (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 06月 5日, 星期四 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/06/05/%e4%bd%bf%e7%94%a8-jrockit-%e5%90%af%e5%8a%a8-eclipse.html&quot; title=&quot;使用 jrockit 启动 Eclipse&quot;&gt;使用 jrockit 启动 Eclipse (2)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 06月 4日, 星期三 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/06/04/java%e4%b8%ad%e7%b1%bb%e7%9a%84%e5%88%9d%e5%a7%8b%e5%8c%96%e5%92%8c%e5%85%b6%e5%8e%9f%e5%9b%a0.html&quot; title=&quot;Java中类的初始化和其原因&quot;&gt;Java中类的初始化和其原因 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 05月 22日, 星期四 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/05/22/ant-zip-task-%e4%b9%8b%e6%80%aa%e7%8e%b0%e8%b1%a1.html&quot; title=&quot;ant zip task 之怪现象&quot;&gt;ant zip task 之怪现象 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 05月 8日, 星期四 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/05/08/hibernate%e4%b8%ad%e7%9a%84%e6%97%b6%e9%97%b4%e7%b1%bb%e5%9e%8b%e6%98%a0%e5%b0%84.html&quot; title=&quot;Hibernate中的时间类型映射 和 Oracle bug 6362104&quot;&gt;Hibernate中的时间类型映射 和 Oracle bug 6362104 (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/09/26/notes-for-java-api.html/feed</wfw:commentRss><description>&lt;p&gt;一. List使用事项：&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;1.Object[] toArray()和&amp;lt;T&amp;gt; T[] toArray(T[] a)返回的是一个新的数组，而不是List实现内部所使用的&lt;br /&gt;
2.List&amp;lt;E&amp;gt; subList(int fromIndex, int toIndex)返回列表的部分视图，因此对这个视图的更改都将直接反映到原列表&lt;/p&gt;
&lt;p&gt;二. LinkedIterator类:&lt;/p&gt;
&lt;p&gt;支持前、后遍历&lt;/p&gt;
&lt;p&gt;三. Arrays类:&lt;/p&gt;
&lt;p&gt;包含用来操作数组（比如排序和搜索）的各种方法，支持排序(sort)，查找(binarySearch)，复制(copyOf &amp;amp; copyOfRange)，填充(fill)&lt;/p&gt;
&lt;p&gt;四. Collections类:&lt;/p&gt;
&lt;p&gt;用于操作 collection，可以对List进行排序(sort)，查找(binarySearch)，翻转(reverse)，填充(fill)，复制(copy)，最大、小值(min,max)，替换(replaceAll)，定位子列表(indexOfSubList &amp;amp; lastIndexOfSubList)，不可修改集合(unmodifiableCollection, unmodifiableSet, unmodifiableSortedSet, unmodifiableList, unmodifiableMap, unmodifiableSortedMap)，同步集合(synchronizedCollection, synchronizedSet, synchronizedSortedSet, synchronizedList, synchronizedMap, synchronizedSortedMap)，类型安全集合(checkedCollection, checkedSet, checkedSortedSet, checkedList, checkedMap, checkedSortedMap)，其中：&lt;br /&gt;
1.对获得的synchronizedXxx的iterator和listIterator必须自己进行同步，因为该实现对这个方法没有进行synchronized&lt;br /&gt;
2.checkedXxx所得到的集合可以确保无论何时，放入该集合中的对象都是类型安全的&lt;br /&gt;
3.可以提供不可修改的空list、map和set&lt;br /&gt;
static List EMPTY_LIST&lt;br /&gt;
空的列表（不可变的）。&lt;br /&gt;
static Map EMPTY_MAP&lt;br /&gt;
空的映射（不可变的）。&lt;br /&gt;
static Set EMPTY_SET&lt;br /&gt;
空的 set（不可变的）。&lt;br /&gt;
也可以通过emptySet()、emptyList()和emptyMap()来获得&lt;br /&gt;
4.public static &amp;lt;T&amp;gt; Set&amp;lt;T&amp;gt; singleton(T o)&lt;br /&gt;
返回一个只包含指定对象的不可变 set。&lt;br /&gt;
5.public static &amp;lt;T&amp;gt; List&amp;lt;T&amp;gt; singletonList(T o)&lt;br /&gt;
返回一个只包含指定对象的不可变列表。&lt;br /&gt;
6.public static &amp;lt;K,V&amp;gt; Map&amp;lt;K,V&amp;gt; singletonMap(K key, V value)&lt;br /&gt;
返回一个不可变的映射，它只将指定键映射到指定值。&lt;/p&gt;
&lt;p&gt;五. HashSet 和 TreeSet 类:&lt;/p&gt;
&lt;p&gt;HashSet 和 TreeSet 的底层使用Map结构(分别是HashMap和TreeMap)存储，放入到set中的对象作为map的key，而对应的值则是一个dummy的object&lt;/p&gt;
您可能会对以下内容感兴趣2008年, 07月 15日, 星期二 -- 如何给Eclipse中的某个Jar添加源代码？ (0)2008年, 06月 5日, 星期四 -- 使用 jrockit 启动 Eclipse (2)2008年, 06月 4日, 星期三 -- Java中类的初始化和其原因 (0)2008年, 05月 22日, 星期四 -- ant zip task 之怪现象 (0)2008年, 05月 8日, 星期四 -- Hibernate中的时间类型映射 和 Oracle bug 6362104 (0)</description><category>Java</category><pubDate>Fri, 26 Sep 2008 17:28:42 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/09/26/notes-for-java-api.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=193</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/09/26/notes-for-java-api.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697606/5112837</fs:itemid></item><item><title>更改windows下VIM的背景色</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697607/5112837/1/item.html</link><content:encoded>&lt;p&gt;在安装目录下新建一个文件_vimrc，里面加上一行：&lt;/p&gt;
&lt;p&gt;color  elflord&lt;/p&gt;
&lt;h3&gt;随机日志&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 07月 29日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/29/whats-new-in-wsdl-20.html&quot; title=&quot;What&amp;#8217;s New in WSDL 2.0&quot;&gt;What&amp;#8217;s New in WSDL 2.0 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 06月 1日, 星期日 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/06/01/uddi-v3-tmodel%e7%9a%84%e5%87%a0%e4%b8%aa%e7%94%a8%e9%80%94.html&quot; title=&quot;UDDI V3 - tModel的几个用途&quot;&gt;UDDI V3 - tModel的几个用途 (1)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 15日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/15/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-value-set-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 05月 12日, 星期一 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/05/12/ibm-developerworks%e3%80%8a%e7%90%86%e8%a7%a3uddi%e3%80%8b%e4%b8%ad%e7%9a%84%e7%9f%a5%e8%af%86%e8%a6%81%e7%82%b9.html&quot; title=&quot;IBM developerWorks《理解UDDI》中的知识要点&quot;&gt;IBM developerWorks《理解UDDI》中的知识要点 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 04月 26日, 星期六 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/04/26/wsdl-11-%e8%a7%84%e8%8c%83-messages-%e4%bb%8b%e7%bb%8d.html&quot; title=&quot;WSDL 1.1 规范 - Messages 介绍&quot;&gt;WSDL 1.1 规范 - Messages 介绍 (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/09/08/%e6%9b%b4%e6%94%b9windows%e4%b8%8bvim%e7%9a%84%e8%83%8c%e6%99%af%e8%89%b2.html/feed</wfw:commentRss><description>&lt;p&gt;在安装目录下新建一个文件_vimrc，里面加上一行：&lt;/p&gt;
&lt;p&gt;color  elflord&lt;/p&gt;
随机日志2007年, 10月 24日, 星期三 -- 英文版《八荣八耻》 (0)2008年, 06月 15日, 星期日 -- UDDI 规范 v3.0.2 - UDDI Registry 数据结构 businessService (0)2008年, 06月 29日, 星期日 -- UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Inquiry API Set(2) (0)2008年, 04月 26日, 星期六 -- WSDL 1.1 规范 - Types 介绍 (0)2008年, 03月 26日, 星期三 -- 学习 SQL Server 文档（四） [...]</description><category>操作系统</category><category>VIM</category><pubDate>Mon, 08 Sep 2008 16:48:55 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/09/08/%e6%9b%b4%e6%94%b9windows%e4%b8%8bvim%e7%9a%84%e8%83%8c%e6%99%af%e8%89%b2.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=192</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/09/08/%e6%9b%b4%e6%94%b9windows%e4%b8%8bvim%e7%9a%84%e8%83%8c%e6%99%af%e8%89%b2.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697607/5112837</fs:itemid></item><item><title>XML Schema 中 dateTime 类型的解释</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697608/5112837/1/item.html</link><content:encoded>&lt;p&gt;dateTime 类型的形式为：&amp;#8217;-'? yyyy &amp;#8216;-&amp;#8217; mm &amp;#8216;-&amp;#8217; dd &amp;#8216;T&amp;#8217; hh &amp;#8216;:&amp;#8217; mm &amp;#8216;:&amp;#8217; ss (&amp;#8217;.&amp;#8217; s+)? (zzzzzz)?，其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#8216;-&amp;#8217;? yyyy 是一个4位或者更多位数的可使用负号的数字，表示年份；如果多于4位数字，则打头数字不能是0， &amp;#8216;0000&amp;#8242; 也是禁止的；同样需要注意的是+号也不允许使用;&lt;/li&gt;
&lt;li&gt;剩下的 &amp;#8216;-&amp;#8217; 是时间中各部分的分隔符;&lt;/li&gt;
&lt;li&gt;第一个 mm 是一个2位数字，表示月份;&lt;/li&gt;
&lt;li&gt;dd 是一个2位数字，表示日期;&lt;/li&gt;
&lt;li&gt;&amp;#8216;T&amp;#8217; 是一个分隔符，指明后面是日期中的时间;&lt;/li&gt;
&lt;li&gt;hh 是一个2位数字，表示小时；如果分钟和秒是 0，那么使用 &amp;#8216;24&amp;#8242; 是允许的, 这个如此表示的 dateTime 值马上转为下一天的值(the dateTime value so represented is the first instant of the following day);&lt;/li&gt;
&lt;li&gt;&amp;#8216;:&amp;#8217; 是一个时间中各部分的分隔符;&lt;/li&gt;
&lt;li&gt;第二个 mm 是一个2位数的数字，表示分钟数;&lt;/li&gt;
&lt;li&gt;ss 是一个2位整数数字，表示完整的秒数;&lt;/li&gt;
&lt;li&gt;&amp;#8216;.&amp;#8217; s+ (如果有) 表示秒数的小数部分;&lt;/li&gt;
&lt;li&gt;zzzzzz (如果有) 表示时区 (如下面所描述的).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如，2002-10-10T12:00:00-05:00 是 2002-10-10T17:00:00Z，比 2002-10-10T12:00:00Z 晚 5 个小时.&lt;/p&gt;
&lt;p&gt;For further guidance on arithmetic with dateTimes and durations, see &lt;a title=&quot;dateTime&quot; href=&quot;http://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes&quot; target=&quot;_blank&quot;&gt;Adding durations to dateTimes (§E)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于 TimeZone：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;时区中的小时数上限是14，分钟数上限是59，除非小时数是 14，而分钟数必须是 0。&lt;/p&gt;
&lt;p&gt;时区的形式是 ((&amp;#8217;+&amp;#8217; | &amp;#8216;-&amp;#8217;) hh &amp;#8216;:&amp;#8217; mm) | &amp;#8216;Z&amp;#8217;，其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hh 是一个2位数字 (必要情况下打头数字是0)，表示小时数&lt;/li&gt;
&lt;li&gt;mm 是一个2位数字，表示分钟数&lt;/li&gt;
&lt;li&gt;&amp;#8216;+&amp;#8217; 指明是一个正的时间段&lt;/li&gt;
&lt;li&gt;&amp;#8216;-&amp;#8217; 指明是一个负的时间段&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8216;+00:00&amp;#8242;, &amp;#8216;-00:00&amp;#8242;, 和 &amp;#8216;Z&amp;#8217; 都表示相同的 0 时区，即UTC; &amp;#8216;Z&amp;#8217; 是它的规范表现方式.&lt;/p&gt;
&lt;p&gt;当将一个时区加到一个 UTC dateTime 中，结果是该日期和时间“位于这个时区中”。例如，2002-10-10T12:00:00+05:00 是 2002-10-10T07:00:00Z，2002-10-10T00:00:00+05:00 是 2002-10-09T19:00:00Z.&lt;/p&gt;
&lt;h3&gt;您可能会对以下内容感兴趣&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 07月 29日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/29/whats-new-in-wsdl-20.html&quot; title=&quot;What&amp;#8217;s New in WSDL 2.0&quot;&gt;What&amp;#8217;s New in WSDL 2.0 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 22日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/22/xml-schema-%e4%b8%ad-import-%e5%92%8c-include-%e7%9a%84%e5%8c%ba%e5%88%ab.html&quot; title=&quot;XML Schema 中 import 和 include 的区别&quot;&gt;XML Schema 中 import 和 include 的区别 (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/08/18/xml-schema-%e4%b8%ad-datetime-%e7%b1%bb%e5%9e%8b%e7%9a%84%e8%a7%a3%e9%87%8a.html/feed</wfw:commentRss><description>&lt;p&gt;dateTime 类型的形式为：&amp;#8217;-'? yyyy &amp;#8216;-&amp;#8217; mm &amp;#8216;-&amp;#8217; dd &amp;#8216;T&amp;#8217; hh &amp;#8216;:&amp;#8217; mm &amp;#8216;:&amp;#8217; ss (&amp;#8217;.&amp;#8217; s+)? (zzzzzz)?，其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#8216;-&amp;#8217;? yyyy 是一个4位或者更多位数的可使用负号的数字，表示年份；如果多于4位数字，则打头数字不能是0， &amp;#8216;0000&amp;#8242; 也是禁止的；同样需要注意的是+号也不允许使用;&lt;/li&gt;
&lt;li&gt;剩下的 &amp;#8216;-&amp;#8217; 是时间中各部分的分隔符;&lt;/li&gt;
&lt;li&gt;第一个 mm 是一个2位数字，表示月份;&lt;/li&gt;
&lt;li&gt;dd 是一个2位数字，表示日期;&lt;/li&gt;
&lt;li&gt;&amp;#8216;T&amp;#8217; 是一个分隔符，指明后面是日期中的时间;&lt;/li&gt;
&lt;li&gt;hh 是一个2位数字，表示小时；如果分钟和秒是 0，那么使用 &amp;#8216;24&amp;#8242; 是允许的, 这个如此表示的 dateTime 值马上转为下一天的值(the dateTime value so represented is the first instant of the following day);&lt;/li&gt;
&lt;li&gt;&amp;#8216;:&amp;#8217; 是一个时间中各部分的分隔符;&lt;/li&gt;
&lt;li&gt;第二个 mm 是一个2位数的数字，表示分钟数;&lt;/li&gt;
&lt;li&gt;ss 是一个2位整数数字，表示完整的秒数;&lt;/li&gt;
&lt;li&gt;&amp;#8216;.&amp;#8217; s+ (如果有) 表示秒数的小数部分;&lt;/li&gt;
&lt;li&gt;zzzzzz (如果有) 表示时区 (如下面所描述的).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如，2002-10-10T12:00:00-05:00 是 2002-10-10T17:00:00Z，比 2002-10-10T12:00:00Z 晚 5 个小时.&lt;/p&gt;
&lt;p&gt;For further guidance on arithmetic with dateTimes and durations, see &lt;a title=&quot;dateTime&quot; href=&quot;http://www.w3.org/TR/xmlschema-2/#adding-durations-to-dateTimes&quot; target=&quot;_blank&quot;&gt;Adding durations to dateTimes (§E)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于 TimeZone：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;时区中的小时数上限是14，分钟数上限是59，除非小时数是 14，而分钟数必须是 0。&lt;/p&gt;
&lt;p&gt;时区的形式是 ((&amp;#8217;+&amp;#8217; | &amp;#8216;-&amp;#8217;) hh &amp;#8216;:&amp;#8217; mm) | &amp;#8216;Z&amp;#8217;，其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hh 是一个2位数字 (必要情况下打头数字是0)，表示小时数&lt;/li&gt;
&lt;li&gt;mm 是一个2位数字，表示分钟数&lt;/li&gt;
&lt;li&gt;&amp;#8216;+&amp;#8217; 指明是一个正的时间段&lt;/li&gt;
&lt;li&gt;&amp;#8216;-&amp;#8217; 指明是一个负的时间段&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8216;+00:00&amp;#8242;, &amp;#8216;-00:00&amp;#8242;, 和 &amp;#8216;Z&amp;#8217; 都表示相同的 0 时区，即UTC; &amp;#8216;Z&amp;#8217; 是它的规范表现方式.&lt;/p&gt;
&lt;p&gt;当将一个时区加到一个 UTC dateTime 中，结果是该日期和时间“位于这个时区中”。例如，2002-10-10T12:00:00+05:00 是 2002-10-10T07:00:00Z，2002-10-10T00:00:00+05:00 是 2002-10-09T19:00:00Z.&lt;/p&gt;
您可能会对以下内容感兴趣2008年, 07月 29日, 星期二 -- What&amp;#8217;s New in WSDL 2.0 (0)2008年, 07月 22日, 星期二 -- XML Schema 中 import 和 include 的区别 (0)</description><category>WebService和SOA</category><category>XML</category><pubDate>Mon, 18 Aug 2008 16:05:38 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/08/18/xml-schema-%e4%b8%ad-datetime-%e7%b1%bb%e5%9e%8b%e7%9a%84%e8%a7%a3%e9%87%8a.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=191</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/08/18/xml-schema-%e4%b8%ad-datetime-%e7%b1%bb%e5%9e%8b%e7%9a%84%e8%a7%a3%e9%87%8a.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697608/5112837</fs:itemid></item><item><title>Cola: Real-Time Shared Editing</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697609/5112837/1/item.html</link><content:encoded>&lt;p&gt;使用 Eclipse 进行实时共享编辑：&lt;a title=&quot;Cola: Real-Time Shared Editing&quot; href=&quot;http://www.vimeo.com/1195398?pg=embed&amp;amp;sec=1195398&quot; target=&quot;_blank&quot;&gt;http://www.vimeo.com/1195398?pg=embed&amp;amp;sec=1195398&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;100%&quot; height=&quot;500&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;id&quot; value=&quot;vimeo_clip_1195398&quot; /&gt;&lt;param name=&quot;name&quot; value=&quot;vimeo_clip_1195398&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;clip_id=1195398&amp;amp;server=www.vimeo.com&amp;amp;autoplay=0&amp;amp;fullscreen=1&amp;amp;md5=&amp;amp;show_portrait=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;context=&amp;amp;context_id=&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://www.vimeo.com/moogaloop_local.swf?ver=18098&quot; /&gt;&lt;embed id=&quot;vimeo_clip_1195398&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;100%&quot; height=&quot;400&quot; src=&quot;http://www.vimeo.com/moogaloop_local.swf?ver=18098&quot; flashvars=&quot;clip_id=1195398&amp;amp;server=www.vimeo.com&amp;amp;autoplay=0&amp;amp;fullscreen=1&amp;amp;md5=&amp;amp;show_portrait=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;context=&amp;amp;context_id=&quot; bgcolor=&quot;#ffffff&quot; name=&quot;vimeo_clip_1195398&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;h3&gt;您可能会对以下内容感兴趣&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2007年, 10月 25日, 星期四 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2007/10/25/eclipse%e7%9a%84%e5%85%8d%e8%b4%b9uml%e6%8f%92%e4%bb%b6.html&quot; title=&quot;Eclipse的免费UML插件&quot;&gt;Eclipse的免费UML插件 (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/08/12/cola-real-time-shared-editing.html/feed</wfw:commentRss><description>&lt;p&gt;使用 Eclipse 进行实时共享编辑：&lt;a title=&quot;Cola: Real-Time Shared Editing&quot; href=&quot;http://www.vimeo.com/1195398?pg=embed&amp;amp;sec=1195398&quot; target=&quot;_blank&quot;&gt;http://www.vimeo.com/1195398?pg=embed&amp;amp;sec=1195398&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;100%&quot; height=&quot;500&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;id&quot; value=&quot;vimeo_clip_1195398&quot; /&gt;&lt;param name=&quot;name&quot; value=&quot;vimeo_clip_1195398&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;clip_id=1195398&amp;amp;server=www.vimeo.com&amp;amp;autoplay=0&amp;amp;fullscreen=1&amp;amp;md5=&amp;amp;show_portrait=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;context=&amp;amp;context_id=&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://www.vimeo.com/moogaloop_local.swf?ver=18098&quot; /&gt;&lt;embed id=&quot;vimeo_clip_1195398&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;100%&quot; height=&quot;400&quot; src=&quot;http://www.vimeo.com/moogaloop_local.swf?ver=18098&quot; flashvars=&quot;clip_id=1195398&amp;amp;server=www.vimeo.com&amp;amp;autoplay=0&amp;amp;fullscreen=1&amp;amp;md5=&amp;amp;show_portrait=0&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;context=&amp;amp;context_id=&quot; bgcolor=&quot;#ffffff&quot; name=&quot;vimeo_clip_1195398&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
您可能会对以下内容感兴趣2007年, 10月 25日, 星期四 -- Eclipse的免费UML插件 (0)</description><category>Java</category><category>Eclipse</category><pubDate>Tue, 12 Aug 2008 17:40:19 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/08/12/cola-real-time-shared-editing.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=190</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/08/12/cola-real-time-shared-editing.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697609/5112837</fs:itemid></item><item><title>Mac  上的免费编辑器</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697610/5112837/1/item.html</link><content:encoded>&lt;p&gt;看到有那么多人找&lt;a title=&quot;免费Mac编辑器&quot; href=&quot;http://blog.baturu.com/index.php/2008/03/23/好不容易找到的textmate注册码.html&quot; target=&quot;_blank&quot;&gt;taxtmate注册码&lt;/a&gt;，那么我就把我所知道的可以免费使用的编辑器列出来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tex-Edit Plus：这是一款共享软件，但作者允许使用无时间限制的trial版本。这款编辑器做的很小巧，唯一不足的是不支持tab和语法高亮，恐怕程序员们不会喜欢用。&lt;/li&gt;
&lt;li&gt;Smultron：apache licence v2.0，所以可以放心大胆的使用，而且支持语法高亮和tab。&lt;/li&gt;
&lt;li&gt;TextWrangler：免费，BBEdit的一个分支&lt;/li&gt;
&lt;li&gt;Komodo Edit：重量级了，要30几兆&lt;/li&gt;
&lt;li&gt;jEdit：哈哈，Java写的，估计一般人不会喜欢用它&lt;/li&gt;
&lt;li&gt;其它：vim，emacs，xcode，etc&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h3&gt;您可能会对以下内容感兴趣&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 03月 23日, 星期日 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/03/23/%e5%a5%bd%e4%b8%8d%e5%ae%b9%e6%98%93%e6%89%be%e5%88%b0%e7%9a%84textmate%e6%b3%a8%e5%86%8c%e7%a0%81.html&quot; title=&quot;好不容易找到的 Textmate 1.5.5 注册码&quot;&gt;好不容易找到的 Textmate 1.5.5 注册码 (2)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 03月 22日, 星期六 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/03/22/%e7%82%b8%e6%8e%89%e4%bd%a0%e7%9a%84mac-%ef%bc%8d-bullet.html&quot; title=&quot;炸掉你的Mac － bullet&quot;&gt;炸掉你的Mac － bullet (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 03月 22日, 星期六 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/03/22/%e4%bd%a0%e7%9c%8b%e8%bf%87steve-jobs%e7%a7%80%e8%88%9e%e5%90%97%ef%bc%9f.html&quot; title=&quot;你看过Steve Jobs秀舞吗？&quot;&gt;你看过Steve Jobs秀舞吗？ (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 03月 15日, 星期六 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/03/15/mac%e4%b8%8a%e7%9a%84%e8%8b%b1%e6%b1%89%e8%af%8d%e5%85%b8.html&quot; title=&quot;Mac上的英汉词典&quot;&gt;Mac上的英汉词典 (1)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 03月 13日, 星期四 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/03/13/strange-with-my-mac.html&quot; title=&quot;Strange with my Mac&quot;&gt;Strange with my Mac (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/08/02/mac-free-editor.html/feed</wfw:commentRss><description>&lt;p&gt;看到有那么多人找&lt;a title=&quot;免费Mac编辑器&quot; href=&quot;http://blog.baturu.com/index.php/2008/03/23/好不容易找到的textmate注册码.html&quot; target=&quot;_blank&quot;&gt;taxtmate注册码&lt;/a&gt;，那么我就把我所知道的可以免费使用的编辑器列出来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tex-Edit Plus：这是一款共享软件，但作者允许使用无时间限制的trial版本。这款编辑器做的很小巧，唯一不足的是不支持tab和语法高亮，恐怕程序员们不会喜欢用。&lt;/li&gt;
&lt;li&gt;Smultron：apache licence v2.0，所以可以放心大胆的使用，而且支持语法高亮和tab。&lt;/li&gt;
&lt;li&gt;TextWrangler：免费，BBEdit的一个分支&lt;/li&gt;
&lt;li&gt;Komodo Edit：重量级了，要30几兆&lt;/li&gt;
&lt;li&gt;jEdit：哈哈，Java写的，估计一般人不会喜欢用它&lt;/li&gt;
&lt;li&gt;其它：vim，emacs，xcode，etc&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;/div&gt;
您可能会对以下内容感兴趣2008年, 03月 23日, 星期日 -- 好不容易找到的 Textmate 1.5.5 注册码 (2)2008年, 03月 22日, 星期六 -- 炸掉你的Mac － bullet (0)2008年, 03月 22日, 星期六 -- 你看过Steve Jobs秀舞吗？ (0)2008年, 03月 15日, 星期六 -- Mac上的英汉词典 (1)2008年, 03月 13日, 星期四 -- Strange with my Mac (0)</description><category>操作系统</category><category>mac</category><category>OperationSystem</category><pubDate>Sat, 02 Aug 2008 11:38:55 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/08/02/mac-free-editor.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=189</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/08/02/mac-free-editor.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697610/5112837</fs:itemid></item><item><title>What’s New in WSDL 2.0</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697611/5112837/1/item.html</link><content:encoded>&lt;p&gt;原文：&lt;a title=&quot;英文原文&quot; href=&quot;http://www.xml.com/pub/a/ws/2004/05/19/wsdl2.html?page=1&quot; target=&quot;_blank&quot;&gt;http://www.xml.com/pub/a/ws/2004/05/19/wsdl2.html?page=1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;secondary&quot;&gt;by &lt;a href=&quot;http://www.xml.com/pub/au/233&quot;&gt;Arulazi Dhesiaseelan&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;secondary&quot;&gt;May 20, 2004&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- mega preparse mp: --&gt;&lt;!-- XML MPU Ad --&gt;&lt;/p&gt;
&lt;div style=&quot;float: right; padding-left: 15px;&quot;&gt;&lt;script src=&quot;http://ocp.com.com/ad.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;script type=&quot;text/JavaScript&quot;&gt;&lt;!--
      var CN_AD = new Object();
      CN_AD.AD_SZ = &quot;300wx250h&quot;;
      CN_AD.PTYPE = &quot;publisher&quot;;
      cnetGetAd(CN_AD);
// --&gt;&lt;/script&gt;&lt;script src=&quot;http://mads.com.com/cnet-ad?CLIENT:ID=SJS&amp;amp;celt=js&amp;amp;x-cb=80775927&amp;amp;AD_SZ=300wx250h&amp;amp;PTYPE=publisher&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;&lt;!-- no overgif in ad style --&gt;&lt;/div&gt;
&lt;p&gt;&lt;!-- End ad --&gt; &lt;!-- me --&gt;W3C 的 &lt;a href=&quot;http://www.w3.org/2002/ws/desc/&quot;&gt;Web Services Description Working Group&lt;/a&gt;, &lt;a href=&quot;http://www.w3.org/2002/ws/Activity&quot;&gt;Web Services Activity&lt;/a&gt; 的一个子组织, 已经为描述 web service 定义了一种语言, 也定义了与他们交互的可能方式. The WG 于  26 March 2004 发布了 WSDL 2.0 工作草稿. 这是 WSDL 进化史上的一个重要里程碑. 本文中, 我讨论了相对于 WSDL 1.1 规范所作出的修改以及其它对 web 服务描述语言的主要改进.&lt;/p&gt;
&lt;h3&gt;W3C WSDL 2.0 工作草稿&lt;/h3&gt;
&lt;p&gt;W3C 已经公布了下列核心工作草稿作为该工作组交付物一部分:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl20/&quot;&gt;Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language&lt;/a&gt;&lt;!-- sidebar begins --&gt; &lt;!-- don't move sidebars --&gt; &lt;!-- sidebar ends --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl20-patterns/&quot;&gt;Web Services Description Language (WSDL) Version 2.0 Part 2: Message Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl12-bindings/&quot;&gt;Web Services Description Language (WSDL) Version 1.2 Part 3: Bindings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其它相关工作草稿包括需求和使用场景.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/ws-desc-reqs/&quot;&gt;Web Services Description Requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/ws-desc-usecases/&quot;&gt;Web Services Description Usage Scenarios&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;W3C XML Schema definition for WSDL 2.0 specification 可见于 &lt;a href=&quot;http://www.w3.org/2003/11/wsdl/&quot;&gt;http://www.w3.org/2003/11/wsdl/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.w3.org/2002/ws/desc/&quot;&gt;editor&amp;#8217;s copies&lt;/a&gt; of these documents provide updated information about the progress of these specifications.&lt;/p&gt;
&lt;h3&gt;Changes from the WSDL 1.1 Specification&lt;/h3&gt;
&lt;p&gt;WSDL 1.2 重命名为 WSDL 2.0 因为它相对 WSDL 1.1 有很大不同. 这其中的一些改变包括:&lt;/p&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li&gt;进一步加强了 WSDL 的语义. 这是在 WSDL 2.0 中要求 targetNamespace 是 definitions element 的一个必需属性的原因之一.&lt;/li&gt;
&lt;li&gt; 去掉了 message 结构.&lt;/li&gt;
&lt;li&gt;不再支持操作重载.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PortTypes&lt;/code&gt; 重命名为 &lt;code&gt;interfaces&lt;/code&gt;. 支持 interface 使用 extends 属性实现继承.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ports&lt;/code&gt; 重命名为 &lt;code&gt;endpoints&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span id=&quot;more-178&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;WSDL 2.0 Conceptual Model&lt;/h3&gt;
&lt;p&gt;一个 web service 的描述可以模型化为两部分. 在抽象部分里, WSDL 通过类型系统描述了 web service 发送和接收的消息, 典型的是使用 W3C XML Schema. Message exchange patterns define the sequence and cardinality of messages.&lt;code&gt; operation&lt;/code&gt; 将 message exchange patterns 与一个或多个 messages 关联到一起. &lt;code&gt;interface&lt;/code&gt; 在传输和报文中立基础上聚合这些 operations.&lt;/p&gt;
&lt;p&gt;在描述的具体部分, &lt;code&gt;bindings&lt;/code&gt; 指定了 interfaces 的传输方式和报文格式. service &lt;code&gt;endpoint&lt;/code&gt; 将网络地址和 binding 关联在一起. 最后, &lt;code&gt;service&lt;/code&gt; 将实现了共同的 interface 的 endpoints 聚合起来. Figure 1 展示了概念性的 WSDL 组件模型.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image002.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-180&quot; title=&quot;WSDL Conceptual model&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image002.jpg&quot; alt=&quot;WSDL Conceptual model&quot; width=&quot;400&quot; height=&quot;301&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;Figure 1: WSDL Conceptual model&lt;/p&gt;
&lt;h3&gt;WSDL Components&lt;/h3&gt;
&lt;p&gt;WSDL 提供了一组组件和它们的属性用于描述 web services. Listing 2 展示了使用 WSDL 2.0 描述的骨架. 下一章节给出每个组件的简要概览.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;definitions targetNamespace=&quot;xs:anyURI&quot;&amp;gt;
&amp;lt;documentation /&amp;gt; ?
[&amp;lt;import /&amp;gt; | &amp;lt;include /&amp;gt; ] *
&amp;lt;types /&amp;gt; ?
[&amp;lt;interface /&amp;gt; | &amp;lt;binding /&amp;gt; | &amp;lt;service /&amp;gt; ] *
&amp;lt;/definitions&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 2: WSDL 2.0 Skeleton&lt;/p&gt;
&lt;h3&gt;Definitions&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;definitions&lt;/code&gt; element 是 WSDL 文档的根. 它作为一个容器容纳关于 service 及其属性的所有必要信息. Figure 2 展示了 &lt;code&gt;definitions&lt;/code&gt; element 的 schema. &lt;code&gt;definitions&lt;/code&gt; element 的 &lt;code&gt;targetNamespace&lt;/code&gt; 属性是必需的. namespace 能够直接或间接定义 WSDL 的语义. &lt;code&gt;definitions&lt;/code&gt; element 也可以有其它可选属性指向其它各种 namespaces, 可用在 WSDL 文档中.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image004.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-181&quot; title=&quot;definitions schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image004.jpg&quot; alt=&quot;definitions schema&quot; width=&quot;500&quot; height=&quot;352&quot; /&gt;&lt;/a&gt;Figure 2: &lt;code&gt;definitions&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Include&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;include&lt;/code&gt; element 有助于模块化 web service 描述, 这样, 来自同一目标命名空间的各 service 定义组件可存放于不同的 WSDL 文档中, 这非常有利于在多个 web service 描述间使用和共享. &lt;code&gt;location&lt;/code&gt; 属性是强制要有的, 用于指定 WSDL 文档的地址. 在被包含 WSDL 中的目标命名空间的实际值必须匹配主(including) WSDL 中 &lt;code&gt;definitions&lt;/code&gt; element 的目标命名空间. Figure 3 展示了 &lt;code&gt;include&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image006.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-182&quot; title=&quot;include schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image006.jpg&quot; alt=&quot;include schema&quot; width=&quot;400&quot; height=&quot;149&quot; /&gt;&lt;/a&gt;Figure 3: &lt;code&gt;include&lt;/code&gt; schema&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;
&lt;h3&gt;Import&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;import&lt;/code&gt; element 非常类似于 &lt;code&gt;include&lt;/code&gt; element, 除了被 imported WSDL 必须是在不同的 target namespaces. &lt;code&gt;import&lt;/code&gt; element 的 &lt;code&gt;namespace&lt;/code&gt; attribute 是强制性的, 但 &lt;code&gt;location&lt;/code&gt; attribute 是可选的. Figure 4 展示了 &lt;code&gt;import&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image008.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-183&quot; title=&quot;import schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image008.jpg&quot; alt=&quot;import schema&quot; width=&quot;400&quot; height=&quot;151&quot; /&gt;&lt;/a&gt;Figure 4: &lt;code&gt;import&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Types&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;types&lt;/code&gt; element 定义了交换消息使用的数据类型. WSDL 使用 W3C XML Schema 作为首选 schema 语言. 它也支持其它系统如 DTDs and RELAX NG. Schemas 可以在 WSDL 文档的 &lt;code&gt;types&lt;/code&gt; element 中进行导入或者嵌入(importing or embedding). 导入是使用 &lt;code&gt;xs:import&lt;/code&gt;, 嵌入是使用 &lt;code&gt;xs:schema&lt;/code&gt;. 被导入或者嵌入的 schema components 可使用 QName 进行引用. Figure 5 展示了 &lt;code&gt;types&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image010.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-184&quot; title=&quot;types schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image010.jpg&quot; alt=&quot;types schema&quot; width=&quot;400&quot; height=&quot;181&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Figure 5: &lt;code&gt;types&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Interface&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;一个 &lt;/code&gt;&lt;code&gt;interface&lt;/code&gt; element 封装了一组抽象操作和抽象消息. 它可以(也可以不)继承一个或多个其它 interfaces. Interfaces 在其它组件如 bindings 中使用 QName 进行引用. interface &lt;code&gt;operation&lt;/code&gt; element 具有 name 和 pattern 属性, 都是必需的, 但 style 是可选属性. Figure 6 展示了 &lt;code&gt;interface&lt;/code&gt; element 的 schema. Features 定义了在通信双方间进行消息交换相关的功能, 这可能包括可靠性, 安全, 相关性, 和路由. Property 用于控制 feature 的行为. It has a set of possible and permissible values specified by references to a schema description. These values can be shared among features.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image012.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-185&quot; title=&quot;interface schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image012.jpg&quot; alt=&quot;interface schema&quot; width=&quot;400&quot; height=&quot;218&quot; /&gt;&lt;/a&gt;Figure 6: &lt;code&gt;interface&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Binding&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;binding&lt;/code&gt; element 定义了底层传输方式和消息的报文格式. WSDL 中的每个 binding 都引用一个 interface. 所有在该 interface 中定义的 operations 必须在 binding 进行绑定. 在 service 中, endpoint 引用 binding. Both endpoints and bindings are modeled to support flexibility and location transparency. 多个具有不同网络地址的 endpoints 仍可以共享相同协议的 binding. WSDL 2.0 Bindings 规范定义了 binding 协议和消息格式的扩展, 例如 SOAP, HTTP and MIME.  Figure 7 展示了 &lt;code&gt;binding&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image014.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-186&quot; title=&quot;binding schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image014.jpg&quot; alt=&quot;binding schema&quot; width=&quot;400&quot; height=&quot;181&quot; /&gt;&lt;/a&gt;Figure 7: &lt;code&gt;binding&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Service&lt;/h3&gt;
&lt;p&gt;一个 &lt;code&gt;service&lt;/code&gt; element 描述一组 endpoints, 每个 endpoint 都为一个 binding 引用一个单一网络地址. 所有其它协议特定信息都包含在 binding. Service 可以使用 QName 进行引用. &lt;code&gt;service&lt;/code&gt; element 具有一个 &lt;code&gt;name&lt;/code&gt; 和 &lt;code&gt;interface,&lt;/code&gt; 都是必需的属性. Figure 8 展示了 &lt;code&gt;service&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image016.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-187&quot; title=&quot;service schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image016.jpg&quot; alt=&quot;service schema&quot; width=&quot;400&quot; height=&quot;160&quot; /&gt;&lt;/a&gt;Figure 8: &lt;code&gt;service schema&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;WSDL Message Exchange Patterns&lt;/h3&gt;
&lt;p align=&quot;left&quot;&gt;Message exchange patterns define the sequence and cardinality of messages within an operation. Several types of message patterns are defined in the â€œPart 2: Message Patternsâ€ of the WSDL 2.0 specifications. WSDL message exchange patterns uses fault generation rules to indicate the occurrence of faults. Message exchange may be terminated if fault generation happens regardless of standard rule sets. The following standard rule set outlines the behavior of fault generation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fault Replaces Messages&lt;/li&gt;
&lt;li&gt;Message Triggers Fault&lt;/li&gt;
&lt;li&gt;No Faults&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Figure 9 shows the various message exchange patterns with their fault reference rules.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image018.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-188&quot; title=&quot;WSDL Message Exchange Patterns&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image018.jpg&quot; alt=&quot;WSDL Message Exchange Patterns&quot; width=&quot;400&quot; height=&quot;317&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Figure 9: WSDL Message Exchange Patterns&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;
&lt;h3&gt;Stock Quote Service Description in WSDL 1.1 &amp;amp; WSDL 2.0&lt;/h3&gt;
&lt;p&gt;在这一节, 你可以预览到一个用 WSDL 1.1 和 WSDL 2.0 描述的简单的股票报价服务(stock quote service). Listing 2 展示了用于描述股票报价服务的 XML schema types. Listing 3 and 4 分别展示了用 WSDL 1.1 和 WSDL 2.0 描述的股票报价服务接口定义. Listing 5 and 6 分别展示了 WSDL 1.1 和 WSDL 2.0 的股票报价服务实现的定义.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;http://example.com/stockquote/stockquoteV11.xsd&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;schema targetNamespace=&quot;http://example.com/stockquote/schemas&quot;
       &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2000/10/XMLSchema&amp;#8221;&amp;gt;&lt;/span&gt;
    &amp;lt;element name=&amp;#8221;TradePriceRequest&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
                &amp;lt;element name=&amp;#8221;tickerSymbol&amp;#8221; type=&amp;#8221;string&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
    &amp;lt;element name=&amp;#8221;TradePrice&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
                &amp;lt;element name=&amp;#8221;price&amp;#8221; type=&amp;#8221;float&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
&amp;lt;/schema&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteV20.xsd&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;schema targetNamespace=&quot;http://example.com/stockquote/schemas&quot;
       &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2001/XMLSchema&amp;#8221;&amp;gt;&lt;/span&gt;
    &amp;lt;element name=&amp;#8221;TradePriceRequest&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
&amp;lt;element name=&amp;#8221;tickerSymbol&amp;#8221; type=&amp;#8221;string&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
    &amp;lt;element name=&amp;#8221;TradePrice&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
&amp;lt;element name=&amp;#8221;price&amp;#8221; type=&amp;#8221;float&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
&amp;lt;/schema&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 2: XML Schema definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteV11.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
        targetNamespace=&quot;http://example.com/stockquote/definitions&quot;
    &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;    xmlns:tns=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
    &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;    xmlns:xsd1=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;&lt;/span&gt;
    &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;    xmlns:soap=&amp;#8221;http://schemas.xmlsoap.org/wsdl/soap/&amp;#8221;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt; xmlns=&amp;#8221;http://schemas.xmlsoap.org/wsdl/&amp;#8221;&amp;gt;&lt;/span&gt;
    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;
        location=&amp;#8221;http://example.com/stockquote/stockquoteV11.xsd&amp;#8221;/&amp;gt;
    &amp;lt;message name=&amp;#8221;GetLastTradePriceInput&amp;#8221;&amp;gt;
        &amp;lt;part name=&amp;#8221;body&amp;#8221; element=&amp;#8221;xsd1:TradePriceRequest&amp;#8221;/&amp;gt;
    &amp;lt;/message&amp;gt;

    &amp;lt;message name=&amp;#8221;GetLastTradePriceOutput&amp;#8221;&amp;gt;
        &amp;lt;part name=&amp;#8221;body&amp;#8221; element=&amp;#8221;xsd1:TradePrice&amp;#8221;/&amp;gt;
    &amp;lt;/message&amp;gt;

    &amp;lt;portType name=&amp;#8221;StockQuotePortType&amp;#8221;&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221;&amp;gt;
            &amp;lt;input message=&amp;#8221;tns:GetLastTradePriceInput&amp;#8221;/&amp;gt;
            &amp;lt;output message=&amp;#8221;tns:GetLastTradePriceOutput&amp;#8221;/&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/portType&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 3: WSDL 1.1 Interface definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteV20.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
        targetNamespace=&quot;http://example.com/stockquote/definitions&quot;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:tns=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:xsd1=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:soap=&amp;#8221;http://www.w3.org/2003/11/wsdl/soap12&amp;#8243;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2003/11/wsdl&amp;#8221;&amp;gt;&lt;/span&gt;

    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;
        location=&amp;#8221;http://example.com/stockquote/stockquoteV20.xsd&amp;#8221;/&amp;gt;
   &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;
    &amp;lt;types&amp;gt;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;&amp;lt;schema targetNamespace=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&amp;gt;&lt;/span&gt;
            &amp;lt;element name=&amp;#8221;GetLastTradePriceInput&amp;#8221; type=&amp;#8221;xsd1:TradePriceRequest&amp;#8221;/&amp;gt;
            &amp;lt;element name=&amp;#8221;GetLastTradePriceOutput&amp;#8221; type=&amp;#8221;xsd1:TradePrice&amp;#8221;/&amp;gt;
        &amp;lt;/schema&amp;gt;
    &amp;lt;/types&amp;gt;

    &amp;lt;interface name=&amp;#8221;StockQuoteInterface&amp;#8221;&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221; pattern=&amp;#8221;http://www.w3.org/2003/11/wsdl/in-out&amp;#8221;&amp;gt;
            &amp;lt;input message=&amp;#8221;tns:GetLastTradePriceInput&amp;#8221;/&amp;gt;
            &amp;lt;output message=&amp;#8221;tns:GetLastTradePriceOutput&amp;#8221;/&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/interface&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 4: WSDL 2.0 Interface definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteserviceV11.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
          targetNamespace=&quot;http://example.com/stockquote/service&quot;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:tns=&amp;#8221;http://example.com/stockquote/service&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:soap=&amp;#8221;http://schemas.xmlsoap.org/wsdl/soap/&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:defs=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://schemas.xmlsoap.org/wsdl/&amp;#8221;&amp;gt;&lt;/span&gt;

    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;
            location=&amp;#8221;http://example.com/stockquote/stockquoteV11.wsdl&amp;#8221;/&amp;gt;
    &amp;lt;binding name=&amp;#8221;StockQuoteSoapBinding&amp;#8221; type=&amp;#8221;defs:StockQuotePortType&amp;#8221;&amp;gt;
        &amp;lt;soap:binding style=&amp;#8221;document&amp;#8221; transport=&amp;#8221;http://schemas.xmlsoap.org/soap/http&amp;#8221;/&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221;&amp;gt;
            &amp;lt;soap:operation soapAction=&amp;#8221;http://example.com/GetLastTradePrice&amp;#8221;/&amp;gt;
            &amp;lt;input&amp;gt;
                &amp;lt;soap:body use=&amp;#8221;literal&amp;#8221;/&amp;gt;
            &amp;lt;/input&amp;gt;
            &amp;lt;output&amp;gt;
                &amp;lt;soap:body use=&amp;#8221;literal&amp;#8221;/&amp;gt;
            &amp;lt;/output&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/binding&amp;gt;
    &amp;lt;service name=&amp;#8221;StockQuoteService&amp;#8221;&amp;gt;
        &amp;lt;documentation&amp;gt;My first service&amp;lt;/documentation&amp;gt;
        &amp;lt;port name=&amp;#8221;StockQuotePort&amp;#8221; binding=&amp;#8221;tns:StockQuoteBinding&amp;#8221;&amp;gt;
            &amp;lt;soap:address location=&amp;#8221;http://example.com/stockquote&amp;#8221;/&amp;gt;
        &amp;lt;/port&amp;gt;
    &amp;lt;/service&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 5: WSDL 1.1 Implementation definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteserviceV20.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
        targetNamespace=&quot;http://example.com/stockquote/service&quot;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:tns=&amp;#8221;http://example.com/stockquote/service&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:wsoap=&amp;#8221;http://www.w3.org/2003/11/wsdl/soap12&amp;#8243;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:defs=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2003/11/wsdl&amp;#8221;&amp;gt;&lt;/span&gt;

    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;
        location=&amp;#8221;http://example.com/stockquote/stockquoteV12.wsdl&amp;#8221;/&amp;gt;

    &amp;lt;binding name=&amp;#8221;StockQuoteSoapBinding&amp;#8221; interface=&amp;#8221;defs:StockQuoteInterface&amp;#8221;&amp;gt;
        &amp;lt;wsoap:binding protocol=&amp;#8221;http://www.w3.org/2003/11/wsdl/http&amp;#8221;/&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221;&amp;gt;
           &amp;lt;wsoap:operation soapAction=&amp;#8221;http://example.com/GetLastTradePrice&amp;#8221;/&amp;gt;
           &amp;lt;input&amp;gt;
               &amp;lt;wsoap:body/&amp;gt;
           &amp;lt;/input&amp;gt;
           &amp;lt;output&amp;gt;
               &amp;lt;wsoap:body/&amp;gt;
           &amp;lt;/output&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/binding&amp;gt;
    &amp;lt;service name=&amp;#8221;StockQuoteService&amp;#8221;&amp;gt;
        &amp;lt;documentation&amp;gt;My stock quote service&amp;lt;/documentation&amp;gt;
        &amp;lt;endpoint name=&amp;#8221;StockQuoteEndPoint&amp;#8221; binding=&amp;#8221;tns:StockQuoteSoapBinding&amp;#8221;&amp;gt;
            &amp;lt;wsoap:address location=&amp;#8221;http://example.com/stockquote&amp;#8221;/&amp;gt;
        &amp;lt;/endpoint&amp;gt;
    &amp;lt;/service&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 6: WSDL 2.0 Implementation definition for Stock Quote Service&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;在本文中, 我解释了 WSDL 2.0 规范的工作草稿的一些详细情况. 该工作组正在讨论是否向现有规范中增加更多的特性以便提供高度灵活性和强壮的语言来描述 web services. 这些特性包括 web service 引用(references), 版本化(versioning), 属性(attributes), 和 compositors. 除了这些新特性, further refinements are made to the existing specification. 开发者社区希望在不久的将来能有一个更稳定的 WSDL 2.0 规范的版本.&lt;/p&gt;
&lt;p&gt;&lt;!-- sidebar begins --&gt;&lt;/p&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;8&quot; cellpadding=&quot;4&quot; width=&quot;80%&quot; align=&quot;center&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;100%&quot; valign=&quot;top&quot; bgcolor=&quot;#efefef&quot;&gt;
&lt;div class=&quot;secondary&quot;&gt;
&lt;h3&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2002/ws/desc/&quot;&gt;W3C Web Services Description Working Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2002/ws/desc/wsdl20-primer&quot;&gt;W3C WSDL Version 2.0 Primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl20/&quot;&gt;W3C WSDL 2.0 Core Specifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2003/11/wsdl/&quot;&gt;XML Schema for WSDL 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://webservices.xml.com/2004/05/19/examples/WSDL2.0-Schema-Documentation.zip&quot;&gt;XML-SPY Generated WSDL 2.0 XML Schema Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- sidebar ends --&gt; &lt;!-- end content --&gt; &lt;!-- ISI_LISTEN_STOP --&gt; &lt;!-- talk back --&gt;&lt;a name=&quot;thread&quot;&gt; &lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;您可能会对以下内容感兴趣&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 07月 25日, 星期五 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/25/soap-%e8%a7%84%e8%8c%83%e4%b8%ad%e7%9a%84-encodingstyle-%e5%92%8c-wsdl-%e4%b8%ad%e7%9a%84-binding-style-%e7%a9%b6%e7%ab%9f%e6%98%af%e4%bb%80%e4%b9%88%e6%84%8f%e6%80%9d.html&quot; title=&quot;SOAP 规范中的 encodingStyle 和 WSDL 中的 binding style 究竟是什么意思&quot;&gt;SOAP 规范中的 encodingStyle 和 WSDL 中的 binding style 究竟是什么意思 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 19日, 星期六 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/19/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-custody-and-ownership-transfer-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Custody and Ownership Transfer API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Custody and Ownership Transfer API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 15日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/15/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-value-set-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 13日, 星期日 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/13/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-security-policy-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Security Policy API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Security Policy API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 7日, 星期一 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/07/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-publication-api-set3.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Publication API Set(3)&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Publication API Set(3) (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/07/29/whats-new-in-wsdl-20.html/feed</wfw:commentRss><description>&lt;p&gt;原文：&lt;a title=&quot;英文原文&quot; href=&quot;http://www.xml.com/pub/a/ws/2004/05/19/wsdl2.html?page=1&quot; target=&quot;_blank&quot;&gt;http://www.xml.com/pub/a/ws/2004/05/19/wsdl2.html?page=1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;secondary&quot;&gt;by &lt;a href=&quot;http://www.xml.com/pub/au/233&quot;&gt;Arulazi Dhesiaseelan&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;secondary&quot;&gt;May 20, 2004&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;!-- mega preparse mp: --&gt;&lt;!-- XML MPU Ad --&gt;&lt;/p&gt;
&lt;div style=&quot;float: right; padding-left: 15px;&quot;&gt;&lt;script src=&quot;http://ocp.com.com/ad.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; &lt;script type=&quot;text/JavaScript&quot;&gt;&lt;!--
      var CN_AD = new Object();
      CN_AD.AD_SZ = &quot;300wx250h&quot;;
      CN_AD.PTYPE = &quot;publisher&quot;;
      cnetGetAd(CN_AD);
// --&gt;&lt;/script&gt;&lt;script src=&quot;http://mads.com.com/cnet-ad?CLIENT:ID=SJS&amp;amp;celt=js&amp;amp;x-cb=80775927&amp;amp;AD_SZ=300wx250h&amp;amp;PTYPE=publisher&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;&lt;!-- no overgif in ad style --&gt;&lt;/div&gt;
&lt;p&gt;&lt;!-- End ad --&gt; &lt;!-- me --&gt;W3C 的 &lt;a href=&quot;http://www.w3.org/2002/ws/desc/&quot;&gt;Web Services Description Working Group&lt;/a&gt;, &lt;a href=&quot;http://www.w3.org/2002/ws/Activity&quot;&gt;Web Services Activity&lt;/a&gt; 的一个子组织, 已经为描述 web service 定义了一种语言, 也定义了与他们交互的可能方式. The WG 于  26 March 2004 发布了 WSDL 2.0 工作草稿. 这是 WSDL 进化史上的一个重要里程碑. 本文中, 我讨论了相对于 WSDL 1.1 规范所作出的修改以及其它对 web 服务描述语言的主要改进.&lt;/p&gt;
&lt;h3&gt;W3C WSDL 2.0 工作草稿&lt;/h3&gt;
&lt;p&gt;W3C 已经公布了下列核心工作草稿作为该工作组交付物一部分:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl20/&quot;&gt;Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language&lt;/a&gt;&lt;!-- sidebar begins --&gt; &lt;!-- don't move sidebars --&gt; &lt;!-- sidebar ends --&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl20-patterns/&quot;&gt;Web Services Description Language (WSDL) Version 2.0 Part 2: Message Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl12-bindings/&quot;&gt;Web Services Description Language (WSDL) Version 1.2 Part 3: Bindings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其它相关工作草稿包括需求和使用场景.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/ws-desc-reqs/&quot;&gt;Web Services Description Requirements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/ws-desc-usecases/&quot;&gt;Web Services Description Usage Scenarios&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;W3C XML Schema definition for WSDL 2.0 specification 可见于 &lt;a href=&quot;http://www.w3.org/2003/11/wsdl/&quot;&gt;http://www.w3.org/2003/11/wsdl/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://www.w3.org/2002/ws/desc/&quot;&gt;editor&amp;#8217;s copies&lt;/a&gt; of these documents provide updated information about the progress of these specifications.&lt;/p&gt;
&lt;h3&gt;Changes from the WSDL 1.1 Specification&lt;/h3&gt;
&lt;p&gt;WSDL 1.2 重命名为 WSDL 2.0 因为它相对 WSDL 1.1 有很大不同. 这其中的一些改变包括:&lt;/p&gt;
&lt;ul type=&quot;disc&quot;&gt;
&lt;li&gt;进一步加强了 WSDL 的语义. 这是在 WSDL 2.0 中要求 targetNamespace 是 definitions element 的一个必需属性的原因之一.&lt;/li&gt;
&lt;li&gt; 去掉了 message 结构.&lt;/li&gt;
&lt;li&gt;不再支持操作重载.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PortTypes&lt;/code&gt; 重命名为 &lt;code&gt;interfaces&lt;/code&gt;. 支持 interface 使用 extends 属性实现继承.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ports&lt;/code&gt; 重命名为 &lt;code&gt;endpoints&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span id=&quot;more-178&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;WSDL 2.0 Conceptual Model&lt;/h3&gt;
&lt;p&gt;一个 web service 的描述可以模型化为两部分. 在抽象部分里, WSDL 通过类型系统描述了 web service 发送和接收的消息, 典型的是使用 W3C XML Schema. Message exchange patterns define the sequence and cardinality of messages.&lt;code&gt; operation&lt;/code&gt; 将 message exchange patterns 与一个或多个 messages 关联到一起. &lt;code&gt;interface&lt;/code&gt; 在传输和报文中立基础上聚合这些 operations.&lt;/p&gt;
&lt;p&gt;在描述的具体部分, &lt;code&gt;bindings&lt;/code&gt; 指定了 interfaces 的传输方式和报文格式. service &lt;code&gt;endpoint&lt;/code&gt; 将网络地址和 binding 关联在一起. 最后, &lt;code&gt;service&lt;/code&gt; 将实现了共同的 interface 的 endpoints 聚合起来. Figure 1 展示了概念性的 WSDL 组件模型.&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image002.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-180&quot; title=&quot;WSDL Conceptual model&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image002.jpg&quot; alt=&quot;WSDL Conceptual model&quot; width=&quot;400&quot; height=&quot;301&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;Figure 1: WSDL Conceptual model&lt;/p&gt;
&lt;h3&gt;WSDL Components&lt;/h3&gt;
&lt;p&gt;WSDL 提供了一组组件和它们的属性用于描述 web services. Listing 2 展示了使用 WSDL 2.0 描述的骨架. 下一章节给出每个组件的简要概览.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;definitions targetNamespace=&quot;xs:anyURI&quot;&amp;gt;
&amp;lt;documentation /&amp;gt; ?
[&amp;lt;import /&amp;gt; | &amp;lt;include /&amp;gt; ] *
&amp;lt;types /&amp;gt; ?
[&amp;lt;interface /&amp;gt; | &amp;lt;binding /&amp;gt; | &amp;lt;service /&amp;gt; ] *
&amp;lt;/definitions&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 2: WSDL 2.0 Skeleton&lt;/p&gt;
&lt;h3&gt;Definitions&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;definitions&lt;/code&gt; element 是 WSDL 文档的根. 它作为一个容器容纳关于 service 及其属性的所有必要信息. Figure 2 展示了 &lt;code&gt;definitions&lt;/code&gt; element 的 schema. &lt;code&gt;definitions&lt;/code&gt; element 的 &lt;code&gt;targetNamespace&lt;/code&gt; 属性是必需的. namespace 能够直接或间接定义 WSDL 的语义. &lt;code&gt;definitions&lt;/code&gt; element 也可以有其它可选属性指向其它各种 namespaces, 可用在 WSDL 文档中.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image004.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-181&quot; title=&quot;definitions schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image004.jpg&quot; alt=&quot;definitions schema&quot; width=&quot;500&quot; height=&quot;352&quot; /&gt;&lt;/a&gt;Figure 2: &lt;code&gt;definitions&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Include&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;include&lt;/code&gt; element 有助于模块化 web service 描述, 这样, 来自同一目标命名空间的各 service 定义组件可存放于不同的 WSDL 文档中, 这非常有利于在多个 web service 描述间使用和共享. &lt;code&gt;location&lt;/code&gt; 属性是强制要有的, 用于指定 WSDL 文档的地址. 在被包含 WSDL 中的目标命名空间的实际值必须匹配主(including) WSDL 中 &lt;code&gt;definitions&lt;/code&gt; element 的目标命名空间. Figure 3 展示了 &lt;code&gt;include&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image006.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-182&quot; title=&quot;include schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image006.jpg&quot; alt=&quot;include schema&quot; width=&quot;400&quot; height=&quot;149&quot; /&gt;&lt;/a&gt;Figure 3: &lt;code&gt;include&lt;/code&gt; schema&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;
&lt;h3&gt;Import&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;import&lt;/code&gt; element 非常类似于 &lt;code&gt;include&lt;/code&gt; element, 除了被 imported WSDL 必须是在不同的 target namespaces. &lt;code&gt;import&lt;/code&gt; element 的 &lt;code&gt;namespace&lt;/code&gt; attribute 是强制性的, 但 &lt;code&gt;location&lt;/code&gt; attribute 是可选的. Figure 4 展示了 &lt;code&gt;import&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image008.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-183&quot; title=&quot;import schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image008.jpg&quot; alt=&quot;import schema&quot; width=&quot;400&quot; height=&quot;151&quot; /&gt;&lt;/a&gt;Figure 4: &lt;code&gt;import&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Types&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;types&lt;/code&gt; element 定义了交换消息使用的数据类型. WSDL 使用 W3C XML Schema 作为首选 schema 语言. 它也支持其它系统如 DTDs and RELAX NG. Schemas 可以在 WSDL 文档的 &lt;code&gt;types&lt;/code&gt; element 中进行导入或者嵌入(importing or embedding). 导入是使用 &lt;code&gt;xs:import&lt;/code&gt;, 嵌入是使用 &lt;code&gt;xs:schema&lt;/code&gt;. 被导入或者嵌入的 schema components 可使用 QName 进行引用. Figure 5 展示了 &lt;code&gt;types&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image010.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-184&quot; title=&quot;types schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image010.jpg&quot; alt=&quot;types schema&quot; width=&quot;400&quot; height=&quot;181&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Figure 5: &lt;code&gt;types&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Interface&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;一个 &lt;/code&gt;&lt;code&gt;interface&lt;/code&gt; element 封装了一组抽象操作和抽象消息. 它可以(也可以不)继承一个或多个其它 interfaces. Interfaces 在其它组件如 bindings 中使用 QName 进行引用. interface &lt;code&gt;operation&lt;/code&gt; element 具有 name 和 pattern 属性, 都是必需的, 但 style 是可选属性. Figure 6 展示了 &lt;code&gt;interface&lt;/code&gt; element 的 schema. Features 定义了在通信双方间进行消息交换相关的功能, 这可能包括可靠性, 安全, 相关性, 和路由. Property 用于控制 feature 的行为. It has a set of possible and permissible values specified by references to a schema description. These values can be shared among features.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image012.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-185&quot; title=&quot;interface schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image012.jpg&quot; alt=&quot;interface schema&quot; width=&quot;400&quot; height=&quot;218&quot; /&gt;&lt;/a&gt;Figure 6: &lt;code&gt;interface&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Binding&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;binding&lt;/code&gt; element 定义了底层传输方式和消息的报文格式. WSDL 中的每个 binding 都引用一个 interface. 所有在该 interface 中定义的 operations 必须在 binding 进行绑定. 在 service 中, endpoint 引用 binding. Both endpoints and bindings are modeled to support flexibility and location transparency. 多个具有不同网络地址的 endpoints 仍可以共享相同协议的 binding. WSDL 2.0 Bindings 规范定义了 binding 协议和消息格式的扩展, 例如 SOAP, HTTP and MIME.  Figure 7 展示了 &lt;code&gt;binding&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image014.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-186&quot; title=&quot;binding schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image014.jpg&quot; alt=&quot;binding schema&quot; width=&quot;400&quot; height=&quot;181&quot; /&gt;&lt;/a&gt;Figure 7: &lt;code&gt;binding&lt;/code&gt; schema&lt;/p&gt;
&lt;h3&gt;Service&lt;/h3&gt;
&lt;p&gt;一个 &lt;code&gt;service&lt;/code&gt; element 描述一组 endpoints, 每个 endpoint 都为一个 binding 引用一个单一网络地址. 所有其它协议特定信息都包含在 binding. Service 可以使用 QName 进行引用. &lt;code&gt;service&lt;/code&gt; element 具有一个 &lt;code&gt;name&lt;/code&gt; 和 &lt;code&gt;interface,&lt;/code&gt; 都是必需的属性. Figure 8 展示了 &lt;code&gt;service&lt;/code&gt; element 的 XML schema.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image016.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-187&quot; title=&quot;service schema&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image016.jpg&quot; alt=&quot;service schema&quot; width=&quot;400&quot; height=&quot;160&quot; /&gt;&lt;/a&gt;Figure 8: &lt;code&gt;service schema&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;WSDL Message Exchange Patterns&lt;/h3&gt;
&lt;p align=&quot;left&quot;&gt;Message exchange patterns define the sequence and cardinality of messages within an operation. Several types of message patterns are defined in the â€œPart 2: Message Patternsâ€ of the WSDL 2.0 specifications. WSDL message exchange patterns uses fault generation rules to indicate the occurrence of faults. Message exchange may be terminated if fault generation happens regardless of standard rule sets. The following standard rule set outlines the behavior of fault generation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fault Replaces Messages&lt;/li&gt;
&lt;li&gt;Message Triggers Fault&lt;/li&gt;
&lt;li&gt;No Faults&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Figure 9 shows the various message exchange patterns with their fault reference rules.&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;&lt;a href=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image018.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-full wp-image-188&quot; title=&quot;WSDL Message Exchange Patterns&quot; src=&quot;http://blog.baturu.com/wp-content/uploads/2008/07/image018.jpg&quot; alt=&quot;WSDL Message Exchange Patterns&quot; width=&quot;400&quot; height=&quot;317&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Figure 9: WSDL Message Exchange Patterns&lt;/p&gt;
&lt;p class=&quot;secondary&quot;&gt;
&lt;h3&gt;Stock Quote Service Description in WSDL 1.1 &amp;amp; WSDL 2.0&lt;/h3&gt;
&lt;p&gt;在这一节, 你可以预览到一个用 WSDL 1.1 和 WSDL 2.0 描述的简单的股票报价服务(stock quote service). Listing 2 展示了用于描述股票报价服务的 XML schema types. Listing 3 and 4 分别展示了用 WSDL 1.1 和 WSDL 2.0 描述的股票报价服务接口定义. Listing 5 and 6 分别展示了 WSDL 1.1 和 WSDL 2.0 的股票报价服务实现的定义.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;http://example.com/stockquote/stockquoteV11.xsd&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;schema targetNamespace=&quot;http://example.com/stockquote/schemas&quot;
       &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2000/10/XMLSchema&amp;#8221;&amp;gt;&lt;/span&gt;
    &amp;lt;element name=&amp;#8221;TradePriceRequest&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
                &amp;lt;element name=&amp;#8221;tickerSymbol&amp;#8221; type=&amp;#8221;string&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
    &amp;lt;element name=&amp;#8221;TradePrice&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
                &amp;lt;element name=&amp;#8221;price&amp;#8221; type=&amp;#8221;float&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
&amp;lt;/schema&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteV20.xsd&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;schema targetNamespace=&quot;http://example.com/stockquote/schemas&quot;
       &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2001/XMLSchema&amp;#8221;&amp;gt;&lt;/span&gt;
    &amp;lt;element name=&amp;#8221;TradePriceRequest&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
&amp;lt;element name=&amp;#8221;tickerSymbol&amp;#8221; type=&amp;#8221;string&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
    &amp;lt;element name=&amp;#8221;TradePrice&amp;#8221;&amp;gt;
        &amp;lt;complexType&amp;gt;
            &amp;lt;all&amp;gt;
&amp;lt;element name=&amp;#8221;price&amp;#8221; type=&amp;#8221;float&amp;#8221;/&amp;gt;
            &amp;lt;/all&amp;gt;
        &amp;lt;/complexType&amp;gt;
    &amp;lt;/element&amp;gt;
&amp;lt;/schema&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 2: XML Schema definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteV11.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
        targetNamespace=&quot;http://example.com/stockquote/definitions&quot;
    &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;    xmlns:tns=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
    &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;    xmlns:xsd1=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;&lt;/span&gt;
    &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;    xmlns:soap=&amp;#8221;http://schemas.xmlsoap.org/wsdl/soap/&amp;#8221;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt; xmlns=&amp;#8221;http://schemas.xmlsoap.org/wsdl/&amp;#8221;&amp;gt;&lt;/span&gt;
    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;
        location=&amp;#8221;http://example.com/stockquote/stockquoteV11.xsd&amp;#8221;/&amp;gt;
    &amp;lt;message name=&amp;#8221;GetLastTradePriceInput&amp;#8221;&amp;gt;
        &amp;lt;part name=&amp;#8221;body&amp;#8221; element=&amp;#8221;xsd1:TradePriceRequest&amp;#8221;/&amp;gt;
    &amp;lt;/message&amp;gt;

    &amp;lt;message name=&amp;#8221;GetLastTradePriceOutput&amp;#8221;&amp;gt;
        &amp;lt;part name=&amp;#8221;body&amp;#8221; element=&amp;#8221;xsd1:TradePrice&amp;#8221;/&amp;gt;
    &amp;lt;/message&amp;gt;

    &amp;lt;portType name=&amp;#8221;StockQuotePortType&amp;#8221;&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221;&amp;gt;
            &amp;lt;input message=&amp;#8221;tns:GetLastTradePriceInput&amp;#8221;/&amp;gt;
            &amp;lt;output message=&amp;#8221;tns:GetLastTradePriceOutput&amp;#8221;/&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/portType&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 3: WSDL 1.1 Interface definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteV20.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
        targetNamespace=&quot;http://example.com/stockquote/definitions&quot;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:tns=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:xsd1=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:soap=&amp;#8221;http://www.w3.org/2003/11/wsdl/soap12&amp;#8243;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2003/11/wsdl&amp;#8221;&amp;gt;&lt;/span&gt;

    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/schemas&amp;#8221;
        location=&amp;#8221;http://example.com/stockquote/stockquoteV20.xsd&amp;#8221;/&amp;gt;
   &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;
    &amp;lt;types&amp;gt;&lt;/span&gt;
        &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;&amp;lt;schema targetNamespace=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&amp;gt;&lt;/span&gt;
            &amp;lt;element name=&amp;#8221;GetLastTradePriceInput&amp;#8221; type=&amp;#8221;xsd1:TradePriceRequest&amp;#8221;/&amp;gt;
            &amp;lt;element name=&amp;#8221;GetLastTradePriceOutput&amp;#8221; type=&amp;#8221;xsd1:TradePrice&amp;#8221;/&amp;gt;
        &amp;lt;/schema&amp;gt;
    &amp;lt;/types&amp;gt;

    &amp;lt;interface name=&amp;#8221;StockQuoteInterface&amp;#8221;&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221; pattern=&amp;#8221;http://www.w3.org/2003/11/wsdl/in-out&amp;#8221;&amp;gt;
            &amp;lt;input message=&amp;#8221;tns:GetLastTradePriceInput&amp;#8221;/&amp;gt;
            &amp;lt;output message=&amp;#8221;tns:GetLastTradePriceOutput&amp;#8221;/&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/interface&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 4: WSDL 2.0 Interface definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteserviceV11.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
          targetNamespace=&quot;http://example.com/stockquote/service&quot;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:tns=&amp;#8221;http://example.com/stockquote/service&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:soap=&amp;#8221;http://schemas.xmlsoap.org/wsdl/soap/&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:defs=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://schemas.xmlsoap.org/wsdl/&amp;#8221;&amp;gt;&lt;/span&gt;

    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;
            location=&amp;#8221;http://example.com/stockquote/stockquoteV11.wsdl&amp;#8221;/&amp;gt;
    &amp;lt;binding name=&amp;#8221;StockQuoteSoapBinding&amp;#8221; type=&amp;#8221;defs:StockQuotePortType&amp;#8221;&amp;gt;
        &amp;lt;soap:binding style=&amp;#8221;document&amp;#8221; transport=&amp;#8221;http://schemas.xmlsoap.org/soap/http&amp;#8221;/&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221;&amp;gt;
            &amp;lt;soap:operation soapAction=&amp;#8221;http://example.com/GetLastTradePrice&amp;#8221;/&amp;gt;
            &amp;lt;input&amp;gt;
                &amp;lt;soap:body use=&amp;#8221;literal&amp;#8221;/&amp;gt;
            &amp;lt;/input&amp;gt;
            &amp;lt;output&amp;gt;
                &amp;lt;soap:body use=&amp;#8221;literal&amp;#8221;/&amp;gt;
            &amp;lt;/output&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/binding&amp;gt;
    &amp;lt;service name=&amp;#8221;StockQuoteService&amp;#8221;&amp;gt;
        &amp;lt;documentation&amp;gt;My first service&amp;lt;/documentation&amp;gt;
        &amp;lt;port name=&amp;#8221;StockQuotePort&amp;#8221; binding=&amp;#8221;tns:StockQuoteBinding&amp;#8221;&amp;gt;
            &amp;lt;soap:address location=&amp;#8221;http://example.com/stockquote&amp;#8221;/&amp;gt;
        &amp;lt;/port&amp;gt;
    &amp;lt;/service&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 5: WSDL 1.1 Implementation definition for Stock Quote Service&lt;/p&gt;
&lt;p style=&quot;border: medium none; padding: 0cm;&quot;&gt;&lt;strong&gt; http://example.com/stockquote/stockquoteserviceV20.wsdl&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;
&amp;lt;definitions name=&quot;StockQuote&quot;
        targetNamespace=&quot;http://example.com/stockquote/service&quot;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:tns=&amp;#8221;http://example.com/stockquote/service&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:wsoap=&amp;#8221;http://www.w3.org/2003/11/wsdl/soap12&amp;#8243;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns:defs=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;&lt;/span&gt;
          &lt;span lang=&quot;de-DE&quot; xml:lang=&quot;de-DE&quot;&gt;xmlns=&amp;#8221;http://www.w3.org/2003/11/wsdl&amp;#8221;&amp;gt;&lt;/span&gt;

    &amp;lt;import namespace=&amp;#8221;http://example.com/stockquote/definitions&amp;#8221;
        location=&amp;#8221;http://example.com/stockquote/stockquoteV12.wsdl&amp;#8221;/&amp;gt;

    &amp;lt;binding name=&amp;#8221;StockQuoteSoapBinding&amp;#8221; interface=&amp;#8221;defs:StockQuoteInterface&amp;#8221;&amp;gt;
        &amp;lt;wsoap:binding protocol=&amp;#8221;http://www.w3.org/2003/11/wsdl/http&amp;#8221;/&amp;gt;
        &amp;lt;operation name=&amp;#8221;GetLastTradePrice&amp;#8221;&amp;gt;
           &amp;lt;wsoap:operation soapAction=&amp;#8221;http://example.com/GetLastTradePrice&amp;#8221;/&amp;gt;
           &amp;lt;input&amp;gt;
               &amp;lt;wsoap:body/&amp;gt;
           &amp;lt;/input&amp;gt;
           &amp;lt;output&amp;gt;
               &amp;lt;wsoap:body/&amp;gt;
           &amp;lt;/output&amp;gt;
        &amp;lt;/operation&amp;gt;
    &amp;lt;/binding&amp;gt;
    &amp;lt;service name=&amp;#8221;StockQuoteService&amp;#8221;&amp;gt;
        &amp;lt;documentation&amp;gt;My stock quote service&amp;lt;/documentation&amp;gt;
        &amp;lt;endpoint name=&amp;#8221;StockQuoteEndPoint&amp;#8221; binding=&amp;#8221;tns:StockQuoteSoapBinding&amp;#8221;&amp;gt;
            &amp;lt;wsoap:address location=&amp;#8221;http://example.com/stockquote&amp;#8221;/&amp;gt;
        &amp;lt;/endpoint&amp;gt;
    &amp;lt;/service&amp;gt;
&amp;lt;/definitions&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p align=&quot;center&quot;&gt;Listing 6: WSDL 2.0 Implementation definition for Stock Quote Service&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;在本文中, 我解释了 WSDL 2.0 规范的工作草稿的一些详细情况. 该工作组正在讨论是否向现有规范中增加更多的特性以便提供高度灵活性和强壮的语言来描述 web services. 这些特性包括 web service 引用(references), 版本化(versioning), 属性(attributes), 和 compositors. 除了这些新特性, further refinements are made to the existing specification. 开发者社区希望在不久的将来能有一个更稳定的 WSDL 2.0 规范的版本.&lt;/p&gt;
&lt;p&gt;&lt;!-- sidebar begins --&gt;&lt;/p&gt;
&lt;table border=&quot;0&quot; cellspacing=&quot;8&quot; cellpadding=&quot;4&quot; width=&quot;80%&quot; align=&quot;center&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;100%&quot; valign=&quot;top&quot; bgcolor=&quot;#efefef&quot;&gt;
&lt;div class=&quot;secondary&quot;&gt;
&lt;h3&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2002/ws/desc/&quot;&gt;W3C Web Services Description Working Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2002/ws/desc/wsdl20-primer&quot;&gt;W3C WSDL Version 2.0 Primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/wsdl20/&quot;&gt;W3C WSDL 2.0 Core Specifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/2003/11/wsdl/&quot;&gt;XML Schema for WSDL 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://webservices.xml.com/2004/05/19/examples/WSDL2.0-Schema-Documentation.zip&quot;&gt;XML-SPY Generated WSDL 2.0 XML Schema Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;!-- sidebar ends --&gt; &lt;!-- end content --&gt; &lt;!-- ISI_LISTEN_STOP --&gt; &lt;!-- talk back --&gt;&lt;a name=&quot;thread&quot;&gt; &lt;/a&gt;&lt;/p&gt;
您可能会对以下内容感兴趣2008年, 07月 25日, 星期五 -- SOAP 规范中的 encodingStyle 和 WSDL 中的 binding style 究竟是什么意思 (0)2008年, 07月 19日, 星期六 -- UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Custody and Ownership Transfer API Set (0)2008年, 07月 15日, 星期二 -- UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set (0)2008年, 07月 13日, 星期日 -- [...]</description><category>WebService和SOA</category><category>SOAP</category><category>设计模式</category><category>WSDL</category><category>schema</category><category>XML</category><pubDate>Tue, 29 Jul 2008 22:28:03 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/07/29/whats-new-in-wsdl-20.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=178</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/07/29/whats-new-in-wsdl-20.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697611/5112837</fs:itemid></item><item><title>SOAP 规范中的 encodingStyle 和 WSDL 中的 binding style 究竟是什么意思</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697612/5112837/1/item.html</link><content:encoded>&lt;p&gt;节选自IBM developerWorks《&lt;a href=&quot;http://www.ibm.com/developerworks/cn/websphere/techjournal/0310_brown/brown.html&quot; target=&quot;_blank&quot;&gt;Web 服务的体系结构和最佳实践&lt;/a&gt;》&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于“编码样式”：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SOAP 规范指定了一个名为“encodingStyle”的模式，它可以取两个值，“encoded”和“literal”。&lt;/p&gt;
&lt;p&gt;编码的（encoded）：指的是 SOAP 规范的第5节，这一节定义了将编程语言的类型映射到 XML 的基本机制。&lt;/p&gt;
&lt;p&gt;文字的（literal）：意味着您不用做这些工作。取而代之的是，这些类型信息是由外部机制提供的，更像使用 XML schema来确切地定义 SOAP 消息中使用的类型的 WSDL 文档。&lt;/p&gt;
&lt;p&gt;这其中的缘故是因为 SOAP 规范是在采用 XML Schema 规范之前编写的。因此，原始的 SOAP 规范必须提供一种方法来指明编码类型信息。与 XML Schema 完全不同的地方是数组。SOAP 规范的5.4.2节指定了一种特别的机制来表示 XML 中的编程语言数组，它使用一种特别的 SOAPEnc:ArraySchema 类型。同时，编码信息（比如 &amp;lt;item xsi:type=&amp;#8221;xsd:string&amp;#8221;&amp;gt;）通常与用 SOAP 编码标准的 SOAP 消息体元素相关联。&lt;/p&gt;
&lt;p&gt;然而，自从采用 XML Schema 之后（您会记得，WSDL用来表示它的类型），大多数语言使用自己的从 XML Schema 到编程语言类型之间的映射（或序列化规则），这使得 SOAP 编码变得过时。因此，推荐不要采用SOAP 编码，而是采用使用文字编码，在文字映射中由 XML Schema 文档（通常是 WSDL 文档的形式）从外部指定映射。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于“绑定样式”：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WSDL 规范在它的 SOAP 绑定中指定了两种不同的“绑定样式”。绑定样式属性的值是“RPC”和“Document”。其含义是，如果一个WSDL文档指定了一种绑定样式属性设置为“RPC”的操作，那么接收者就必须要用 SOAP 规范第7节中的规则来解释消息。这意味着，例如，在 SOAP 体中的 XML 元素（称为“包装的元素”）必须具有一个与将要调用的对应编程语言操作名称相同的名称。在这个元素中的每个消息部分必须（在名称和次序方面）严格地对应于该编程语言操作的参数。最后，必须只有单个的元素返回（这个元素必须命名为 XXXResponse，其中，XXX 是语言中对应的操作的名称），返回元素中严格地只包含一个元素，那是操作的返回值。&lt;/p&gt;
&lt;p&gt;“Document”绑定样式较为宽 松。文档绑定样式中的消息必须仅仅由形式良好、名称空间限定的 XML 组成。由接收它的 SOAP 引擎来决定如何解释它。使用“Document”绑定样式和“Literal”编码来表示 RPC 也是很常见的（例如在 Microsoft 的工具中）。在这样的情况下，发送者将还要遵循 SOAP 规范的第7节中的许多或所有的规则来描述消息，但是要由接收者来决定如何处理这些消息，要么作为一个 RPC 调用，要么作为需要处理的文档。特别地，还有一个外部元素来表示（和命名）操作，而这个元素包括表示消息参数的元素。&lt;/p&gt;
&lt;p&gt;推荐在 WSDL 中使用“Document”绑定样式和“Literal”编码。&lt;/p&gt;
&lt;h3&gt;您可能会对以下内容感兴趣&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 07月 29日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/29/whats-new-in-wsdl-20.html&quot; title=&quot;What&amp;#8217;s New in WSDL 2.0&quot;&gt;What&amp;#8217;s New in WSDL 2.0 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 19日, 星期六 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/19/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-custody-and-ownership-transfer-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Custody and Ownership Transfer API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Custody and Ownership Transfer API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 15日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/15/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-value-set-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 13日, 星期日 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/13/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-security-policy-api-set.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Security Policy API Set&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Security Policy API Set (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 7日, 星期一 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/07/uddi-%e8%a7%84%e8%8c%83-v302-uddi-programmers-apis-%e4%b9%8b-publication-api-set3.html&quot; title=&quot;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Publication API Set(3)&quot;&gt;UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Publication API Set(3) (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/07/25/soap-%e8%a7%84%e8%8c%83%e4%b8%ad%e7%9a%84-encodingstyle-%e5%92%8c-wsdl-%e4%b8%ad%e7%9a%84-binding-style-%e7%a9%b6%e7%ab%9f%e6%98%af%e4%bb%80%e4%b9%88%e6%84%8f%e6%80%9d.html/feed</wfw:commentRss><description>&lt;p&gt;节选自IBM developerWorks《&lt;a href=&quot;http://www.ibm.com/developerworks/cn/websphere/techjournal/0310_brown/brown.html&quot; target=&quot;_blank&quot;&gt;Web 服务的体系结构和最佳实践&lt;/a&gt;》&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于“编码样式”：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SOAP 规范指定了一个名为“encodingStyle”的模式，它可以取两个值，“encoded”和“literal”。&lt;/p&gt;
&lt;p&gt;编码的（encoded）：指的是 SOAP 规范的第5节，这一节定义了将编程语言的类型映射到 XML 的基本机制。&lt;/p&gt;
&lt;p&gt;文字的（literal）：意味着您不用做这些工作。取而代之的是，这些类型信息是由外部机制提供的，更像使用 XML schema来确切地定义 SOAP 消息中使用的类型的 WSDL 文档。&lt;/p&gt;
&lt;p&gt;这其中的缘故是因为 SOAP 规范是在采用 XML Schema 规范之前编写的。因此，原始的 SOAP 规范必须提供一种方法来指明编码类型信息。与 XML Schema 完全不同的地方是数组。SOAP 规范的5.4.2节指定了一种特别的机制来表示 XML 中的编程语言数组，它使用一种特别的 SOAPEnc:ArraySchema 类型。同时，编码信息（比如 &amp;lt;item xsi:type=&amp;#8221;xsd:string&amp;#8221;&amp;gt;）通常与用 SOAP 编码标准的 SOAP 消息体元素相关联。&lt;/p&gt;
&lt;p&gt;然而，自从采用 XML Schema 之后（您会记得，WSDL用来表示它的类型），大多数语言使用自己的从 XML Schema 到编程语言类型之间的映射（或序列化规则），这使得 SOAP 编码变得过时。因此，推荐不要采用SOAP 编码，而是采用使用文字编码，在文字映射中由 XML Schema 文档（通常是 WSDL 文档的形式）从外部指定映射。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关于“绑定样式”：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WSDL 规范在它的 SOAP 绑定中指定了两种不同的“绑定样式”。绑定样式属性的值是“RPC”和“Document”。其含义是，如果一个WSDL文档指定了一种绑定样式属性设置为“RPC”的操作，那么接收者就必须要用 SOAP 规范第7节中的规则来解释消息。这意味着，例如，在 SOAP 体中的 XML 元素（称为“包装的元素”）必须具有一个与将要调用的对应编程语言操作名称相同的名称。在这个元素中的每个消息部分必须（在名称和次序方面）严格地对应于该编程语言操作的参数。最后，必须只有单个的元素返回（这个元素必须命名为 XXXResponse，其中，XXX 是语言中对应的操作的名称），返回元素中严格地只包含一个元素，那是操作的返回值。&lt;/p&gt;
&lt;p&gt;“Document”绑定样式较为宽 松。文档绑定样式中的消息必须仅仅由形式良好、名称空间限定的 XML 组成。由接收它的 SOAP 引擎来决定如何解释它。使用“Document”绑定样式和“Literal”编码来表示 RPC 也是很常见的（例如在 Microsoft 的工具中）。在这样的情况下，发送者将还要遵循 SOAP 规范的第7节中的许多或所有的规则来描述消息，但是要由接收者来决定如何处理这些消息，要么作为一个 RPC 调用，要么作为需要处理的文档。特别地，还有一个外部元素来表示（和命名）操作，而这个元素包括表示消息参数的元素。&lt;/p&gt;
&lt;p&gt;推荐在 WSDL 中使用“Document”绑定样式和“Literal”编码。&lt;/p&gt;
您可能会对以下内容感兴趣2008年, 07月 29日, 星期二 -- What&amp;#8217;s New in WSDL 2.0 (0)2008年, 07月 19日, 星期六 -- UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Custody and Ownership Transfer API Set (0)2008年, 07月 15日, 星期二 -- UDDI 规范 v3.0.2 - UDDI Programmers APIs 之 Value Set API Set (0)2008年, 07月 13日, 星期日 -- UDDI 规范 v3.0.2 - [...]</description><category>WebService和SOA</category><category>SOAP</category><category>WSDL</category><pubDate>Fri, 25 Jul 2008 12:44:43 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/07/25/soap-%e8%a7%84%e8%8c%83%e4%b8%ad%e7%9a%84-encodingstyle-%e5%92%8c-wsdl-%e4%b8%ad%e7%9a%84-binding-style-%e7%a9%b6%e7%ab%9f%e6%98%af%e4%bb%80%e4%b9%88%e6%84%8f%e6%80%9d.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=177</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/07/25/soap-%e8%a7%84%e8%8c%83%e4%b8%ad%e7%9a%84-encodingstyle-%e5%92%8c-wsdl-%e4%b8%ad%e7%9a%84-binding-style-%e7%a9%b6%e7%ab%9f%e6%98%af%e4%bb%80%e4%b9%88%e6%84%8f%e6%80%9d.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697612/5112837</fs:itemid></item><item><title>XML Schema 中 import 和 include 的区别</title><link>http://item.feedsky.com/~feedsky/Openyourthoughts/~7004842/121697613/5112837/1/item.html</link><content:encoded>&lt;p&gt;XML Schema 允许将一个XSD文件分为几个文件存放，在必要时使用 import 或者 include 进行导入。这二者的区别是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;import：只能导入不同命名空间的XSD&lt;/li&gt;
&lt;li&gt;include：只能导入相同命名空间的XSD，或被导入的XSD未声明命名空间&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例子：&lt;/p&gt;
&lt;div&gt;&lt;strong&gt;&amp;lt;xsd:import namespace=”http://acme.com/supplier/types”&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt; schemaLocation=”http://acme.com/supplier/types.xsd”/&amp;gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;lt;xsd:include schemaLocation=&amp;#8221;http://acme.com/supplier/types.xsd&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/div&gt;
&lt;h3&gt;您可能会对以下内容感兴趣&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2008年, 08月 18日, 星期一 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/08/18/xml-schema-%e4%b8%ad-datetime-%e7%b1%bb%e5%9e%8b%e7%9a%84%e8%a7%a3%e9%87%8a.html&quot; title=&quot;XML Schema 中 dateTime 类型的解释&quot;&gt;XML Schema 中 dateTime 类型的解释 (0)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;2008年, 07月 29日, 星期二 -- &lt;a href=&quot;http://blog.baturu.com/index.php/2008/07/29/whats-new-in-wsdl-20.html&quot; title=&quot;What&amp;#8217;s New in WSDL 2.0&quot;&gt;What&amp;#8217;s New in WSDL 2.0 (0)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content:encoded><wfw:commentRss>http://blog.baturu.com/index.php/2008/07/22/xml-schema-%e4%b8%ad-import-%e5%92%8c-include-%e7%9a%84%e5%8c%ba%e5%88%ab.html/feed</wfw:commentRss><description>&lt;p&gt;XML Schema 允许将一个XSD文件分为几个文件存放，在必要时使用 import 或者 include 进行导入。这二者的区别是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;import：只能导入不同命名空间的XSD&lt;/li&gt;
&lt;li&gt;include：只能导入相同命名空间的XSD，或被导入的XSD未声明命名空间&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例子：&lt;/p&gt;
&lt;div&gt;&lt;strong&gt;&amp;lt;xsd:import namespace=”http://acme.com/supplier/types”&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt; schemaLocation=”http://acme.com/supplier/types.xsd”/&amp;gt;&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;&amp;lt;xsd:include schemaLocation=&amp;#8221;http://acme.com/supplier/types.xsd&amp;#8221;/&amp;gt;&lt;/strong&gt;&lt;/div&gt;
您可能会对以下内容感兴趣2008年, 08月 18日, 星期一 -- XML Schema 中 dateTime 类型的解释 (0)2008年, 07月 29日, 星期二 -- What&amp;#8217;s New in WSDL 2.0 (0)</description><category>WebService和SOA</category><category>XML</category><pubDate>Tue, 22 Jul 2008 13:24:01 +0800</pubDate><author>javafuns</author><comments>http://blog.baturu.com/index.php/2008/07/22/xml-schema-%e4%b8%ad-import-%e5%92%8c-include-%e7%9a%84%e5%8c%ba%e5%88%ab.html#comments</comments><guid isPermaLink="false">http://blog.baturu.com/?p=176</guid><dc:creator>javafuns</dc:creator><fs:srclink>http://blog.baturu.com/index.php/2008/07/22/xml-schema-%e4%b8%ad-import-%e5%92%8c-include-%e7%9a%84%e5%8c%ba%e5%88%ab.html</fs:srclink><fs:srcfeed>http://blog.baturu.com/index.php/feed</fs:srcfeed><fs:itemid>feedsky/Openyourthoughts/~7004842/121697613/5112837</fs:itemid></item></channel></rss>