2017-02-13 52 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节点和订单信息节点将重复基于该多次在接收器结构2级的节点应该重复。例如

orderchar段重复20次,在接收方也E1ADRM段应该重复相同的次数。 订单信息在接收方E1DRM段中的同样情况也应该重复相同的次数。在任何节点不会进入接收方的情况下,该段也不应该填充。

我认为我们可以用这种语法做一些选择的值。你能帮我解决这个问题吗?

我试着用下面的代码并能够生成节点。但是当重复的节点到来时,重复的接收者节点不会被填充。

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