我正在使用相同的源架构从两个不同的地图创建联合地图。
在联合地图中,我使用模板匹配设置逻辑,根据源模式中的子类型执行两个映射中的正确映射:
<xsl:template match="//Header[contains(InvoiceType,'Invoice')]">
这一切都运行良好,但是当我测试地图时,我会收到无效的XML。我的line元素似乎被创建了两次,一个在XML标记内正确,另一个在标记之外,在文档的末尾。
<E1EDP01>
<POSEX>1</POSEX>
<MENGE>2</MENGE>
<E1EDP19>
<QUALF>002</QUALF>
<IDTNR>000000000000000000</IDTNR>
<KTEXT>Paysafecard 100 DKR</KTEXT>
<MFRPN/>
<MFRNR/>
<IDTNR_EXTERNAL>9120005810976</IDTNR_EXTERNAL>
</E1EDP19>
<E1EDP19>
<QUALF>003</QUALF>
<IDTNR>9120005810976</IDTNR>
<KTEXT/>
<MFRPN/>
<MFRNR/>
<IDTNR_EXTERNAL/>
</E1EDP19>
</E1EDP01>
0
9120005810976
9120005810976
2
EA
Paysafecard 100 DKR
100.00
0
0.00
200.00
0.00
我无法弄清楚为什么会发生这种情况,因为剩下的元素显示得很好。这在两个地图中都会发生。
要生成行输出,我使用的是xsl:for-each:
<xsl:for-each select="../Lines">
<xsl:for-each select="Line">
Lines元素与Header元素处于同一级别。
任何可能导致这种情况的提示都将非常感激。