<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>allenBen</title>
    <description></description>
    <link>http://allenben.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>又大了一岁</title>
        <author>allenBen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenben.javaeye.com">allenBen</a>&nbsp;
          链接：<a href="http://allenben.javaeye.com/blog/171441" style="color:red;">http://allenben.javaeye.com/blog/171441</a>&nbsp;
          发表时间: 2008年03月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          23岁了~~又大了一岁<br /><br />23岁做些什么呢？看来真要学习领域知识了，保险业务知识太薄弱了~~~~但是专业知识也不能落下啊<br /><br />难道真的要搞IT一辈子？能混出个什么名堂？感觉前途好渺茫。我不想挣很多钱因为那也不太可能，我只想钱够用、日子过的充实就行！
          <br/>
          <span style="color:red;">
            <a href="http://allenben.javaeye.com/blog/171441#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Mar 2008 16:11:39 +0800</pubDate>
        <link>http://allenben.javaeye.com/blog/171441</link>
        <guid>http://allenben.javaeye.com/blog/171441</guid>
      </item>
      <item>
        <title>Java 处理 XML 方法比较</title>
        <author>allenBen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenben.javaeye.com">allenBen</a>&nbsp;
          链接：<a href="http://allenben.javaeye.com/blog/169030" style="color:red;">http://allenben.javaeye.com/blog/169030</a>&nbsp;
          发表时间: 2008年03月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div align="center"><table class="MsoTableGrid" cellspacing="0" border="1" style="border-collapse: collapse; border: medium none" cellpadding="0"><tbody><tr style="height: 31.2pt"><td valign="top" style="padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 0cm; padding-top: 0cm; height: 31.2pt; background-color: transparent; border: black 1pt solid"><strong><span style="font-size: 10pt; font-family: 'Times New Roman','serif'">Feature</span></strong><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><strong><span style="font-size: 10pt; font-family: 'Times New Roman','serif'">StAX</span></strong><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><strong><span style="font-size: 10pt; font-family: 'Times New Roman','serif'">SAX</span></strong><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><strong><span style="font-size: 10pt; font-family: 'Times New Roman','serif'">DOM</span></strong><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: black 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><strong><span style="font-size: 10pt; font-family: 'Times New Roman','serif'">TrAX</span></strong></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">API Type</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Pull, streaming</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Push, streaming</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">In memory</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">tree XSLT Rule</span></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Ease of Use</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">High</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Medium</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">High</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Medium</span></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">XPath Capability</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">CPU and Memory Efficiency</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Good</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Good</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Varies</span><span></span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Varies</span></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Forward Only</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Read XML</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Write XML</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td></tr><tr style="height: 31.2pt"><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: black 1pt solid; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Create, Read, Update, Delete</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">Yes</span></td><td valign="top" style="border-right: black 1pt solid; padding-right: 5.4pt; border-top: #d4d0c8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #d4d0c8; padding-top: 0cm; border-bottom: black 1pt solid; height: 31.2pt; background-color: transparent"><span style="font-size: 9pt; font-family: 'Times New Roman','serif'">No</span></td></tr></tbody></table></div><div>该表来自规范</div><div>比较以下功能最强大当属DOM，但是对于文档太大那就考验内存了。因为它的吧整个XML文档装入内存~</div><div>SAX只能读</div><div>StAX现代的方式，结合了DOM和SAX的好处，至于结合了二者的弊端没有我还不知道</div><div>（备忘）</div>
          <br/>
          <span style="color:red;">
            <a href="http://allenben.javaeye.com/blog/169030#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 07 Mar 2008 13:11:29 +0800</pubDate>
        <link>http://allenben.javaeye.com/blog/169030</link>
        <guid>http://allenben.javaeye.com/blog/169030</guid>
      </item>
      <item>
        <title>XFire 和 jax-ws 开发WS</title>
        <author>allenBen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenben.javaeye.com">allenBen</a>&nbsp;
          链接：<a href="http://allenben.javaeye.com/blog/169027" style="color:red;">http://allenben.javaeye.com/blog/169027</a>&nbsp;
          发表时间: 2008年03月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div style="text-align: center"><span style="font-size: small"><span style="color: red">XFire 开发WebService</span></span></div><br />1.	Dependences : XFire1.2 WebSite: http://xfire.codehaus.org/<br /><br /><br />2.	服务器端开发：<br />a)	服务器接口：HelloWorldService.java<br />package xfire.test;<br /><br />/**<br /> * HelloWorldService 中声明需要发布成 Web 服务的所有 Java 方法 <br /> * HelloWorldService 作为Web服务接口<br /> */<br />public interface HelloWorldService {<br /><br />    /**<br />     * sayHello 方法声明了 Web 服务对外暴露的接口<br />     * <br />     * @return 返回给客户端的字符串<br />     */<br />    public String say(String str);<br />}<br /><br /><br /><br />b)	HelloWorldService实现类：HelloWorldServiceImpl.java<br />package xfire.test;<br /><br />/**<br /> * HelloWorldServiceImpl 中为 Web 服务接口中声明的所有 Java 方法提供具体现 HelloWorldServiceImpl<br /> * 作为 Web 服务的实现类<br /> */<br />public class HelloWorldServiceImpl implements HelloWorldService {<br /><br />	/*<br />	 * sayHello 方法为 HelloWorldService 服务接口定义的 sayHello 方法提供具体实现 <br />	 */<br />	public String say(String name) {<br />		return "你好:"+name;<br />	}<br /><br />}<br /><br /><br /><br />c)	配置文件service.xml：放置在classpath:META-INF/xfire/service.xml<br />&lt;beans xmlns="http://xfire.codehaus.org/config/1.0"><br />	&lt;service><br />		&lt;name>HelloWorldService&lt;/name><br />		&lt;namespace>http://allen.org/HelloWorldService&lt;/namespace><br />		&lt;serviceClass><br />			xfire.test.HelloWorldService<br />		&lt;/serviceClass><br />		&lt;implementationClass><br />			xfire.test.HelloWorldServiceImpl<br />		&lt;/implementationClass><br />	&lt;/service><br />&lt;/beans><br /><br />Service.xml 配置文件模型：<br />&lt;beans xmlns="http://xfire.codehaus.org/config/1.0"><br />    &lt;xfire><br />        &lt;inHandlers><br />            &lt;handler handlerClass="">&lt;/handler><br />        &lt;/inHandlers><br />    &lt;/xfire><br />    <br />    &lt;service><br />        &lt;name /><br />        &lt;namespace /><br />        &lt;serviceClass /><br />        &lt;implementationClass /><br />        &lt;serviceFactory /><br />        &lt;bindingProvider /><br />        &lt;style>document|rpc|message|wrapped&lt;/style><br />        &lt;use>literal|encoded&lt;/use><br />        &lt;scope>request|session|application&lt;/scope><br />        &lt;invoker /><br />        &lt;executor /><br />        &lt;inHandlers><br />            &lt;handler handlerClass="" /><br />        &lt;/inHandlers><br />        &lt;outHandlers><br />            &lt;handler handlerClass="" /><br />        &lt;/outHandlers><br />        &lt;faultHandlers><br />            &lt;handler handlerClass="" /><br />        &lt;/faultHandlers><br />        <br />        <br />        &lt;method name="" operationName="" soapAction=""<br />                exclude="true|false"><br />            &lt;parameter name="qname" index="" class=""<br />                       header="true|false" mode="" /><br />        &lt;/method><br />        <br />        &lt;createDefaultBindings>true|false&lt;/createDefaultBindings><br />        &lt;bindings><br />            &lt;soap11Binding name="qname" transport=""<br />                           allowUndefinedEndpoints=""><br />                &lt;endpoints><br />                    &lt;endpoint name="qname" url="" /><br />                &lt;/endpoints><br />            &lt;/soap11Binding><br />            &lt;soap12Binding name="qname" transport=""<br />                           allowUndefinedEndpoints=""><br />                &lt;endpoints><br />                    &lt;endpoint name="qname" url="" /><br />                &lt;/endpoints><br />            &lt;/soap12Binding><br />        &lt;/bindings><br />        <br />    &lt;/service><br />    <br />&lt;/beans><br /><br /><br /><br />d)	Web.xml 添加Servlet配置：<br />	&lt;servlet><br />		&lt;servlet-name>XFireServlet&lt;/servlet-name><br />		&lt;servlet-class><br />			org.codehaus.xfire.transport.http.XFireConfigurableServlet<br />		&lt;/servlet-class><br />	&lt;/servlet><br /><br />	&lt;servlet-mapping><br />		&lt;servlet-name>XFireServlet&lt;/servlet-name><br />		&lt;url-pattern>/services/*&lt;/url-pattern><br />&lt;/servlet-mapping><br /><br /><br />	若将以上部署到Servlet容器则访问地址：<br />http://serveraddress:port/项目名/services/ HelloWorldService?WSDL就会出现WSDL页面。<br />客户端根据这个WSDL暴露的服务器端提供的操作进行调用，所以任何可以处理WSDL的都可以用做客户端。<br /><br />3.	XFire作客户端<br />package xfire.test;<br /><br />import java.net.MalformedURLException;<br /><br />import org.codehaus.xfire.client.XFireProxyFactory;<br />import org.codehaus.xfire.service.Service;<br />import org.codehaus.xfire.service.binding.ObjectServiceFactory;<br /><br />public class Client {<br /><br />	public static void main(String[] args) {<br />		Service serviceModel = new ObjectServiceFactory().create(HelloWorldService.class);<br />		try {<br />			HelloWorldService service = (HelloWorldService) new XFireProxyFactory()<br />					.create(serviceModel,"http://localhost:8080/XFire/services/HelloWorldService");<br />			String sss = service.say ("赵本钱");<br />			System.out.println(">>>" + sss);<br />		} catch (MalformedURLException e) {<br />			e.printStackTrace();<br />		}<br />	}<br />}<br /> <br /><div style="text-align: center"><span style="font-size: small"><span style="color: red">使用JAX-WS2.1开发WebService</span></span></div><br />1.	JAX-WS提供了两个很实用的工具：wsgen、wsimport<br />Wsgen根据开发的WebService类生成一些服务器端的辅助类<br />Wsimport根据WSDL文件生成客户端的代码<br />2.	服务器端的WebService代码<br />package org.allen;<br /><br />import javax.jws.WebMethod;<br />import javax.jws.WebParam;<br />import javax.jws.WebService;<br /><br />@WebService(serviceName = "Hello")<br />public class Hello {<br /><br />	@WebMethod(operationName = "say")<br />	public String say(@WebParam<br />			String name) {<br />		return "Hello " + name;<br />	}<br />}<br /><br />3.	Javac –d . org.allen.Hello.java 编译类<br />Wsgen –cp . org.allen.Hello 生成如下文件：<br />		Org.allen.jaxws.Say.java/class<br />		Org.allen.jaxws.SayResponse.java/class<br /><br />添加Main函数<br />	public static void main(String[] args){<br />		Hello hello = new Hello() ;<br />		Endpoint.publish("http://localhost:9000/WS",hello) ;<br />	}<br /><br />然后访问http://localhost:9000/WS/Hello?WSDL可以获取发布的WSDL文件<br />剩余的工作可以用以前的XFire做客户端也可以用JAX-WS提供的方法<br />4.	使用JAX-WS提供的方法做客户端<br />wsimport -p org.allen.client http://localhost:9000/WS/Hello?WSDL<br />生成客户端所需要的文件<br />Hello.java<br />Hello_Service.java<br />ObjectFactory.java<br />package-info.java<br />Say.java<br />SayResponse.java<br /><br />客户端业务逻辑代码：<br />	Hello hello = new HelloService().getHelloPort() ;<br />	System.out.println(hello.say(“Allen”)) ;<br /><br />	输出：<br />	Hello Allen
          <br/>
          <span style="color:red;">
            <a href="http://allenben.javaeye.com/blog/169027#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 07 Mar 2008 13:06:33 +0800</pubDate>
        <link>http://allenben.javaeye.com/blog/169027</link>
        <guid>http://allenben.javaeye.com/blog/169027</guid>
      </item>
      <item>
        <title>XML学习笔记</title>
        <author>allenBen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenben.javaeye.com">allenBen</a>&nbsp;
          链接：<a href="http://allenben.javaeye.com/blog/169023" style="color:red;">http://allenben.javaeye.com/blog/169023</a>&nbsp;
          发表时间: 2008年03月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: 26pt"><strong><span style="font-family: Cambria">XML</span></strong></span></p><p><span style="font-size: 26pt"><strong></strong></span></p><p><span style="font-size: 26pt"><strong></strong></span><span style="font-size: 10pt; color: teal; font-family: 宋体">利用</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">css</span><span style="font-size: 10pt; color: teal; font-family: 宋体">控制</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XML</span><span style="font-size: 10pt; color: teal; font-family: 宋体">的显示方式</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;?xml-stylesheet type=&quot;text/css&quot; href=&quot;simple.css&quot;?&gt;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">但是最好采用</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XSL</span><span style="font-size: 10pt; color: teal; font-family: 宋体">控制</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XML</span><span style="font-size: 10pt; color: teal; font-family: 宋体">的显示方式</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span><strong>&lt;?xml-stylesheet type=&quot;text/xsl&quot; href=&quot;simple.xsl&quot;?&gt;</strong></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XML</span><span style="font-size: 10pt; color: teal; font-family: 宋体">中转义符</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:</span> </p><p>&nbsp;</p><table class="MsoNormalTable" cellspacing="0" border="1" style="width: 50%" width="50%" cellpadding="0"><tbody><tr><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&amp;lt;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;&nbsp;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">less than[</span><span style="font-size: 10pt; color: teal; font-family: 宋体">小于</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">]</span></td></tr><tr><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&amp;gt;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;&nbsp;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">greater than[</span><span style="font-size: 10pt; color: teal; font-family: 宋体">大于</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">]</span></td></tr><tr><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&amp;amp;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&amp;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">ampersand [</span><span style="font-size: 10pt; color: teal; font-family: 宋体">和</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">]</span></td></tr><tr><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&amp;apos;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">'</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">apostrophe[</span><span style="font-size: 10pt; color: teal; font-family: 宋体">省略号</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">]</span></td></tr><tr><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&amp;quot;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&quot;</span></td><td style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">quotation mark[</span><span style="font-size: 10pt; color: teal; font-family: 宋体">引号</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">]</span></td></tr></tbody></table><p>&nbsp;</p><p><span style="font-size: 10pt; color: teal; font-family: 宋体">被解析器忽略的片段</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;![CDATA[ </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span>CDATA</span><span style="font-size: 10pt; color: teal; font-family: 宋体">片断不能包含字符串</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"> &quot;]]&gt;&quot;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">，因此，嵌套</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">CDATA</span><span style="font-size: 10pt; color: teal; font-family: 宋体">片断是不允许</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">]]&gt;</span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><br /></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 26pt"><span style="font-family: Cambria"><strong>XSL</strong></span></span></p><p><span style="font-size: 26pt"><span style="font-family: Cambria"></span></span></p><p><span style="font-size: 26pt"></span><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">1.</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span class="MsoBookTitle"><span style="font-size: 16pt; font-family: 宋体">模式查询语言</span></span><span class="MsoBookTitle"></span></strong><span style="font-size: 10pt; color: teal; font-family: 宋体">通过相关的模式匹配规则表达式从</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XML</span><span style="font-size: 10pt; color: teal; font-family: 宋体">中提取数据的特定语句</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">然后用</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XSL</span><span style="font-size: 10pt; color: teal; font-family: 宋体">中的</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">HTML</span><span style="font-size: 10pt; color: teal; font-family: 宋体">把数据包围起来</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&Oslash;<span style="font-family: 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">选择模式</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:&lt;xsl:for-each&gt; &lt;xsl:value-of&gt;</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&Oslash;<span style="font-family: 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">测试模式</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:&lt;xsl:if&gt; &lt;xsl:choose&gt; &lt;xsl:otherwise&gt; &lt;xsl:when&gt;</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&Oslash;<span style="font-family: 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">匹配模式</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:&lt;xsl:template&gt; &lt;xsl:apply-templates&gt;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></p><p><span class="MsoBookTitle"><span style="font-weight: normal; font-size: 16pt"><span><span style="font-family: Calibri">a)</span><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-weight: normal; font-size: 16pt"><span style="font-family: Calibri">&lt;xsl:for-each&gt;</span></span></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:for-each select=&rdquo;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">条件</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&rdquo; order-by=&rdquo;+/-</span><span style="font-size: 10pt; color: teal; font-family: 宋体">子标记列表</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&rdquo;/&gt;(+</span><span style="font-size: 10pt; color: teal; font-family: 宋体">升序</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"> <span>&ndash;</span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">逆序</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">)</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Select: </span><span style="font-size: 10pt; color: teal; font-family: 宋体">表示满足</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">select</span><span style="font-size: 10pt; color: teal; font-family: 宋体">条件</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Order-by: </span><span style="font-size: 10pt; color: teal; font-family: 宋体">表示对由</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">select</span><span style="font-size: 10pt; color: teal; font-family: 宋体">选定的标记的子标记进行排序</span><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">b)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;xsl:value-of&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:value-of select=&rdquo;pattern&rdquo;/&gt;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Select:</span><span style="font-size: 10pt; color: teal; font-family: 宋体">用来与当前上下文匹配的</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XSL</span><span style="font-size: 10pt; color: teal; font-family: 宋体">式样</span></p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">c)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;X:IF&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:if expr=&rdquo;script-expression&rdquo; language=&rdquo;language-name&rdquo; test=&rdquo;pattern&rdquo;&gt;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Expr: </span><span style="font-size: 10pt; color: teal; font-family: 宋体">脚本语言表达式</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">若为真且通过</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">test</span><span style="font-size: 10pt; color: teal; font-family: 宋体">则输出中显示其中内容</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Language: expr</span><span style="font-size: 10pt; color: teal; font-family: 宋体">属性中表达式的脚本语言类型</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">缺省</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Jscript</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Test: </span><span style="font-size: 10pt; color: teal; font-family: 宋体">设定条件的叙述表达式</span></p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">d)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;xsl:choose&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">无属性值</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">表示一个多选测试的开始</span></p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">e)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;xsl:when&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:when expr=&quot;script-expression&quot; language=&quot;language-name&quot; test=&quot;pattern&quot; &gt;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Expr:</span><span style="font-size: 10pt; color: teal; font-family: 宋体">脚本语言表达式</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">若结果为真且通过</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">test</span><span style="font-size: 10pt; color: teal; font-family: 宋体">则输出中显示其中内容</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: teal; font-family: 宋体">可省略</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">)</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Language:exr</span><span style="font-size: 10pt; color: teal; font-family: 宋体">的脚本语言</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Test:</span><span style="font-size: 10pt; color: teal; font-family: 宋体">源数据测试条件</span></p><p><strong></strong><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">f)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;xsl:otherwise&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">无属性值</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">在多项选择中若不满足</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:when&gt;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">规定的条件则执行此标记</span></p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">g)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span class="MsoBookTitle"><span style="font-size: 16pt; font-family: 宋体">书写模板</span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><span style="font-family: Calibri">&lt;xsl:template&gt;</span></span></span></strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:template match=&rdquo;node-context&rdquo; language=&rdquo;language-name&rdquo;&gt;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Match:</span><span style="font-size: 10pt; color: teal; font-family: 宋体">确定什么样的情况下执行此模板</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Language:</span><span style="font-size: 10pt; color: teal; font-family: 宋体">此模板中执行的脚本语言</span></p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">h)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span class="MsoBookTitle"><span style="font-size: 16pt; font-family: 宋体">调用模板</span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><span style="font-family: Calibri">&lt;xsl:apply-templates&gt;</span></span></span></strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:apply-templates select=&rdquo;pattern&rdquo; order-by=&rdquo;list&rdquo;&gt;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">select: </span><span style="font-size: 10pt; color: teal; font-family: 宋体">确定在此上下文环境中应执行什么模板</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">order-by:</span><span style="font-size: 10pt; color: teal; font-family: 宋体">以</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&rdquo;;&rdquo;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">分隔排序标准</span></p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">i)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;xsl:comment&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">在此元素中的内容</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">xsl</span><span style="font-size: 10pt; color: teal; font-family: 宋体">将它作为注释信息</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">并不显示在浏览器中</span><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">j)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;xsl:copy&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">无属性</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: teal; font-family: 宋体">从</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XML </span><span style="font-size: 10pt; color: teal; font-family: 宋体">文件中拷贝标记中的信息到输出的文件中</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">. </span><span style="font-size: 10pt; color: teal; font-family: 宋体">利用这种模式可以将</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XML </span><span style="font-size: 10pt; color: teal; font-family: 宋体">文档中的非标记信息读取出来</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">利用该标记将其显示出来</span></p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">k)</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt"><strong><span style="font-family: Calibri">&lt;xsl:attribute&gt; &lt;xsl:element&gt;</span></strong></span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">可以在标记中附加一个属性名称或新建一个标记</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,XSL</span><span style="font-size: 10pt; color: teal; font-family: 宋体">不但可以引用</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">HTML</span><span style="font-size: 10pt; color: teal; font-family: 宋体">标记还可以建立新的属性和标记</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">然后结合</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">XML</span><span style="font-size: 10pt; color: teal; font-family: 宋体">一起显示出来</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:attribute name=&rdquo;&rdquo;&gt;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">在标记中新增一个属性</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;xsl:element name=&rdquo;&rdquo;&gt;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">新建一个标记</span><span class="MsoBookTitle"><span style="font-weight: normal; font-size: 16pt"><span style="font-family: Calibri">&nbsp;</span></span></span><span class="MsoBookTitle"><span style="font-weight: normal; font-size: 16pt"><span style="font-family: Calibri">&nbsp;</span></span></span></p><p><span class="MsoBookTitle"><span style="font-weight: normal; font-size: 16pt"></span></span><span class="MsoBookTitle"><span style="font-weight: normal; font-size: 16pt"></span></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><br /></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 26pt"><span style="font-family: Cambria"><strong>XPath</strong></span></span></p><p><span style="font-size: 26pt"><span style="font-family: Cambria"></span></span></p><p><span style="font-size: 26pt"></span><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">2.</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span class="MsoBookTitle"><span style="font-size: 16pt; font-family: 宋体">术语</span></span></strong></p><p><strong><span class="MsoBookTitle"></span></strong></p><p><strong><span class="MsoBookTitle"></span><span class="MsoBookTitle"></span></strong><span><strong>节点</strong></span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">7</span><span style="font-size: 10pt; color: teal; font-family: 宋体">种不同的节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:</span><span style="font-size: 10pt; color: teal; font-family: 宋体">元素</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">属性</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">文本</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">命名空间</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">处理指令</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">注释</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">文档</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: teal; font-family: 宋体">根目录</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">)</span><span style="font-size: 10pt; color: teal; font-family: 宋体">节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></p><p><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">原子值</span></strong><strong></strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">不包含子节点和父节点的节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></p><p><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">条款</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">(Items)</span></strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">条款就是原子值或节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></p><p><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">节点间的关系</span></strong><strong></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">父类元素</span></strong><strong></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">子类元素</span></strong><strong></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">同类元素</span></strong><strong></strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">拥有相同父类元素的节点称为同类元素</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></p><p><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">祖类元素</span></strong><strong></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">孙类元素</span></strong><strong></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></strong></p><p><strong></strong></p><p><strong></strong><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">3.</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span class="MsoBookTitle"><span style="font-size: 16pt"><span style="font-family: Calibri">XPath</span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt; font-family: 宋体">语法</span></span></strong></p><p><strong><span class="MsoBookTitle"></span></strong></p><p><strong><span class="MsoBookTitle"></span><span class="MsoBookTitle"></span></strong><span><strong>选取节点</strong></span> </p><p>&nbsp;</p><table class="MsoNormalTable" cellspacing="0" border="1" style="width: 100%" width="100%" cellpadding="0"><tbody><tr><td valign="top" style="width: 20%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="20%"><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">表达式</span></strong><strong></strong></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">注释</span></strong><strong></strong></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">nodename</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取某节点中的所有子节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">/</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">从根节点处选取</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">//</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取文档中所有匹配的节点，不管该节点位于何处</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">.</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">..</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点的父节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">@</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取属性</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">[]</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">指定条件</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">|</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取多个路径</span></td></tr></tbody></table><p><strong></strong></p><p><strong></strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">例子：</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp; </span>/bookstore/book[last()]</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>/bookstore/book[position()&lt;3]</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>//title[@lang='eng']</span><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span></strong></p><p><strong></strong></p><p><strong></strong><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">选取未知节点</span></strong><strong></strong> </p><p>&nbsp;</p><table class="MsoNormalTable" cellspacing="0" border="1" style="width: 100%" width="100%" cellpadding="0"><tbody><tr><td valign="top" style="width: 20%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="20%"><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">通配符</span></strong><strong></strong></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">说明</span></strong><strong></strong></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">*</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">匹配任意的元素节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">@*</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">匹配任意的属性节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">node()</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">匹配所有类型的节点</span></td></tr></tbody></table><p><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span></strong><span style="font-size: 10pt; color: teal; font-family: 宋体">例子：</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp; </span>/bookstore/*</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //book/title | //book/price</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /bookstore/book/title | </span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //price</span></p><p>&nbsp;</p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">4.</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span class="MsoBookTitle"><span style="font-size: 16pt"><span style="font-family: Calibri">XPath </span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt; font-family: 宋体">坐标值</span></span></strong></p><p><strong><span class="MsoBookTitle"></span></strong></p><p><strong><span class="MsoBookTitle"></span><span class="MsoBookTitle"></span></strong><span><strong>坐标轴</strong>是用于定义当前节点相关的节点集</span> </p><table class="MsoNormalTable" cellspacing="0" border="1" style="width: 100%" width="100%" cellpadding="0"><tbody><tr><td valign="top" style="width: 38%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="38%"><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">方法名称</span></strong><strong></strong></td><td valign="top" style="width: 62%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="62%"><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">结果</span></strong><strong></strong></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">ancestor</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点的祖类元素（父类元素，父类元素的父类元素，以此类推）</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">ancestor-or-self</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点和当前节点的祖类元素（父类元素，父类元素的父类元素，以此类推）</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">attribute</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点的所有属性</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">child</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点的所有子类元素</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">descendant</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点的所有孙类元素（子类元素，子类元素的子类元素，以此类推）</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">descendant-or-self</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点和当前节点的所有孙类（子类元素，子类元素的子类元素，以此类推）</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">following</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取文档中位于当前节点结束标签之后的所有元素</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">following-sibling</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取位于当前节点后的所有同类节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">namespace</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点下的所有命名空间节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">parent</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点的父类节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">preceding</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取文档中所有位于当前节点的起始标签之前的元素</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">preceding-sibling</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取位于当前节点之前的所有同类节点</span></td></tr><tr><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">self</span></td><td valign="top" style="background-color: transparent; border: #d4d0c8; padding: 0.75pt"><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点</span></td></tr></tbody></table><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">区域选择</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">(</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 宋体">语法</span></strong><strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:axisname::nodetest[predicate])</span></strong><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"></span><span style="font-size: 10pt; color: teal; font-family: 宋体">区域选择表达式可以是绝对路径也可以是相对路径</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">绝对路径表达式以</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&rdquo;/&rdquo;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">开始，相对路径则不是</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">两种路径都包含一个或多个层次</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">,</span><span style="font-size: 10pt; color: teal; font-family: 宋体">用</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&rdquo;/&rdquo;</span><span style="font-size: 10pt; color: teal; font-family: 宋体">分隔</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">.</span><span style="font-size: 10pt; color: teal; font-family: 宋体">每个层次都对应当前节点中的一个节点值</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">坐标轴</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: teal; font-family: 宋体">定义目标节点于当前节点的关系结构</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">)</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"></span><span style="font-size: 10pt; color: teal; font-family: 宋体">节点测试</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: teal; font-family: 宋体">在坐标轴中确认某节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">)</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"></span><span style="font-size: 10pt; color: teal; font-family: 宋体">零条件或多条件</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">(</span><span style="font-size: 10pt; color: teal; font-family: 宋体">进一步提取指定的节点集</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">)</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"></span><span style="font-size: 10pt; color: teal; font-family: 宋体">例子</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">:<span>&nbsp;&nbsp; </span>child::node()</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&agrave;</span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点的所有</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">book</span><span style="font-size: 10pt; color: teal; font-family: 宋体">子节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Attribute::lang</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&agrave;</span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点所有</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">lang</span><span style="font-size: 10pt; color: teal; font-family: 宋体">属性值</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Descendant::book</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&agrave;</span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点下所有</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">book</span><span style="font-size: 10pt; color: teal; font-family: 宋体">节点的孙类节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Ancestor::book</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&agrave;</span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">选取当前节点下所有</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">book</span><span style="font-size: 10pt; color: teal; font-family: 宋体">节点的祖类节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></p><p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">Ancestor-or-self::book</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&agrave;</span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">当前节点下所有</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">book</span><span style="font-size: 10pt; color: teal; font-family: 宋体">节点的祖类节点和</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">book</span><span style="font-size: 10pt; color: teal; font-family: 宋体">本节点</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Child::*/child::price</span><span style="font-size: 10pt; color: teal; font-family: Wingdings"><span>&agrave;</span></span><span style="font-size: 10pt; color: teal; font-family: 宋体">当前节点下所有</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">price</span><span style="font-size: 10pt; color: teal; font-family: 宋体">节点的孙类节点</span></p><p>&nbsp;</p><p><span class="MsoBookTitle"><span style="font-size: 16pt"><span><strong><span style="font-family: Calibri">5.</span></strong><span style="font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span></span><strong><span class="MsoBookTitle"><span style="font-size: 16pt"><span style="font-family: Calibri">XPath</span></span></span><span class="MsoBookTitle"><span style="font-size: 16pt; font-family: 宋体">操作符</span></span><span class="MsoBookTitle"></span></strong> </p><p>&nbsp;</p><table class="MsoNormalTable" cellspacing="0" border="1" style="width: 100%" width="100%" cellpadding="0"><tbody><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 宋体">操作符</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">说明</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">案例</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 宋体">返回值</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">|</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">计算两个节点集</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">//book | //cd</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 宋体">返回所有</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">book</span><span style="font-size: 10pt; color: teal; font-family: 宋体">元素和</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">cd</span><span style="font-size: 10pt; color: teal; font-family: 宋体">元素的节点集</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">+</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">加</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">6 + 4</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">10</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">-</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">减</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">6 - 4</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">2</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">*</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">乘</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">6 * 4</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">24</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">div</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">除</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">8 div 4</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">2</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">=</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">等于</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">price=9.80</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 宋体">如结果为</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">9.80</span><span style="font-size: 10pt; color: teal; font-family: 宋体">，则返回</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">true</span><span style="font-size: 10pt; color: teal; font-family: 宋体">；如结果为</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">9.90</span><span style="font-size: 10pt; color: teal; font-family: 宋体">，则返回</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">false</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">!=</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">不等于</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">price!=9.80</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 宋体">如结果为</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">9.90</span><span style="font-size: 10pt; color: teal; font-family: 宋体">，则返回</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">true</span><span style="font-size: 10pt; color: teal; font-family: 宋体">；如结果为</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">9.80</span><span style="font-size: 10pt; color: teal; font-family: 宋体">，则返回</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">false</span></td></tr><tr><td valign="top" style="width: 10.54%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="10%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;&nbsp;</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 宋体">小于</span></td><td valign="top" style="width: 22.02%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="22%"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">price&lt;9.80</span></td><td valign="top" style="width: 45.42%; background-color: transparent; border: #d4d0c8; padding: 0.75pt" width="45%"><span style="font-size: 10pt; color: teal; font-family: 宋体">如结果为</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">9.00</span><span style="font-size: 10pt; color: teal; font-family: 宋体">，则返回</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">true</span><span style="font-size: 10pt; color: teal; font-family: 宋体">；如结果为</span>&lt;span style=&quot;font-size: 10pt; color: teal; font-family: 'Courier New'</td></tr></tbody></table>
          <br/>
          <span style="color:red;">
            <a href="http://allenben.javaeye.com/blog/169023#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 07 Mar 2008 12:54:02 +0800</pubDate>
        <link>http://allenben.javaeye.com/blog/169023</link>
        <guid>http://allenben.javaeye.com/blog/169023</guid>
      </item>
      <item>
        <title>JSR-181 WS注释</title>
        <author>allenBen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenben.javaeye.com">allenBen</a>&nbsp;
          链接：<a href="http://allenben.javaeye.com/blog/169022" style="color:red;">http://allenben.javaeye.com/blog/169022</a>&nbsp;
          发表时间: 2008年03月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">Javax.jws</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">Javax.jws.soap</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-size: small"><span><span style="font-family: Calibri">BEA</span></span><span style="font-family: 宋体">公司提出的</span><span><span style="font-family: Calibri">WebService</span></span><span style="font-family: 宋体">注释规范（</span><span><span style="font-family: Calibri">JSR-181</span></span><span style="font-family: 宋体">）</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-size: small"><span style="font-family: 宋体">与它相关的技术：</span><span><span style="font-family: Calibri">JAX-WS,JAXB,StAX,SAAJ,XML Registries,XML Digital Signature,Security in Web Tier</span></span></span></p><span><span style="font-size: small; font-family: Calibri">&nbsp;</span></span><strong><u><span style="font-size: small"><span style="font-family: 宋体">注释不能避免的问题：</span><span></span></span></u></strong> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">1.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">类型匹配：因为</span><span><span style="font-family: Calibri">JSR-175</span></span><span style="font-family: 宋体">规范注释只能是基本类型，</span><span><span style="font-family: Calibri">String</span></span><span style="font-family: 宋体">，</span><span><span style="font-family: Calibri">Enums</span></span><span style="font-family: 宋体">，比如</span><span><span style="font-family: Calibri">URL</span></span><span style="font-family: 宋体">，只能是字符串，要程序员自己保证该字符串是</span><span><span style="font-family: Calibri">URL</span></span><span style="font-family: 宋体">格式的</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">2.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">保证注释和代码匹配：比如</span><span><span style="font-family: Calibri">@OneWay</span></span><span style="font-family: 宋体">注释的方法就不能有返回值</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">3.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">注释之间必须匹配：比如</span><span><span style="font-family: Calibri">@OneWay</span></span><span style="font-family: 宋体">出现的方法上必须要有</span><span><span style="font-family: Calibri">@WebMethod</span></span><span style="font-family: 宋体">注释出现</span></span></p><span><span style="font-size: small; font-family: Calibri">&nbsp;</span></span><span style="font-size: small"><strong><u><span><span style="font-family: Calibri">WS</span></span></u></strong><strong><u><span style="font-family: 宋体">实现类必须满足的条件</span><span></span></u></strong></span> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">1.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">实现类必须</span><span><span style="font-family: Calibri">public,outer </span></span><span style="font-family: 宋体">，必须不是</span><span><span style="font-family: Calibri">final</span></span><span style="font-family: 宋体">、</span><span><span style="font-family: Calibri">abstract</span></span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">2.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">必须有公共默认</span><span><span style="font-family: Calibri">Constructor</span></span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">3.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">必须没有</span><span><span style="font-family: Calibri">finalize</span></span><span style="font-family: 宋体">方法</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">4.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">在</span><span><span style="font-family: Calibri">class</span></span><span style="font-family: 宋体">级别必须有</span><span><span style="font-family: Calibri">@WebService</span></span><span style="font-family: 宋体">指出该类是</span><span><span style="font-family: Calibri">WS</span></span><span style="font-family: 宋体">类</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">5.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">若类引用一个服务</span><span><span style="font-family: Calibri">endpoint interface</span></span><span style="font-family: 宋体">可以使用</span><span><span style="font-family: Calibri">@WebService.endpointInterface</span></span><span style="font-family: 宋体">，这样该类就必须实现此接口所有方法，该类除了</span><span><span style="font-family: Calibri">@WebService</span></span><span style="font-family: 宋体">和</span><span><span style="font-family: Calibri">@HandlerChain</span></span><span style="font-family: 宋体">注释之外其他所有</span><span><span style="font-family: Calibri">JSR-181</span></span><span style="font-family: 宋体">的注释都不能使用，而且</span><span><span style="font-family: Calibri">@WebService</span></span><span style="font-family: 宋体">必须不能有</span><span><span style="font-family: Calibri">name</span></span><span style="font-family: 宋体">属性</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">6.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">若类中没有</span><span><span style="font-family: Calibri">@WebMethod</span></span><span style="font-family: 宋体">注释而且没有实现</span><span><span style="font-family: Calibri">endpoint interface</span></span><span style="font-family: 宋体">，则所有除开从</span><span><span style="font-family: Calibri">Object</span></span><span style="font-family: 宋体">类中继承的</span><span><span style="font-family: Calibri">public</span></span><span style="font-family: 宋体">方法都被暴露成</span><span><span style="font-family: Calibri">WebMethod</span></span><span style="font-family: 宋体">（除开从继承来的</span><span><span style="font-family: Calibri">@WebMethod.exclude</span></span><span style="font-family: 宋体">也不会被暴露）</span></span></p><span><span style="font-size: small; font-family: Calibri">&nbsp;</span></span><span style="font-size: small"><strong><u><span><span style="font-family: Calibri">WS </span></span></u></strong><strong><u><span style="font-family: 宋体">接口必须满足的条件</span><span></span></u></strong></span> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">1．</span><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">接口必须是</span><span><span style="font-family: Calibri">public,outer</span></span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">2．</span><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">必须包含</span><span><span style="font-family: Calibri">@WebService</span></span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">3．</span><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">可以直接或间接继承</span><span><span style="font-family: Calibri">java.rmi.Remote</span></span><span style="font-family: 宋体">，但不必须</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">4．</span><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">接口中所有方法包含从父接口继承的方法都被暴露成</span><span><span style="font-family: Calibri">WebMethod</span></span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">5．</span><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">接口可以包含其他</span><span><span style="font-family: Calibri">JSR-181</span></span><span style="font-family: 宋体">注释以定制</span><span><span style="font-family: Calibri">Java</span></span><span style="font-family: 宋体">到</span><span><span style="font-family: Calibri">WSDL</span></span><span style="font-family: 宋体">的映射</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">6．</span><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-size: small"><span><span style="font-family: Calibri">@WebService</span></span><span style="font-family: 宋体">中不能设置</span><span><span style="font-family: Calibri">portName,serviceName,endpointInterface</span></span><span style="font-family: 宋体">的值</span></span></p><span><span style="font-size: small; font-family: Calibri">&nbsp;</span></span><span style="font-size: small"><strong><u><span><span style="font-family: Calibri">WS </span></span></u></strong><strong><u><span style="font-family: 宋体">方法必须满足的条件</span><span></span></u></strong></span> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">1.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">方法必须是</span><span><span style="font-family: Calibri">public</span></span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">2.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">方法的参数，返回值，异常必须符合</span><span><span style="font-family: Calibri">JAX-WS2.0 3.6</span></span><span style="font-family: 宋体">中定义的要求</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">3.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">方法可以抛出</span><span><span style="font-family: Calibri">RemoteException</span></span><span style="font-family: 宋体">异常，不是必须</span></span></p><span><span style="font-size: small; font-family: Calibri">&nbsp;</span></span><span style="font-size: small"><strong><u><span><span style="font-family: Calibri">@SOAPBinding</span></span></u></strong><strong><u><span style="font-family: 宋体">使用</span><span></span></u></strong></span> <p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">1.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">使</span><span><span style="font-family: Calibri">Web Service</span></span><span style="font-family: 宋体">使用</span><span><span style="font-family: Calibri">SOAP</span></span><span style="font-family: 宋体">协议</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">2.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-size: small"><span style="font-family: 宋体">可以使用在</span><span><span style="font-family: Calibri">TYPE</span></span><span style="font-family: 宋体">和</span><span><span style="font-family: Calibri">METHOD</span></span><span style="font-family: 宋体">上，作用于</span><span><span style="font-family: Calibri">METHOD</span></span><span style="font-family: 宋体">上其属性</span><span><span style="font-family: Calibri">style</span></span><span style="font-family: 宋体">必须是</span><span><span style="font-family: Calibri">DOCUMENT</span></span><span style="font-family: 宋体">，若是</span><span><span style="font-family: Calibri">RPC</span></span><span style="font-family: 宋体">则会报错</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">3.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span><span style="font-size: small; font-family: Calibri">parameterStyle=BARE/WRAPPED</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">4.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span><span style="font-size: small; font-family: Calibri">style=DOCUMENT/RPC</span></span></p><p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span><span><span style="font-size: small; font-family: Calibri">5.</span><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span><span style="font-size: small; font-family: Calibri">use=ENCODED/LITERAL</span></span></p><span><span style="font-size: small; font-family: Calibri">&nbsp;</span></span><span style="font-size: small"><strong><u><span><span style="font-family: Calibri">WebService </span></span></u></strong><strong><u><span style="font-family: 宋体">类</span><span><span style="font-family: Calibri">Mapping</span></span></u></strong></span> <p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">1. @WebService.endpointInterface<span>&nbsp; </span>WSDL:portType</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">2. @WebService.targetNamespace<span>&nbsp;&nbsp; </span>WSDL:definations<span>&nbsp; </span>targetNamespace</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">3. @WebService.serviceName<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>WSDL:service</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-size: small"><span><span style="font-family: Calibri">4. wsdl:service </span></span><span style="font-family: 宋体">必须包含</span><span><span style="font-family: Calibri">wsdl:port</span></span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-size: small"><span><span style="font-family: Calibri">5. wsdl:port</span></span><span style="font-family: 宋体">必须和</span><span><span style="font-family: Calibri">wsdl:portType </span></span><span style="font-family: 宋体">相同，但可能有不同的绑定</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">6. @WebService.portName<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>wsdl:port</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-size: small"><span><span style="font-family: Calibri">7. wsdl:binding </span></span><span style="font-family: 宋体">没有对应的注释</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">8. @WebMethod.operationName <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>WSDL:operation</span></span></p><p>&nbsp;</p><p>&nbsp;</p><p><strong>JDK 自带工具</strong></p><p>&nbsp;</p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">Wsgen<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>generated web service class with @WebService</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">Wsimport<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>genertated web service from wsdl file</span></span></p><span><span style="font-size: small; font-family: Calibri">&nbsp;</span></span> <p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">Xjc<span>&nbsp;&nbsp;&nbsp; </span>--Schema to Java Class</span></span></p><p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span><span style="font-size: small; font-family: Calibri">Schemagen &ndash; Java Class with annotation to Schema</span></span></p><p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenben.javaeye.com/blog/169022#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 07 Mar 2008 12:48:59 +0800</pubDate>
        <link>http://allenben.javaeye.com/blog/169022</link>
        <guid>http://allenben.javaeye.com/blog/169022</guid>
      </item>
      <item>
        <title>Java 动态编译</title>
        <author>allenBen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenben.javaeye.com">allenBen</a>&nbsp;
          链接：<a href="http://allenben.javaeye.com/blog/152865" style="color:red;">http://allenben.javaeye.com/blog/152865</a>&nbsp;
          发表时间: 2008年01月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
          <br/>
          <span style="color:red;">
            <a href="http://allenben.javaeye.com/blog/152865#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Jan 2008 16:51:53 +0800</pubDate>
        <link>http://allenben.javaeye.com/blog/152865</link>
        <guid>http://allenben.javaeye.com/blog/152865</guid>
      </item>
  </channel>
</rss>