首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

写xsl,输出最大值!(><)~解决思路

2012-04-11 
写xsl,输出最大值!!!!!~~~~(_)~~~~xml:?xml version1.0 encodingUTF-8?!DOCTYPE numbers SYSTE

写xsl,输出最大值!!!!!~~~~(>_<)~~~~
xml:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE numbers SYSTEM "maximum.dtd">

<numbers>
  <num>18</num>
  <num>-1</num>
  <num>3</num>
  <num>5</num>
  <num/>
  <num>23</num>
  <foo>hello</foo>
  <num>-3</num>
  <num>2</num>
  <num>7</num>
  <num>4</num>
  <num></num>
</numbers>

输出自然就是,23啦。。
但是<num></num>,<num/>
改怎么处理呢??
哪位好心的高手帮帮忙写一下xsl参考参考!!!!!!!!!!!!!!!1



[解决办法]

XML code
 <?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
exclude-result-prefixes="xs fn">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">

<xsl:variable name="var1_instance_max" as="node()" select="."/>

<xsl:variable name="var2_map_select_numbers" as="xs:decimal*">
<!-- 给变量赋值 -->
<xsl:for-each select="$var1_instance_max/*:numbers[fn:namespace-uri() eq '']/*:num[fn:namespace-uri() eq '']">
<xsl:variable name="var3_cur_seq_" as="node()" select="."/>
<xsl:sequence select="xs:decimal(xs:string($var3_cur_seq_))"/>
</xsl:for-each>
</xsl:variable>

result:
<xsl:if test="fn:exists(fn:max($var2_map_select_numbers))">
<xsl:sequence select="xs:string(fn:max($var2_map_select_numbers))"/>
</xsl:if>

</xsl:template>
</xsl:stylesheet>

但是xml中的空的num要去掉。剩下的在研究!
[解决办法]
你到底有没有试过吖?我前面的一句就可以搞定了。

热点排行