2017-02-13 10 views
0

私には1つの要件があります。私はXSLT言語が初めてであるため、私の下の要件のためにあなたの助けを求めています。以下入力構造に基づいてノードを複数回繰り返す

ので、ファイルにordercharノードとORDERINFOノード2つのノードが繰り返すべき受信機構造のそれに基づいて複数回繰り返される入力XMLペイロード

<?xml version="1.0" encoding="UTF-8" ?> 
<ns0:sendfile xmlns:ns0="namepsace here"> 
<Delivery> 
    <IssueDateTime>2016-05-24T09:25:19z</IssueDateTime> 
<Item> 
    <order> 
    <orderChar> 
    <orderName /> 
    <orderVal /> 
    </orderChar> 
    <orderInfo> 
    <Product /> 
    <Batch /> 
     <Qty /> 
     <UOM /> 
    </orderInfo> 
    </order> 
</Item> 
</Delivery> 

あります。例えば

ordercharセグメントが20回繰り返されている場合、受信側でもE1ADRMセグメントは同じ回数繰り返す必要があります。 オーダーインフォメーションレシーバーの同じケースE1DRMセグメントは同じ回数だけ繰り返す必要があります。ノードのいずれかがレシーバーに来ない場合でも、セグメントにはデータが入力されません。

私はこの構文でselectの値をいくつか使うことができると思います。これで私を助けてくれますか?

私は以下のコードで試して、ノードを生成することができました。繰り返されるノードが到来すると、繰り返される受信ノードはポピュレートされません。上記のコード

<ns0:if test="count(./order/orderChar)!=0"> 
<E1EDL12 SEGMENT="1"> 
<ATNAM> 
<ns0:value-of select="./orderChar/orderName"/> 
</ATNAM> 
<ATWRT> 
<ns0:value-of select="./orderChar/orderName"/> 
</ATWRT> 
</E1EDL12> 

一つだけsegment.couldのためにあなたは私を複数回移入するためにしなければならないどのような変更を提案してくださいために試してみました。

よろしく、 Janardhan

+0

を、あなたはもう少し意味のある入力XMLサンプルを表示することができます(実際にいくつかの繰り返されるノードを持ち、いくつかのデータが入っているもの)。また、期待される出力を表示する必要があります。さらに、使用している現在のXSLTのビットをさらに表示できますか?ありがとうございました。 –

+0

備考と質問のカップル: 1.説明に失敗した記号の数を使用しました(例:E1ADRMとE1DRM)。その意味は何ですか? 2.あなたは_受信者_を書きましたが、これも不明です。 3.私は、_同じくらいの回数繰り返さなければならないというフレーズについて疑問を持っています。どのようなことが同じ回数発生すべきか? 要約:全体をより理解しやすい方法で記述できますか? –

答えて

0

は、あなたが本当にあなたの要件が非常に明らかにされていませんが、私の推測では、あなたが何かしたいということでしょう:

<xsl:for-each select="orderChar"> 
    <ATNAM> 
    <xsl:value-of select="orderName"/> 
    </ATNAM> 
    <ATWRT> 
    <xsl:value-of select="./orderChar/orderName"/> 
    </ATWRT> 
</xsl:for-each> 
関連する問題