非常无助地求解。。。这是为什么啊。怎么老是有错误
时间:2011-03-31
来源:互联网
已知:SML文件,写xslt 和DTD,就是实现一个求和的功能。。。 请高人帮帮忙 程序总是不对!!!~~~~(>_<)
DTD:
<!ELEMENT numbers (num+)
<!ELEMENT num (#PCDATA)>
xml文件:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE numbers SYSTEM "sum.dtd">
<numbers>
<val>
<num>18</num>
<num>1</num>
<num>3</num>
<num>5</num>
<num>23</num>
<num>3</num>
<num>2</num>
<num>7</num>
<num>4</num>
</val>
</numbers>
我的XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="numbers" >
<xsl:call-template name="sum">
<xsl:with-param name="nums" select="num" as="element(num)*"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="sum" as="xs:integer($num//@val)">
<xsl:param name="nums" as="element(num)*"/>
<xsl:choose>
<xsl:when test="empty($nums)">
<xsl:sequence select="0"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="rem" as="xs:integer">
<xsl:call-template name="sum">
<xsl:with-param name="nums" select="$nums[position()>1]"
as="element(num)*"/>
</xsl:call-template>
</xsl:variable>
<xsl:sequence select="xs:integer($nums[1]/text())+ $rem"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>
DTD:
<!ELEMENT numbers (num+)
<!ELEMENT num (#PCDATA)>
xml文件:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE numbers SYSTEM "sum.dtd">
<numbers>
<val>
<num>18</num>
<num>1</num>
<num>3</num>
<num>5</num>
<num>23</num>
<num>3</num>
<num>2</num>
<num>7</num>
<num>4</num>
</val>
</numbers>
我的XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="numbers" >
<xsl:call-template name="sum">
<xsl:with-param name="nums" select="num" as="element(num)*"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="sum" as="xs:integer($num//@val)">
<xsl:param name="nums" as="element(num)*"/>
<xsl:choose>
<xsl:when test="empty($nums)">
<xsl:sequence select="0"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="rem" as="xs:integer">
<xsl:call-template name="sum">
<xsl:with-param name="nums" select="$nums[position()>1]"
as="element(num)*"/>
</xsl:call-template>
</xsl:variable>
<xsl:sequence select="xs:integer($nums[1]/text())+ $rem"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>
作者: cqq8638 发布时间: 2011-03-31
帮顶。
作者: haa17 发布时间: 2011-03-31
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28