XSLT 有点问题麻烦各位帮忙看看啊

Mike老羊 2006-08-17 11:27:04
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" version="1.0"/>

<xsl:template match="/">
<xsl:element name="ExpenseList">
<xsl:for-each select="/ExpenseList/Request">
<xsl:variable name="ReqId" select="@ID"/>
<xsl:variable name="DivId" select="@Division"/>
<xsl:variable name="DepId" select="@Department"/>
<xsl:variable name="EmpId" select="@EmployesId"/>

<!--Div>
<xsl:value-of select="$ReqId"/>
<xsl:value-of select="$DivId"/>
</Div-->

<xsl:element name="Request">
<xsl:attribute name="ID"><xsl:value-of select="$ReqId"/></xsl:attribute>
<xsl:attribute name="EmployesId"><xsl:value-of select="$EmpId"/></xsl:attribute>
<xsl:attribute name="Divisiov"><xsl:value-of select="$DivId"/></xsl:attribute>
<xsl:attribute name="Department"><xsl:value-of select="$DepId"/></xsl:attribute>


<xsl:for-each select="/ExpenseList/Request[@ID=$ReqId]/ExpenseItem">
<!--Div>
<xsl:value-of select="$ReqId"/>
</Div-->
<xsl:element name="ExpenseItem">
<xsl:variable name="Type" select="@Type"/>
<xsl:variable name="Quantity" select="@Quantity"/>
<xsl:variable name="AMount" select="@AMount"/>
<xsl:variable name="ExtentedAmt" select="@ExtentedAmt"/>

<xsl:attribute name="Type"><xsl:value-of select="$Type"/></xsl:attribute>
<xsl:attribute name="Quantity"><xsl:value-of select="$Quantity"/></xsl:attribute>
<xsl:attribute name="AMount"><xsl:value-of select="$AMount"/></xsl:attribute>
<xsl:attribute name="ExtentedAmt"><xsl:value-of select="$ExtentedAmt"/></xsl:attribute>

<!--Div>
<xsl:value-of select="concat('==',$DivId)"/>
<xsl:value-of select="concat('==',$DepId)"/>
<xsl:value-of select="concat('==',$EmpId)"/>
</Div-->


<xsl:variable name="adf">
<xsl:call-template name="y">
<xsl:with-param name="Div" select="$DivId"/>
<xsl:with-param name="Dep" select="$DepId"/>
<xsl:with-param name="Emp" select="$EmpId"/>
</xsl:call-template>
</xsl:variable>




<Div>
<xsl:value-of select="$adf - '1'"/>
</Div>




</xsl:element>

</xsl:for-each>



</xsl:element>

</xsl:for-each>

</xsl:element>

</xsl:template>

<xsl:template name="y">
<xsl:param name="Div" />
<xsl:param name="Dep" />
<xsl:param name="Emp" />


<xsl:variable name="ot" select="document('test2.xml')"/>
<xsl:for-each select="$ot/GLAccountDefinition/MainAccountSegment">
<xsl:variable name="Ma" select="@ID"/>
<xsl:choose>
<xsl:when test="$Div!=0">
<xsl:for-each select="$ot/GLAccountDefinition/MainAccountSegment/Division">
<xsl:if test="@ID=$Div">
<xsl:variable name="Acc" select="@AccountSegment"/>
<xsl:choose>
<xsl:when test="$Dep!=0">
<xsl:for-each select="$ot/GLAccountDefinition/MainAccountSegment/Division/DepartMent">
<xsl:if test="@ID=$Dep">
<xsl:variable name="Accd" select="@AccountSegment"/>
<xsl:choose>
<xsl:when test="$Emp!=0">
<xsl:for-each select="$ot/GLAccountDefinition/MainAccountSegment/Division/DepartMent/Employee">
<xsl:if test="@ID=$Emp">
<xsl:variable name="Acce" select="@AccountSegment"/>
<xsl:value-of select="concat($Ma,$Acc,$Accd,$Acce)"/>

<!--Div>
<xsl:value-of select="concat('==',$Div)"/>
<xsl:value-of select="concat('==',$Dep)"/>
<xsl:value-of select="concat('==',$Emp)"/>
</Div-->

</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($Ma,$Acc,$Accd)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($Ma,$Acc)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$Ma"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

以上是我的XSLT出问题的地放是调用摸板时不能返回值

<xsl:variable name="adf">
<xsl:call-template name="y">
<xsl:with-param name="Div" select="$DivId"/>
<xsl:with-param name="Dep" select="$DepId"/>
<xsl:with-param name="Emp" select="$EmpId"/>
</xsl:call-template>
</xsl:variable>




<Div>
<xsl:value-of select="$adf - '1'"/>
</Div>
...全文
316 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
purexiafeng 2006-09-22
  • 打赏
  • 举报
回复
眼睛看花了,拿分来
cds27 2006-08-23
  • 打赏
  • 举报
回复
看看
http://cds.gameres.com/samples/test/test.xml
用上述语句写的例子。如果你不能运行,显示出什么数据,那要检查你的环境。
如果没问题,检查你XML的路径有没有错,或者XPATH路径有问题。
Mike老羊 2006-08-22
  • 打赏
  • 举报
回复
如:
<xsl:variable name="a">
<xsl:call-template name="zzz">
</xsl:call-template>
</xsl:variable>


<xsl:template name="zzz">
<xsl:variable name="ot" select="document('test2.xml')"/>
<xsl:variable name="Ma" select="$ot/GLAccountDefinition/test"/>
<xsl:value-of select="$Ma"/>
</xsl:template>
cds27 2006-08-22
  • 打赏
  • 举报
回复
怎么个返回法,你要说清楚啊,问了半天说的不清不楚
Mike老羊 2006-08-21
  • 打赏
  • 举报
回复
上面是我写的测试例子也存在我所说的问题,但是如过不用document()函数调用另外的XML他返回的值就不是空的.
Mike老羊 2006-08-21
  • 打赏
  • 举报
回复
我也不知道为什么就是有点怪,document()函数调用另外一个XML然后都能重里面取出数据来但就是返回不回去,如果不用document()函直接冲XML中取数据就能取出来并能返回回去.
cds27 2006-08-21
  • 打赏
  • 举报
回复
检查错误提示.

我推测应该是document()中的路径存在问题.
cds27 2006-08-18
  • 打赏
  • 举报
回复
如果在IE中,显示的结果是正确的,那你应该检查你输出XML的代码.
Mike老羊 2006-08-17
  • 打赏
  • 举报
回复
例如:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" version="1.0"/>
<xsl:template match="/">
<xsl:for-each select="/ExpenseList/Request">
<xsl:variable name="a">
<xsl:call-template name="zzz">
</xsl:call-template>
</xsl:variable>
<Div>
<xsl:value-of select="$a"/>
</Div>
</xsl:for-each>
</xsl:template>
<xsl:template name="zzz">
<xsl:variable name="ot" select="document('test2.xml')"/>
<xsl:variable name="Ma" select="$ot/GLAccountDefinition/test"/>
<xsl:value-of select="$Ma"/>
</xsl:template>
</xsl:stylesheet>
在IE里能显示,但生成XML后就是空的了请问这是怎么回是啊...
Mike老羊 2006-08-17
  • 打赏
  • 举报
回复
我就是想把两个XML的数据合并后生成另外一个XML,
现在就是在XSLT中调用另外一个XML取数据时有问题,数据没办发从模块中反回.
我的调用方法是这样写的
<xsl:variable name="ot" select="document('test2.xml')"/>
<xsl:for-each select="$ot/GLAccountDefinition/MainAccountSegment">
<xsl:variable name="Ma" select="@ID"/>
孟子E章 2006-08-17
  • 打赏
  • 举报
回复
怎么调用多个XML?
document()
例如
<xsl:for-each select="document('b.xml')//a">
<xsl:copy-of select="."/>
</xsl:for-each>
Mike老羊 2006-08-17
  • 打赏
  • 举报
回复
我现在知道问题出在那了
可能是我调用另外一个XML时又问题请问一般在XSLT中要怎么调用多个XML啊.....
cds27 2006-08-17
  • 打赏
  • 举报
回复
那么长怎么看,而且贴出来后,格式又有点乱

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧