我正在编写一个XSLT来转换XML:我在Xpath中没有经验,而且我的XML太大而无法发布。
但这是我的问题:
此代码:工作正常:
<cac:testmathieu>
<xsl:variable name="lineAmount2" select="body:LineAmount * -1" />
<xsl:value-of select="../body:TaxTrans[body:TaxBaseAmount=$lineAmount2]/body:TaxAmount"/>
</cac:testmathieu>
然后,为什么下面的代码在上面代码的正下方使用时无效:
<xsl:call-template name ="TaxTotalLine">
<xsl:with-param name="TaxAmount" select="../body:TaxTrans[body:TaxBaseAmount=body:LineAmount*-1]/body:TaxAmount"></xsl:with-param>
</xsl:call-template>
第二段代码只是第一个例子中代码的合并,还是我弄错了?
答案 0 :(得分:0)
我想你想要
<xsl:call-template name ="TaxTotalLine">
<xsl:with-param name="TaxAmount" select="../body:TaxTrans[body:TaxBaseAmount = current()/body:LineAmount*-1]/body:TaxAmount"></xsl:with-param>
</xsl:call-template>
将当前处理的节点的LineAmount(例如任何外部模板或for-each)与TaxTrans元素的TaxBaseAmout进行比较,并将谓词放在方括号中。
答案 1 :(得分:0)
感谢您的回复。
它实际上是&#34; current()&#34;的组合。和括号。
非常感谢!
亲切的问候
马修