2017-11-07 8 views
0
<transaction> 
    <itemConfirmation> 
     <catalogueItemConfirmationState> 
<catalogueItemConfirmationStateCode>REVIEW</catalogueItemConfirmationStateCode> 
     </catalogueItemConfirmationState> 
     <catalogueItemReference> 
      //some data   
     </catalogueItemReference> 
    </itemConfirmation> 
</transaction> 

をそのノード値の一部を変更することによって、私はトランザクションがcatalogueItemReferenceが含まれている場合にのみ、私はcatalogueItemConfirmationStateCodeの値を変更したいremoveEmptyTransactionテンプレート に渡していますトランザクションノードを変数をコピーしますを作成し、出力にトランザクションノード全体をコピーします。これらは複数のトランザクションノードで、catalogueItemReferenceオプションです。は、XSLTテンプレートを使用して

<xsl:template name="removeEmptyTransaction"> 
    <xsl:param name="eachTransactionElement"/> 
     <xsl:copy-of select="$eachTransactionElement"/> 
</xsl:template> 

、まあ...

答えて

0

を提案するなどして、テンプレートを作成してください。 match="transaction[.//catalogueItemReference]//catalogueItemConfirmationStateCode"あなたが必要な変更を実装しています(あなたがどちらを必要としているかは説明していません)。<xsl:apply-templates select="$eachTransactionElement"/>でその変換を通じて変数をプッシュします。もちろん、このアプローチでは、残りの部分が変更されていないことを確認するために、アイデンティヴトランスフォーメーションテンプレートが必要です。

+0

ご回答ありがとうございます。問題は複数の場所からremoveEmptyTransactionを呼び出すことです。 'eachTransactionElement'はトランザクション全体を含む変数で、私は操作後に最後に出力にコピーしたいと思います。テンプレートを書くべき場所を教えてください。 –

+0

なぜ名前付きテンプレートを使用する必要があるのでしょうか?すべて。単にそのテンプレートに 'transaction'要素を変換させたい場合は、提案された方法を使用し、指定されたテンプレートをパラメータで呼び出すのではなく、必要なものだけを使用するだけです。 '' –

+0

ありがとうございました。回答ありがとうございます。トランザクションの要素はソースXMLからではありません.XSLTで生成されています。一致条件を追加するにはどうすればよいですか? –

関連する問題