2017-12-24 22 views
0

私はXMLを変換するためにXSLTを書いています。私はXpathに経験がなく、XMLが大きすぎて投稿できません。XPATH:コールテンプレートで変数を使用する方法

しかし、ここでは私の問題である:

このコードは:正常に動作します:それは右の上のコードの下に使われていたときに

その後
<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> 

2番目のコードは、最初の例のコードをマージしたものですか、間違っていますか?

私はあなたが

<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> 

はあなたに角括弧で述語を適用したTaxBaseAmout TaxTransの要素に、現在処理ノード(例えば任意の外側のテンプレートや用-それぞれ)のLineAmountを比較したいと思います

+0

に関して第二のコードは 'TaxTotalLine'テンプレートを呼び出し、パラメータを渡しています。それは何ですか?私にテンプレートを見せて、私に教えてください。 – derloopkat

+0

変数にbody:LineAmount * -1とパラメーターbody:LineAmount * -1がある場合は、変数のようにスペースを追加する必要があります。 –

答えて

0

0

ありがとうございました。

「current()」と大括弧の組み合わせであった。

非常に高く評価されました!

種類が

マシュー

関連する問題