2017-02-13 6 views
0

У меня есть одно требование, я новичок в языке XSLT, поэтому я ищу вашу помощь для моего требования ниже.Повторяющийся узел несколько раз на основе структуры ввода

Ниже полезная нагрузка входного 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 узла и OrderInfo узел будет повторять несколько раз, основываясь на том, что в структуре приемника 2 узла следует повторить. например

Сегмент 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> 
Смежные вопросы