﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-何杨的IT技术博客-随笔分类-WMB</title><link>http://www.blogjava.net/heyang/category/53170.html</link><description>为实现完美而进行探索.</description><language>zh-cn</language><lastBuildDate>Wed, 26 Dec 2012 04:37:28 GMT</lastBuildDate><pubDate>Wed, 26 Dec 2012 04:37:28 GMT</pubDate><ttl>60</ttl><item><title>原样复制原XML的一段XSLT代码</title><link>http://www.blogjava.net/heyang/archive/2011/12/21/366957.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Dec 2011 12:14:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/12/21/366957.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/366957.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/12/21/366957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/366957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/366957.html</trackback:ping><description><![CDATA[说明：以下代码能原样复制输入XML的所有节点和属性，虽说使用ESQL和JavaCompute很容易完成此任务。但是将以下代码稍作修改，就可以对输入进行筛选，剪裁和重构的工作。<br /><br />输入：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">a&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="1"</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">b&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="2"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">3</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">b</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">&gt;</span></div><br />代码：<br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:stylesheet&nbsp;</span><span style="color: #FF0000; ">version</span><span style="color: #0000FF; ">="1.0"</span><span style="color: #FF0000; ">&nbsp;xmlns:xsl</span><span style="color: #0000FF; ">="http://www.w3.org/1999/XSL/Transform"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:template&nbsp;</span><span style="color: #FF0000; ">match</span><span style="color: #0000FF; ">="node()"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:copy</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:apply-templates&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="@*|node()"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:copy</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:template</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:template&nbsp;</span><span style="color: #FF0000; ">match</span><span style="color: #0000FF; ">="@*"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:attribute&nbsp;</span><span style="color: #FF0000; ">namespace</span><span style="color: #0000FF; ">="{namespace-uri()}"</span><span style="color: #FF0000; ">&nbsp;name</span><span style="color: #0000FF; ">="{name()}"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="."</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:attribute</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:template</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:template&nbsp;</span><span style="color: #FF0000; ">match</span><span style="color: #0000FF; ">="text()"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="."</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:template</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:stylesheet</span><span style="color: #0000FF; ">&gt;</span></div></div><br />输出：<br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">a&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="1"</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">b&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="2"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">3</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">b</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">a</span><span style="color: #0000FF; ">&gt;</span></div></div><img src ="http://www.blogjava.net/heyang/aggbug/366957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-12-21 20:14 <a href="http://www.blogjava.net/heyang/archive/2011/12/21/366957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几个XSLT片段</title><link>http://www.blogjava.net/heyang/archive/2011/12/14/366314.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 14 Dec 2011 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/12/14/366314.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/366314.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/12/14/366314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/366314.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/366314.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.使用Substring进行字符串截取输入：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&lt;date&gt;122811&lt;/date&gt;输出：Code highlighting produced by Actipro CodeHig...&nbsp;&nbsp;<a href='http://www.blogjava.net/heyang/archive/2011/12/14/366314.html'>阅读全文</a><img src ="http://www.blogjava.net/heyang/aggbug/366314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-12-14 09:49 <a href="http://www.blogjava.net/heyang/archive/2011/12/14/366314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用XSLT进行XML转换</title><link>http://www.blogjava.net/heyang/archive/2011/12/12/366180.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Mon, 12 Dec 2011 13:26:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/12/12/366180.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/366180.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/12/12/366180.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/366180.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/366180.html</trackback:ping><description><![CDATA[数据源（students.xml）：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml-stylesheet&nbsp;type="text/xsl"&nbsp;href="xsheet.xsl"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">students</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">student&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="123"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Andy</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">69</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">student</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">student&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="345"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">bill</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">88</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">student</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">student&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="678"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Felix</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">96</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">student</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">student&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="987"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Zerg</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">72</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">student</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">student&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="236"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Grrr</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">59</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">score</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">student</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">students</span><span style="color: #0000ff;">&gt;</span></div><br />XSL文件（xsheet.xsl）：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:stylesheet&nbsp;</span><span style="color: #FF0000; ">xmlns:xsl</span><span style="color: #0000FF; ">="http://www.w3.org/1999/XSL/Transform"</span><span style="color: #FF0000; ">&nbsp;version</span><span style="color: #0000FF; ">="1.0"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:template&nbsp;</span><span style="color: #FF0000; ">match</span><span style="color: #0000FF; ">="/"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">成绩单</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">title</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">head</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">table&nbsp;</span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="1"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">caption</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">学生成绩单</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">caption</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">序号</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">ID</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">姓名</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">成绩</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:for-each&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="students/student"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:sort&nbsp;</span><span style="color: #FF0000; ">order</span><span style="color: #0000FF; ">="descending"</span><span style="color: #FF0000; ">&nbsp;&nbsp;select</span><span style="color: #0000FF; ">="score"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:choose</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:when&nbsp;</span><span style="color: #FF0000; ">test</span><span style="color: #0000FF; ">="position()&nbsp;mod&nbsp;2&nbsp;=&nbsp;1"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:attribute&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="style"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">background:#336699;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:attribute</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:when</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:otherwise</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:attribute&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="style"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">background:#00ffcc;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:attribute</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:otherwise</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:choose</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="position()"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="@id"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="name"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:choose</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:when&nbsp;</span><span style="color: #FF0000; ">test</span><span style="color: #0000FF; ">="score&nbsp;&amp;gt;&nbsp;60"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="score"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:when</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:otherwise</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">font&nbsp;</span><span style="color: #FF0000; ">color</span><span style="color: #0000FF; ">="red"</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="score"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">font</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:otherwise</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:choose</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:for-each</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">table</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">br</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">table&nbsp;</span><span style="color: #FF0000; ">border</span><span style="color: #0000FF; ">="1"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">caption</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">统计表格</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">caption</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">总分</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="sum(//score)"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">个数</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="count(/students/student)"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">及格人数</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="count(/students/student[score&nbsp;&gt;&nbsp;60])"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">平均分</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="sum(//score)&nbsp;div&nbsp;count(/students/student)"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">td</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">tr</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">table</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">body</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">html</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:template</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:stylesheet</span><span style="color: #0000FF; ">&gt;</span></div><br />用IE打开数据源文件的效果：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/2011-12-12_XSLT.jpg" height="484" width="478" /><br /><br />XSLT相关知识请参考：<br /><a title="http://soft-app.iteye.com/blog/916652" href="http://soft-app.iteye.com/blog/916652">http://soft-app.iteye.com/blog/916652</a><img src ="http://www.blogjava.net/heyang/aggbug/366180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-12-12 21:26 <a href="http://www.blogjava.net/heyang/archive/2011/12/12/366180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之十五：使用XMLTransformation节点进行XML转换</title><link>http://www.blogjava.net/heyang/archive/2011/12/12/366174.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Mon, 12 Dec 2011 11:44:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/12/12/366174.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/366174.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/12/12/366174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/366174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/366174.html</trackback:ping><description><![CDATA[需要一个Mapping节点时，XMLTansformation节点通常是一个不错的选择，它可以使用XSLT将输入的XML转变成另一种形式的 XML，其开发速度高于在Compute节点中书写ESQL和在JavaCompute节点中书写Java代码，其缺陷在于缺乏访问外部数据的手段，有时 还需要上述两种节点的帮助。<br /> <br /> XMLTransformation节点在Transformation选择项下，需要指定XSL文件的位置，可以通过其StylesheetName和StyleSheetDirectory来指定。以下是一个转换的例子：<br /> <br /> 输入：<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">employees</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">employee&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="001"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Andy</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">employee</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">employee&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="002"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Bill</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">employee</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">employee&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="034"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Cindy</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">employee</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">employees</span><span style="color: #0000FF; ">&gt;</span></div> <br /> 转换XSL：<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:stylesheet&nbsp;</span><span style="color: #FF0000; ">xmlns:xsl</span><span style="color: #0000FF; ">="http://www.w3.org/1999/XSL/Transform"</span><span style="color: #FF0000; ">&nbsp;version</span><span style="color: #0000FF; ">="1.0"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:template&nbsp;</span><span style="color: #FF0000; ">match</span><span style="color: #0000FF; ">="/"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">users</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">xsl:for-each&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="employees/employee"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="position()"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="@id"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="text()"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">xsl:value-of&nbsp;</span><span style="color: #FF0000; ">select</span><span style="color: #0000FF; ">="concat(@id,'_',text())"</span><span style="color: #0000FF; ">/&gt;&lt;/</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:for-each</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">users</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:template</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">xsl:stylesheet</span><span style="color: #0000FF; ">&gt;</span></div> <br /> 输出：<br /> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">users</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">1</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">001</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Andy</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">001_Andy</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">002</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Bill</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">002_Bill</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">3</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">sn</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">034</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">id</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">Cindy</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">name</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">034_Cindy</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">pswd</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">user</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">users</span><span style="color: #0000FF; ">&gt;</span></div> <img src ="http://www.blogjava.net/heyang/aggbug/366174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-12-12 19:44 <a href="http://www.blogjava.net/heyang/archive/2011/12/12/366174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之十四：在JavaCompute节点中删除输入XML中特定属性及自定义NameSpace节点后再输出</title><link>http://www.blogjava.net/heyang/archive/2011/12/09/366004.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Fri, 09 Dec 2011 15:40:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/12/09/366004.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/366004.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/12/09/366004.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/366004.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/366004.html</trackback:ping><description><![CDATA[代码：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.HashSet;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.List;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.Set;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;java.util.regex.Pattern;<br /><br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.ibm.broker.javacompute.MbJavaComputeNode;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.ibm.broker.plugin.MbElement;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.ibm.broker.plugin.MbException;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.ibm.broker.plugin.MbMessage;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.ibm.broker.plugin.MbMessageAssembly;<br /></span><span style="color: #0000FF; ">import</span><span style="color: #000000; ">&nbsp;com.ibm.broker.plugin.MbOutputTerminal;<br /><br /><br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;subflow_JavaCompute&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;MbJavaComputeNode&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;evaluate(MbMessageAssembly&nbsp;inAssembly)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;MbException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbOutputTerminal&nbsp;out&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getOutputTerminal(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">out</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbOutputTerminal&nbsp;alt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;getOutputTerminal(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">alternate</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbMessage&nbsp;inMessage&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;inAssembly.getMessage();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbMessage&nbsp;outMessage&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;MbMessage(inMessage);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbMessageAssembly&nbsp;outAssembly</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;MbMessageAssembly(inAssembly,outMessage);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbElement&nbsp;document</span><span style="color: #000000; ">=</span><span style="color: #000000; ">outMessage.getRootElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbElement&nbsp;root</span><span style="color: #000000; ">=</span><span style="color: #000000; ">document.getLastChild().getFirstChild();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;selfDefNSSet</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;HashSet</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">();// 用来存储自定义的名称空间名<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traverseAndRemoveNils(root,selfDefNSSet);// 遍历节点删除特定属性<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(selfDefNSSet.size()</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traverseAndRemoveSelfDefNSNode(root,selfDefNSSet);// 遍历节点删除自定义名称空间节点<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">(Exception&nbsp;ex){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.propagate(outAssembly);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;traverseAndRemoveNils(MbElement&nbsp;elm,Set</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;selfDefNSSet)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;Exception{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;get&nbsp;all&nbsp;the&nbsp;attributes&nbsp;of&nbsp;current&nbsp;element</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">MbElement</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;attrSet&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(List&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">MbElement</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">)elm.evaluateXPath(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">@*</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(MbElement&nbsp;attr:attrSet){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name</span><span style="color: #000000; ">=</span><span style="color: #000000; ">attr.getName().toString();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;value</span><span style="color: #000000; ">=</span><span style="color: #000000; ">attr.getValue().toString();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(isNillAttr(name,value)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attr.detach();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(isSelfDefNS(name,value)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;arr</span><span style="color: #000000; ">=</span><span style="color: #000000; ">name.split(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selfDefNSSet.add(arr[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attr.detach();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;get&nbsp;all&nbsp;sub&nbsp;elements&nbsp;of&nbsp;current&nbsp;element</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">MbElement</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;nodeset&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(List&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">MbElement</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">)elm.evaluateXPath(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">*</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(MbElement&nbsp;childElm:nodeset){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;recursion</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traverseAndRemoveNils(childElm,selfDefNSSet);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; // 判断是否特定属性，a:nil，b：nil都算<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;isNillAttr(String&nbsp;name,String&nbsp;value){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;patternStr</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">(\\w+)(:nil)</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;result1&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Pattern.matches(patternStr,&nbsp;name);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;result2</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">true</span><span style="color: #000000; ">"</span><span style="color: #000000; ">.equals(value);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;result1</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">result2;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp; // 判断是否自定义名称空间<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;isSelfDefNS(String&nbsp;name,String&nbsp;value){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;patternStr</span><span style="color: #000000; ">=</span><span style="color: #000000; ">"</span><span style="color: #000000; ">(xmlns:)(\\w+)</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;result&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Pattern.matches(patternStr,&nbsp;name);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;result;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;traverseAndRemoveSelfDefNSNode(MbElement&nbsp;elm,Set</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;selfDefNSSet)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;Exception{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name</span><span style="color: #000000; ">=</span><span style="color: #000000; ">elm.getName().toString();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(isSelfDefNSNode(name,selfDefNSSet)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elm.detach();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;get&nbsp;all&nbsp;sub&nbsp;elements&nbsp;of&nbsp;current&nbsp;element</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">MbElement</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;nodeset&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(List&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">MbElement</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">)elm.evaluateXPath(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">*</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(MbElement&nbsp;childElm:nodeset){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;recursion</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;traverseAndRemoveSelfDefNSNode(childElm,selfDefNSSet);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp; // 判读节点是否自定义名称空间的限定名<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">boolean</span><span style="color: #000000; ">&nbsp;isSelfDefNSNode(String&nbsp;name,Set</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;selfDefNSSet){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;arr</span><span style="color: #000000; ">=</span><span style="color: #000000; ">name.split(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">:</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(arr.length</span><span style="color: #000000; ">==</span><span style="color: #000000; ">2</span><span style="color: #000000; ">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;ns</span><span style="color: #000000; ">=</span><span style="color: #000000; ">arr[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;selfDefNSSet.contains(ns);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><br />输入：<br /><div>&lt;contactInfo <span style="color: red;">xmlns:ns1="http://tbccorp.com/Services/CustomerMgt/v1/"</span>&gt;&lt;homePhoneNumber as:b="c"&gt;&lt;key xsi:nil="true"/&gt;&lt;value&gt;&lt;/value&gt;&lt;/homePhoneNumber&gt;&lt;workPhoneNumber&gt;<span style="color: red;">&lt;ns1:a&gt;1644&lt;/ns1:a&gt;</span>&lt;key xsi:nil="true"/&gt;&lt;value <span style="color: red;">ns1:nil="true"</span>&gt;5&lt;/value&gt;&lt;/workPhoneNumber&gt;<span style="color: red;">&lt;ns1:b&gt;1949&lt;/ns1:b&gt;</span>&lt;mobilePhoneNumber <span style="color: red;">xmlns:ns1="http://tbccorp.com/Services/CustomerMgt/v1/"</span>&gt;&lt;key <span style="color: red;">xsi:nil="true"</span>/&gt;&lt;value&gt;3159867097&lt;/value&gt;&lt;/mobilePhoneNumber&gt;&lt;/contactInfo&gt;</div><br />输出：<br /><div>&lt;contactInfo&gt;&lt;homePhoneNumber as:b="c"&gt;&lt;key/&gt;&lt;value/&gt;&lt;/homePhoneNumber&gt;&lt;workPhoneNumber&gt;&lt;key/&gt;&lt;value&gt;5&lt;/value&gt;&lt;/workPhoneNumber&gt;&lt;mobilePhoneNumber&gt;&lt;key/&gt;&lt;value&gt;3159867097&lt;/value&gt;&lt;/mobilePhoneNumber&gt;&lt;/contactInfo&gt;</div><img src ="http://www.blogjava.net/heyang/aggbug/366004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-12-09 23:40 <a href="http://www.blogjava.net/heyang/archive/2011/12/09/366004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之十三:使用在Subflow中比较简陋的Cache设计 增加时效处理</title><link>http://www.blogjava.net/heyang/archive/2011/09/27/359618.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Tue, 27 Sep 2011 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/27/359618.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359618.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/27/359618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359618.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Cache的作用：在并发环境中减少重复性的对后台的调用，从而提高运行效率。Cache必须要做到的：1.保证Cache中的数据与后台系统数据的一致性。2.Cache必须要减少访问后台的操作以提高效率。如果不能同时做到以上两点，则Cache失去了意义。Cache的基本操作：Read（Get）：按键值从Cache中取得想要的数据；Write（Put）：将键值对放到Cache中；Reset（RemoveA...&nbsp;&nbsp;<a href='http://www.blogjava.net/heyang/archive/2011/09/27/359618.html'>阅读全文</a><img src ="http://www.blogjava.net/heyang/aggbug/359618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-27 15:32 <a href="http://www.blogjava.net/heyang/archive/2011/09/27/359618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之十二:使用在Subflow中比较简陋的Cache设计</title><link>http://www.blogjava.net/heyang/archive/2011/09/27/359580.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Tue, 27 Sep 2011 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/27/359580.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359580.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/27/359580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359580.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 注：以下Cache未加时效处理，是比较简陋的Cache方案。AbstractCacheMap基类，用来定义和限制子类的操作：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->package&nbsp;cachemap.base;/**&nbsp;*&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/heyang/archive/2011/09/27/359580.html'>阅读全文</a><img src ="http://www.blogjava.net/heyang/aggbug/359580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-27 10:00 <a href="http://www.blogjava.net/heyang/archive/2011/09/27/359580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之十一:Subflow</title><link>http://www.blogjava.net/heyang/archive/2011/09/23/359322.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Fri, 23 Sep 2011 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/23/359322.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359322.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/23/359322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359322.html</trackback:ping><description><![CDATA[任务：熟悉Subflow的使用<br /><br />Subflow即子流程，当主流程的某个分支较有独立性且复杂是可以采用子流程的形式。<br />子流程必须具备一个Input和Output节点作为输入和输出，而主流程可以通过&#8220;Add Subflow&#8221;的方式将定义好的子流程加入进来，当作一个普通节点来使用。<br /><br /><div>Input和Output节点在Contruction中，以下是使用子流程的一个例子。</div><br />使用了子流程的主流程：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/Subflow01.jpg" height="338" width="820" /><br /><br />定义的子流程：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/Subflow02.jpg" height="319" width="853" /><br /><br />例程：<br /><div><a title="http://www.blogjava.net/Files/heyang/Subflow_0923_01.rar" href="http://www.blogjava.net/Files/heyang/Subflow_0923_01.rar">http://www.blogjava.net/Files/heyang/Subflow_0923_01.rar</a><br /><a title="http://www.blogjava.net/Files/heyang/Subflow_0923_02.rar" href="http://www.blogjava.net/Files/heyang/Subflow_0923_02.rar">http://www.blogjava.net/Files/heyang/Subflow_0923_02.rar</a></div><img src ="http://www.blogjava.net/heyang/aggbug/359322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-23 09:40 <a href="http://www.blogjava.net/heyang/archive/2011/09/23/359322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之十:Java Compute节点</title><link>http://www.blogjava.net/heyang/archive/2011/09/22/359264.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Thu, 22 Sep 2011 08:21:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/22/359264.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359264.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/22/359264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359264.html</trackback:ping><description><![CDATA[任务：使用JavaCompute节点进行XML转化<br /><br />一.如图建立Flow<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/JavaComputeNode01.JPG" height="619" width="948" /><br /><br />二.编辑JavaCompute节点的Java代码如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.ibm.broker.javacompute.MbJavaComputeNode;<br /></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;com.ibm.broker.plugin.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br /><br /><br /></span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;flow_JavaCompute&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;MbJavaComputeNode&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;evaluate(MbMessageAssembly&nbsp;inassembly)&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;MbException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbOutputTerminal&nbsp;out&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getOutputTerminal(</span><span style="color: #000000;">"</span><span style="color: #000000;">out</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;MbOutputTerminal&nbsp;alt&nbsp;=&nbsp;getOutputTerminal("alternate");</span><span style="color: #008000;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbMessage&nbsp;inMessage&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;inassembly.getMessage();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbMessage&nbsp;outMessage&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;MbMessage(inMessage);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbMessageAssembly&nbsp;outAssembly</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;MbMessageAssembly(inassembly,outMessage);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbElement&nbsp;root</span><span style="color: #000000;">=</span><span style="color: #000000;">outMessage.getRootElement();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbElement&nbsp;rootElm</span><span style="color: #000000;">=</span><span style="color: #000000;">root.getLastChild().getFirstChild();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbElement&nbsp;employee1</span><span style="color: #000000;">=</span><span style="color: #000000;">rootElm.createElementAsLastChild(MbElement.TYPE_NAME,</span><span style="color: #000000;">"</span><span style="color: #000000;">empoyee</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #0000ff;">null</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee1.setValue(</span><span style="color: #000000;">"</span><span style="color: #000000;">Andy</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbElement&nbsp;employee2</span><span style="color: #000000;">=</span><span style="color: #000000;">rootElm.createElementAsLastChild(MbElement.TYPE_NAME,</span><span style="color: #000000;">"</span><span style="color: #000000;">empoyee</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #0000ff;">null</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee2.setValue(</span><span style="color: #000000;">"</span><span style="color: #000000;">Bill</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MbElement&nbsp;id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;employee2.createElementAsFirstChild(MbElement.TYPE_NAME_VALUE,</span><span style="color: #000000;">"</span><span style="color: #000000;">id</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">221415</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.propagate(outAssembly);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outMessage.clearMessage();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</span></div><br />三.输入XML如下<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Hy</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;</span></div><br />四.输出XML如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Hy</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">empoyee</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Andy</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">empoyee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">empoyee&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="221415"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Bill</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">empoyee</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;</span></div>注意这里面的代码操作与我们常见XML很不一样，一个是取根节点处，一个是给节点设置值处，一个是给节点增加属性处。<br /><br />五.工程从这里下载<br /><a title="http://www.blogjava.net/Files/heyang/JavaCompute0922_01.rar" href="http://www.blogjava.net/Files/heyang/JavaCompute0922_01.rar">http://www.blogjava.net/Files/heyang/JavaCompute0922_01.rar</a><img src ="http://www.blogjava.net/heyang/aggbug/359264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-22 16:21 <a href="http://www.blogjava.net/heyang/archive/2011/09/22/359264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之九:XML 节点全操作 增补 如何得到UUID</title><link>http://www.blogjava.net/heyang/archive/2011/09/21/359170.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Sep 2011 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/21/359170.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359170.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/21/359170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359170.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359170.html</trackback:ping><description><![CDATA[ESQL:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;">&nbsp;MODULE&nbsp;flow_Compute<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;">&nbsp;Main()&nbsp;</span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;">&nbsp;BOOLEAN<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.uuid&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;UUIDASCHAR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.uuid2&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;UUIDASBLOB;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.(XML.Attribute)id&nbsp;</span><span style="color: #808080;">=</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">123</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.name&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Felix</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.age&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">33</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">1</span><span style="color: #ff0000;">]</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Dalian&nbsp;88</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">2</span><span style="color: #ff0000;">]</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Beijing&nbsp;188</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">3</span><span style="color: #ff0000;">]</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Shanghai&nbsp;288</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.title.VALUE&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.salary&nbsp;VALUE&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.Comments.(XML.Content)</span><span style="color: #808080;">=</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;">&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;MODULE;</span></div><br />Result XML:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">employee&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="123"</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">uuid</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">1d1932fe-b2a9-484d-8d32-e70440288914</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">uuid</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">uuid2</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">239143b0384e46ff9bb50a34c8b28732</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">uuid2</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Felix</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">33</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Dalian&nbsp;88</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Beijing&nbsp;188</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Shanghai&nbsp;288</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">salary</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">salary</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">Comments</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;</span></div><img src ="http://www.blogjava.net/heyang/aggbug/359170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-21 16:52 <a href="http://www.blogjava.net/heyang/archive/2011/09/21/359170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之九:XML 节点全操作</title><link>http://www.blogjava.net/heyang/archive/2011/09/21/359167.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Sep 2011 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/21/359167.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359167.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/21/359167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359167.html</trackback:ping><description><![CDATA[Compute节点的ESQL是：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;">&nbsp;MODULE&nbsp;flow_Compute<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;">&nbsp;Main()&nbsp;</span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;">&nbsp;BOOLEAN<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;XML操作示例</span><span style="color: #008080;"><br /></span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.(XML.Attribute)id&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">001</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.name&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Felix</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.age&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">33</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">1</span><span style="color: #ff0000;">]</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Dalian&nbsp;88</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">2</span><span style="color: #ff0000;">]</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Beijing&nbsp;188</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.address</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">3</span><span style="color: #ff0000;">]</span><span style="color: #000000;">&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">Shanghai&nbsp;288</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.title.VALUE&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.salary&nbsp;VALUE&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employee.Comments.(XML.Content)</span><span style="color: #808080;">=</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;">&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;MODULE;</span></div><br />最终得到的XML是：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">employee&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="001"</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Felix</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">33</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Dalian&nbsp;88</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Beijing&nbsp;188</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Shanghai&nbsp;288</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">address</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">/&gt;&lt;</span><span style="color: #800000;">salary</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">salary</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">Comments</span><span style="color: #0000ff;">/&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;</span></div><br />工程下载：<br /><div><a title="http://www.blogjava.net/Files/heyang/ESqlTest0921_02.rar" href="http://www.blogjava.net/Files/heyang/ESqlTest0921_02.rar">http://www.blogjava.net/Files/heyang/ESqlTest0921_02.rar</a></div><img src ="http://www.blogjava.net/heyang/aggbug/359167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-21 16:13 <a href="http://www.blogjava.net/heyang/archive/2011/09/21/359167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之八:XML 节点之Attribute操作</title><link>http://www.blogjava.net/heyang/archive/2011/09/21/359151.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Sep 2011 05:22:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/21/359151.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359151.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/21/359151.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359151.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359151.html</trackback:ping><description><![CDATA[任务：给根节点加上属性。<br /><br />步骤：<br />仍然是使用一个MQ input节点，一个MQ output节点和一个Compute节点，Compute节点的ESql如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;">&nbsp;MODULE&nbsp;flow_Compute<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;">&nbsp;Main()&nbsp;</span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;">&nbsp;BOOLEAN<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;InputRoot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">Integer</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">Count</span><span style="color: #808080;">=</span><span style="color: #000000;">CARDINALITY(InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[]</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.employees.(XML.Attribute)</span><span style="color: #ff00ff;">count</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">Count</span></strong><span style="color: #000000;"><strong>;</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;">&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;MODULE;</span></div><br />上图粗体部分为关键，它的作用是给employees节点增加了一个属性Count.<br /><br />输入的XML分别如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">001</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">张飞</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">28</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">002</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">关羽</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">29</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">003</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">赵云</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">30</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;</span></div><br /><div>输入和输出的XML分别如下：</div><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">employees&nbsp;</span><strong><span style="color: #ff0000;">count</span><span style="color: #0000ff;">="3"</span></strong><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">001</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">张飞</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">28</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">002</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">关羽</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">29</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">003</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">赵云</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">30</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;</span><br /><br />工程下载：<br /><div><a title="http://www.blogjava.net/Files/heyang/ESqlTest0921_01.rar " href="http://www.blogjava.net/Files/heyang/ESqlTest0921_01.rar ">http://www.blogjava.net/Files/heyang/ESqlTest0921_01.rar </a></div><img src ="http://www.blogjava.net/heyang/aggbug/359151.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-21 13:22 <a href="http://www.blogjava.net/heyang/archive/2011/09/21/359151.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之七:XML遍历 （使用For 循环）</title><link>http://www.blogjava.net/heyang/archive/2011/09/21/359141.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Sep 2011 03:29:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/21/359141.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359141.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/21/359141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359141.html</trackback:ping><description><![CDATA[其它和前例一样，但遍历代码如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;">&nbsp;MODULE&nbsp;flow_Compute<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;">&nbsp;Main()&nbsp;</span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;">&nbsp;BOOLEAN<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;员工总数</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;得到XML中员工总数</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">Count</span><span style="color: #808080;">=</span><span style="color: #000000;">CARDINALITY(InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[]</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;员工姓名汇总</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;Names&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Names</span><span style="color: #808080;">=</span><span style="color: #ff0000;">''</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;最大年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;MaxAge&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;年龄合计</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;SumAge&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;当前年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;CurrAge&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;循环变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #0000ff;">FOR</span><span style="color: #000000;">&nbsp;CurrItem&nbsp;</span><span style="color: #0000ff;">AS</span><span style="color: #000000;">&nbsp;InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[]</span></strong><span style="color: #000000;"><strong>&nbsp;DO</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;字符串拼接&nbsp;</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names&nbsp;</span><span style="color: #808080;">||</span><span style="color: #000000;">&nbsp;CurrItem.name&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names&nbsp;</span><span style="color: #808080;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">,</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;字符串转换成整数再进行年龄合计&nbsp;</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;CurrAge&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">CAST</span><span style="color: #000000;">(CurrItem.age&nbsp;</span><span style="color: #0000ff;">AS</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;SumAge</span><span style="color: #808080;">=</span><span style="color: #000000;">SumAge</span><span style="color: #808080;">+</span><span style="color: #000000;">CurrAge;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;得到最大年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">IF</span><span style="color: #000000;">&nbsp;MaxAge</span><span style="color: #808080;">&lt;</span><span style="color: #000000;">CurrAge&nbsp;</span><span style="color: #0000ff;">THEN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;MaxAge</span><span style="color: #808080;">=</span><span style="color: #000000;">CurrAge;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">IF</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FOR</span></strong><span style="color: #000000;"><strong>;</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;平均年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;AvgAge&nbsp;</span><span style="color: #000000; font-weight: bold;">FLOAT</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;AvgAge</span><span style="color: #808080;">=</span><span style="color: #000000;">SumAge</span><span style="color: #808080;">/</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;拼接输出XML</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.</span><span style="color: #ff00ff;">count</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.maxAge</span><span style="color: #808080;">=</span><span style="color: #000000;">MaxAge;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.avgAge</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">CAST</span><span style="color: #000000;">(AvgAge&nbsp;</span><span style="color: #0000ff;">AS</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;">&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /><br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;MODULE;<br /></span></div><br />相比较而言，这种方式更简洁方便。<br /><br />下载地址：<br /><a href="http://www.blogjava.net/Files/heyang/ESqlTest0920_02.rar" title="http://www.blogjava.net/Files/heyang/ESqlTest0920_02.rar">http://www.blogjava.net/Files/heyang/ESqlTest0920_02.rar</a><img src ="http://www.blogjava.net/heyang/aggbug/359141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-21 11:29 <a href="http://www.blogjava.net/heyang/archive/2011/09/21/359141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之七:XML遍历</title><link>http://www.blogjava.net/heyang/archive/2011/09/21/359135.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Wed, 21 Sep 2011 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/21/359135.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359135.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/21/359135.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359135.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359135.html</trackback:ping><description><![CDATA[任务：将如下输入XML变成如下输出XML<br />输入XML：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">001</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">张飞</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">28</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">002</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">关羽</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">29</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">003</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">id</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">赵云</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">name</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">30</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">age</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employee</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">employees</span><span style="color: #0000ff;">&gt;</span></div><br />输出XML：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">summary</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">count</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">3</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">count</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">names</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">张飞,关羽,赵云,</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">names</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">maxAge</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">30</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">maxAge</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">avgAge</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">2.9E+1</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">avgAge</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">summary</span><span style="color: #0000ff;">&gt;</span></div><br />我们需要做一个Input节点和一个Output节点以及一个Comput节点，并设置Compute节点的ESQL如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;"></span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;">&nbsp;MODULE&nbsp;flow_Compute<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;">&nbsp;Main()&nbsp;</span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;">&nbsp;BOOLEAN<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;员工总数</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;得到XML中员工总数</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">Count</span><span style="color: #808080;">=</span><span style="color: #000000;">CARDINALITY(InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[]</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;员工姓名汇总</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;Names&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Names</span><span style="color: #808080;">=</span><span style="color: #ff0000;">''</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;最大年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;MaxAge&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;年龄合计</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;SumAge&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;当前年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;CurrAge&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;循环变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;I&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">WHILE</span><span style="color: #000000;">&nbsp;I</span><span style="color: #808080;">&lt;=</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">&nbsp;DO<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;字符串拼接</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names&nbsp;</span><span style="color: #808080;">||</span><span style="color: #000000;">&nbsp;InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">I</span><span style="color: #ff0000;">]</span><span style="color: #000000;">.name&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names&nbsp;</span><span style="color: #808080;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">,</span><span style="color: #ff0000;">'</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;字符串转换成整数再进行年龄合计</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;CurrAge&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">CAST</span><span style="color: #000000;">(InputRoot.XML.employees.employee</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">I</span><span style="color: #ff0000;">]</span><span style="color: #000000;">.age&nbsp;</span><span style="color: #0000ff;">AS</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;SumAge</span><span style="color: #808080;">=</span><span style="color: #000000;">SumAge</span><span style="color: #808080;">+</span><span style="color: #000000;">CurrAge;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;得到最大年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">IF</span><span style="color: #000000;">&nbsp;MaxAge</span><span style="color: #808080;">&lt;</span><span style="color: #000000;">CurrAge&nbsp;</span><span style="color: #0000ff;">THEN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;MaxAge</span><span style="color: #808080;">=</span><span style="color: #000000;">CurrAge;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">IF</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;I</span><span style="color: #808080;">=</span><span style="color: #000000;">I</span><span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">WHILE</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;平均年龄</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;AvgAge&nbsp;</span><span style="color: #000000; font-weight: bold;">FLOAT</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;AvgAge</span><span style="color: #808080;">=</span><span style="color: #000000;">SumAge</span><span style="color: #808080;">/</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;拼接输出XML</span><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.</span><span style="color: #ff00ff;">count</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">Count</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.names</span><span style="color: #808080;">=</span><span style="color: #000000;">Names;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.maxAge</span><span style="color: #808080;">=</span><span style="color: #000000;">MaxAge;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.summary.avgAge</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">CAST</span><span style="color: #000000;">(AvgAge&nbsp;</span><span style="color: #0000ff;">AS</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;">&nbsp;TRUE;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /><br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;MODULE;<br /></span></div><br />本例工程下载地址：<br /><a title="http://www.blogjava.net/Files/heyang/ESqlTest0920_01.rar" href="http://www.blogjava.net/Files/heyang/ESqlTest0920_01.rar">http://www.blogjava.net/Files/heyang/ESqlTest0920_01.rar</a><img src ="http://www.blogjava.net/heyang/aggbug/359135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-21 10:59 <a href="http://www.blogjava.net/heyang/archive/2011/09/21/359135.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之六:RouteToLabel节点之多Label导向  增补</title><link>http://www.blogjava.net/heyang/archive/2011/09/20/359054.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Tue, 20 Sep 2011 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/20/359054.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359054.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/20/359054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359054.html</trackback:ping><description><![CDATA[任务：由于上一节传递到OutQ和OutQ1中的地址仍为原来的形式，现需要修改成对应的文字，即把<div>&lt;address&gt;大连/上海&lt;/address&gt;变成&lt;address&gt;大连&lt;/address&gt;或&lt;address&gt;上海&lt;/address&gt;的形式。<br /><br />1.修改Compute节点的ESQL，增加修改输出XML的一句：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;">&nbsp;MODULE&nbsp;flow_Compute<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;">&nbsp;Main()&nbsp;</span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;">&nbsp;BOOLEAN<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;Address&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;Addresses&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">&nbsp;InputRoot.XML.mail.address;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;I&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;J&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">LEN</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;LENGTH(Addresses);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">WHILE</span><span style="color: #000000;">&nbsp;(I</span><span style="color: #808080;">&lt;</span><span style="color: #ff00ff;">LEN</span><span style="color: #000000;">)&nbsp;DO<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;InputRoot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;J</span><span style="color: #808080;">=</span><span style="color: #000000;">I</span><span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Address</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">SUBSTRING</span><span style="color: #000000;">(Addresses&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;J&nbsp;</span><span style="color: #0000ff;">FOR</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot.XML.mail.address</span><span style="color: #808080;">=</span><span style="color: #000000;">Address;</span><span style="color: #008080;">--</span><span style="color: #008080;">&nbsp;修改输出的地址部分</span></strong><span style="color: #008080;"><br /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputLocalEnvironment.Destination.RouterList.DestinationData</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">1</span><span style="color: #ff0000;">]</span><span style="color: #000000;">.labelName&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;Address;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROPAGATE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;I</span><span style="color: #808080;">=</span><span style="color: #000000;">J</span><span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">WHILE</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;">&nbsp;FALSE;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /><br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;MODULE;<br /><br /></span></div><br /><div>2.下图显示了修改地址后的结果：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouterToLabelMulti05.jpg" height="377" width="1060" /><br /><br />-The End-</div></div><img src ="http://www.blogjava.net/heyang/aggbug/359054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-20 10:51 <a href="http://www.blogjava.net/heyang/archive/2011/09/20/359054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之六:RouteToLabel节点之多Label导向</title><link>http://www.blogjava.net/heyang/archive/2011/09/20/359052.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Tue, 20 Sep 2011 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/20/359052.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359052.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/20/359052.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359052.html</trackback:ping><description><![CDATA[任务：ESQL中字符串处理<br /><br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouterToLabelMulti04.jpg" height="482" width="978" /><br />1.继续沿用上次的工程，注意修改两个Label节点的Label Name为汉字形式，并改写Compute节点的ESQL如下：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">COMPUTE</span><span style="color: #000000;">&nbsp;MODULE&nbsp;flow_Compute<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">CREATE</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">FUNCTION</span><span style="color: #000000;">&nbsp;Main()&nbsp;</span><span style="color: #0000ff;">RETURNS</span><span style="color: #000000;">&nbsp;BOOLEAN<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">BEGIN</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;Address&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;Addresses&nbsp;</span><span style="color: #000000; font-weight: bold;">CHARACTER</span><span style="color: #000000;">&nbsp;InputRoot.XML.mail.address;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;I&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">0</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;J&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">DECLARE</span><span style="color: #000000;">&nbsp;</span><span style="color: #ff00ff;">LEN</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000; font-weight: bold;">INTEGER</span><span style="color: #000000;">&nbsp;LENGTH(Addresses);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">WHILE</span><span style="color: #000000;">&nbsp;(I</span><span style="color: #808080;">&lt;</span><span style="color: #ff00ff;">LEN</span><span style="color: #000000;">)&nbsp;DO<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputRoot&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;InputRoot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;J</span><span style="color: #808080;">=</span><span style="color: #000000;">I</span><span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">1</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;Address</span><span style="color: #808080;">=</span><span style="color: #ff00ff;">SUBSTRING</span><span style="color: #000000;">(Addresses&nbsp;</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;J&nbsp;</span><span style="color: #0000ff;">FOR</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;OutputLocalEnvironment.Destination.RouterList.DestinationData</span><span style="color: #ff0000;">[</span><span style="color: #ff0000;">1</span><span style="color: #ff0000;">]</span><span style="color: #000000;">.labelName&nbsp;</span><span style="color: #808080;">=</span><span style="color: #000000;">&nbsp;Address;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROPAGATE;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;I</span><span style="color: #808080;">=</span><span style="color: #000000;">J</span><span style="color: #808080;">+</span><span style="color: #800000; font-weight: bold;">2</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">WHILE</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">RETURN</span><span style="color: #000000;">&nbsp;FALSE;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">END</span><span style="color: #000000;">;<br /><br /></span><span style="color: #0000ff;">END</span><span style="color: #000000;">&nbsp;MODULE;</span></div><br />2.将以下文本传入InQ：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #808080;">&lt;</span><span style="color: #000000;">mail</span><span style="color: #808080;">&gt;&lt;</span><span style="color: #000000;">id</span><span style="color: #808080;">&gt;</span><span style="color: #800000; font-weight: bold;">0001</span><span style="color: #808080;">&lt;/</span><span style="color: #000000;">id</span><span style="color: #808080;">&gt;&lt;</span><span style="color: #000000;">address</span><span style="color: #808080;">&gt;</span><span style="color: #000000;">大连</span><span style="color: #808080;">/</span><span style="color: #000000;">上海</span><span style="color: #808080;">&lt;/</span><span style="color: #000000;">address</span><span style="color: #808080;">&gt;&lt;/</span><span style="color: #000000;">mail</span><span style="color: #808080;">&gt;</span></div><br />3.OutQ和OutQ1都将收到信息，如下图显示。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouterToLabelMulti01.jpg" height="415" width="1111" /><br /><br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouterToLabelMulti02.jpg" height="396" width="1089" /><br /><br />4.本例工程下载地址<br /><a href="http://www.blogjava.net/Files/heyang/InputOutputTest0919.rar">http://www.blogjava.net/Files/heyang/InputOutputTest0919.rar</a><br /><br />-The End-<img src ="http://www.blogjava.net/heyang/aggbug/359052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-20 10:34 <a href="http://www.blogjava.net/heyang/archive/2011/09/20/359052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之五:RouteToLabel节点</title><link>http://www.blogjava.net/heyang/archive/2011/09/19/359004.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Mon, 19 Sep 2011 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/19/359004.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/359004.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/19/359004.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/359004.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/359004.html</trackback:ping><description><![CDATA[任务：熟悉RouteToLabel节点，Label节点及Catch的使用<br /><br />1.RouteToLabel节点在Routing下，与Filter节点在一起，label节点也在里面。如下图拖拽出一个RouteToLabel节点，两个Label节点。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel01.jpg" height="499" width="1008" /><br /><br />2.再增加一个MQ Output节点Mq output2，关联到OutQ3。这个节点作用是当Compute导向出现异常（如address是深圳）时将信息发到OutQ3上。注意MQ<div>Mq output2到Mq Input的连线的起点和终点。</div><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel02.jpg" height="615" width="1001" /><br /><br />3.设置Compute节点的Compute Mode类型为ALL，这是为了在其中书写新的ESQL做的准备。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel03.jpg" height="546" width="1118" /><br /><br />4.编辑Compute节点的新的ESQL。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel04.jpg" height="241" width="960" /><br /><div>SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelName = InputRoot.XML.mail.address;</div>这条语句会查看输入XML的mail节点的address节点的内容，如果能找到对应（mail节点的address节点的内容==Label节点的Label Name）的Label节点，则将消息导向到这个Label的后端；如果找不到的话，则将信息导向到Compute节点来源节点的catch端。<br /><br />5.设置Label节点一（大连）的Label Name。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel05.jpg" height="512" width="992" /><br /><br />6.设置Label节点二（上海）的Label Name。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel06.jpg" height="511" width="995" /><br /><br />7.给各条连线加上断点，用以观察消息的流向。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel07.jpg" /><br /><br />8.当消息为&#8220;&lt;mail&gt;&lt;id&gt;0001&lt;/id&gt;&lt;address&gt;dalian&lt;/address&gt;&lt;/mail&gt;&#8221;时，如愿，消息被导向到了MQ Output。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/RouteToLabel08.jpg" height="671" width="1038" /><br /><br />-The End-<img src ="http://www.blogjava.net/heyang/aggbug/359004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-19 17:13 <a href="http://www.blogjava.net/heyang/archive/2011/09/19/359004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之四:Filter节点</title><link>http://www.blogjava.net/heyang/archive/2011/09/19/358993.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Mon, 19 Sep 2011 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/19/358993.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/358993.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/19/358993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/358993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/358993.html</trackback:ping><description><![CDATA[任务：熟悉Filter节点的使用。<br /><br />1.Filter节点在Routing菜单下。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode01.jpg" height="619" width="1005" /><br /><br />2.增加一个Filter节点和一个Output节点（与OutQ1关联），并如下连线。注意Filter的出口，MQ output是连到False口，而MQ Output1是连到true口。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode02.jpg" height="428" width="998" /><br /><br />3.连线完毕后Filter节点出现错误状态，此时我们需要编辑其ESQL，附带也把Compute节点的ESQL也编辑一下。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode03.jpg" height="626" width="964" /><br /><br />4.以下是Compute节点和Filter节点的新SQL。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode08.jpg" height="626" width="506" /><br /><br />5.启动测试后，向InQ输入XML文本如下：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode06.jpg" height="492" width="967" /><br /><br /><br />6.OutQ1收到了转化分流后的结果，其内容正是我们想要的。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode07.jpg" height="327" width="1122" /><br /><br />7.让我们改变一下小明的分数再测试一下：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode09.jpg" height="480" width="819" /><br /><br />8.结果如ESQL所料，OutQ得到了最终的信息。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/FilterNode10.jpg" height="370" width="1126" /><br /><br />-The end-<img src ="http://www.blogjava.net/heyang/aggbug/358993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-19 15:42 <a href="http://www.blogjava.net/heyang/archive/2011/09/19/358993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之三:Compute节点</title><link>http://www.blogjava.net/heyang/archive/2011/09/19/358992.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Mon, 19 Sep 2011 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/19/358992.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/358992.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/19/358992.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/358992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/358992.html</trackback:ping><description><![CDATA[任务：熟悉Compute节点的使用及ESQL的基本写法。<br />注意：本节其它节点属性和上一节一样。<br /><br />1.Compute节点在Transformation菜单下：<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/ComputeNode01.jpg" height="513" width="411" /><br /><br />2.在MQInput节点和MQ Output节点之间插入一个Compute节点。由于没有设置节点属性，此时节点带有错误图标。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/ComputeNode02.jpg" height="385" width="915" /><br /><br />3.右键点击Compute节点，点击&#8220;Open ESQL&#8221;菜单。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/ComputeNode03.jpg" height="616" width="588" /><br /><br />4.在打开的窗口中输入下面文字。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/ComputeNode04.jpg" height="405" width="754" /><br />第一句意思是从输入内容赋值到输出内容。<br />第二句意思是在employee节点下增加cnname节点<br />第三句意思是删除原有employee节点下的name节点<br />其它语句都是固定写法。<br /><br />5.在InQ中输入XML文本，待会看看进过Compute节点转化后这段文本会变成什么样子。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/ComputeNode05.jpg" height="513" width="887" /><br /><br />6.查看OutQ中的输出结果，确实达到了ESQL语句的目的。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/ComputeNode06.jpg" height="384" width="1101" /><br /><br />7.使用rfhutil.exe读取OutQ中的内容。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/ComputeNode07.jpg" height="596" width="734" /><br /><br />-The end-<img src ="http://www.blogjava.net/heyang/aggbug/358992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-19 14:53 <a href="http://www.blogjava.net/heyang/archive/2011/09/19/358992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之二:Input与Output节点</title><link>http://www.blogjava.net/heyang/archive/2011/09/19/358983.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Mon, 19 Sep 2011 05:09:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/19/358983.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/358983.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/19/358983.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/358983.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/358983.html</trackback:ping><description><![CDATA[目的：学习使用Input和Output节点并继续熟悉WMB环境。<br /><br />1.右键点击项目区，选择新建&#8220;Message Flow Project&#8221;.<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt01.jpg" height="723" width="539" /><br /><br />2.右键点击刚才创建的项目，在其下建立一个&#8220;Message Flow&#8221;。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt02.jpg" height="737" width="601" /><br /><br />3.点击刚才创建的flow.msgflow，拖曳出一个MQInput节点和MQOutput节点。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt03.jpg" height="370" width="596" /><br /><br />4.点击下图红框中的图标，将两个节点连接起来。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt04.jpg" height="477" width="938" /><br /><br />5.如下图所示，注意箭头的起点位置。下图图标显示了错误和警告，这表示应该设置它们的属性，使其能和Queue对应起来。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt05.jpg" height="293" width="426" /><br /><br />6.打开Websphere MQ Explorer，在Queue manager "MB7QMGR"下建立两个消息队列，取名为InQ和OutQ。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt06.jpg" height="425" width="738" /><br /><br />7.右键点击MQ Input节点，点击属性，在下面的Q name处写入InQ。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt07.jpg" height="693" width="746" /><br /><br />8.邮件点击MQ Output节点，在属性中指定Queue manager name和Queue Name。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt08.jpg" height="674" width="761" /><br /><br />9.在项目下创建一个Message Broker Archive.这个用来将项目打包发布。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt09.jpg" height="421" width="602" /><br /><br />10.点击刚才创建的bar.bar，在右边点击按钮&#8220;Build Broker Archive&#8221;。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt10.jpg" height="569" width="853" /><br /><br />11.在IBM Websphere MQ Explorer中，右键点击InQ，选择&#8220;Put Test meesage&#8221;菜单。断点状态显示信息已经从MQ Input节点发送了出来。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt11.jpg" height="656" width="1127" /><br /><br />12.将断点跑完，再在MQ Explorer中右键点击OutQ，选择&#8220;browse message&#8221;菜单，在弹出的窗口中可以看到，信息已经发送到了OutQ中。<br /><img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/InputOupt12.jpg" height="417" width="1168" /><br /><br />-The End-<img src ="http://www.blogjava.net/heyang/aggbug/358983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-19 13:09 <a href="http://www.blogjava.net/heyang/archive/2011/09/19/358983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMB入门之一:相关软件介绍</title><link>http://www.blogjava.net/heyang/archive/2011/09/18/358914.html</link><dc:creator>何杨</dc:creator><author>何杨</author><pubDate>Sun, 18 Sep 2011 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/heyang/archive/2011/09/18/358914.html</guid><wfw:comment>http://www.blogjava.net/heyang/comments/358914.html</wfw:comment><comments>http://www.blogjava.net/heyang/archive/2011/09/18/358914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/heyang/comments/commentRss/358914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/heyang/services/trackbacks/358914.html</trackback:ping><description><![CDATA[<strong>本节任务:</strong><br />&nbsp;&nbsp;&nbsp;&nbsp; 熟悉进行WMB开发需要用到的软件及环境.<br />&nbsp; <div><strong>1.WebSphere MQ及其操作工具WebSphere MQ Explorer:</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MB 的运行依赖于 MQ，所以首先要安装 MQ，MQ是就是 IBM 的消息中间件产品，IBM 几乎所有 SOA 相关的产品，都是构建于 MQ 之上的，没有 MQ 强大的消息传输能力，那么 IBM 很多产品都做不起来。你可以把MQ当成一个传输通道，只要往里面放东西，MQ 就会把消息传到目的地。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebSphere MQ Explorer是用来操作MQ的工具,我们需要利用它来建立队列管理器及队列.下图就是WebSphere MQ Explorer的操作界面:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/WMB01-01.jpg" height="770" width="1025" /><br /><br /><strong>2.IBM WebSphere Message Broker Explorer:</strong>&nbsp;&nbsp;&nbsp;&nbsp; <br /><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IBM WebSphere Message Broker（以下称为 Message Broker）可以作为企业服务总线使用，提供用于各种协议的通用连接以及为使用结构化和非结构化数据的应用程序提供数据转换功能。WebSphere Message Broker(代理)的两个核心功能就是：&#8220;消息路由&#8221;和&#8220;消息格式转换&#8221;。它相当于一个公共服务中心。MB 接收所有消息，然后自动分析其中的内容，找到相应的目的地，进行路由转发;此外，MB 还可以进行消息转换，这就像是自动翻译信件. MB本质上也是一个服务总线，所有的服务组件接入到MB中，服务将消息塞给MB，MB来决定怎么转发，这样让服务愈加成为一个独立的实体，和其他服务的耦合性进一步降低，从而达到 SOA 的境界。(题外话:我个人觉得,SOA把业务分离出来的想法是好的,奈何当前所有模拟业务流程的工作流从根基上来说就是背离现实的,这就是SOA赖以生存的基础.因此SOA做得再好也只是修补性工作).</div><div><div>&nbsp; &nbsp; &nbsp;&nbsp; 下图是WMB的整体架构图:<br />&nbsp; &nbsp; &nbsp; &nbsp;<img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/WMB01-04.jpg" height="548" width="554" /> &nbsp;&nbsp;</div></div><br /><strong>3.WebSphere Message Broker Toolkit 7.0:</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是操作WebSphere Message Broker的开发环境,它是基于Eclipse做成的,因此上手很快.我们大部分的工作都要依赖它来完成.<br />&nbsp; &nbsp; &nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/WMB01-02.jpg" height="768" width="1024" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以下是WebSphere Message Broker Toolkit的界面介绍：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/WMB01-05.jpg" height="338" width="553" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 号区域是一个消息流，可以看到非常直观：从 MQ 读入&#8212;&nbsp; &#8212;&nbsp; 计算（转换成 web service 格式）&#8212;&nbsp; &#8212;发送 http 请求到 web service 的 url&#8212;&nbsp; &#8212;&nbsp; 计算（转换回 MQ 消息格式）&#8212;&nbsp; &#8212;&nbsp; 放入 MQ。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 号区域是节点选择面板，MB 自带了几十种节点给我们选择，同时我们也可以自己创建节点。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 号区域是属性面板，当你选择某个节点时，可以在其中编辑节点的属性。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 号区域是域连接面板，开发好的消息流和消息格式，必须首先在 MBT 中连接到对应的配置管理器，再将打包好的流程部署到对应的 broker 中，这个过程也可以由命令行完成。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 号区域则类似 eclipse 的项目集合，里面是所有的 MB 项目。</div></div><strong><br />4.rfhutil.exe:</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个工具用来往队列上发送消息以及读取消息,它是可选的,没有它我们也可以依靠WebSphere MQ Explorer来完成同样的工作.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/heyang/WMB01-03.jpg" height="613" width="735" /><br /><br />本节结束。<img src ="http://www.blogjava.net/heyang/aggbug/358914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/heyang/" target="_blank">何杨</a> 2011-09-18 16:31 <a href="http://www.blogjava.net/heyang/archive/2011/09/18/358914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>