0
如何拆分一個lineitem取決於其字段?創建lineitem取決於AccCodeType字段(拆分)
如何拆分一個lineitem取決於其字段?創建lineitem取決於AccCodeType字段(拆分)
要做到這一點,你可以創建一個XSL:關鍵匹配非分割元素(如現金和信用卡式),並採用了最前拆分元素作爲查找。
<xsl:key name="Acc"
match="AccCode[AccCodeType != 'Split']"
use="generate-id(preceding-sibling::AccCode
[AccCodeType = 'Split']
[SuppDocNo/RefNo = current()/SuppDocNo/RefNo][1])" />
然後,當你分裂的AccCode匹配您可以通過在關鍵
<xsl:apply-templates select="key('Acc', generate-id())" />
與下面的XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="Acc" match="AccCode[AccCodeType != 'Split']" use="generate-id(preceding-sibling::AccCode[AccCodeType = 'Split'][SuppDocNo/RefNo = current()/SuppDocNo/RefNo][1])"/>
<xsl:template match="/">
<xsl:apply-templates select="//AccCode[AccCodeType = 'Split']"/>
</xsl:template>
<xsl:template match="AccCode[AccCodeType = 'Split']">
<ITEM>
<LineItemNo>
<xsl:value-of select="../LineNo"/>
</LineItemNo>
<SplitPercentage>
<xsl:value-of select="PrimDocNo/RefNo"/>
</SplitPercentage>
<SplitNo>
<xsl:value-of select="SuppDocNo/RefNo"/>
</SplitNo>
<xsl:apply-templates select="key('Acc', generate-id())"/>
</ITEM>
</xsl:template>
<xsl:template match="AccCode[AccCodeType != 'Split']">
<xsl:element name="{AccCodeType}">
<xsl:value-of select="PrimDocNo/RefNo"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
查找它們因此獲得所有的相關元素
將此應用於您的示例XML時,將輸出以下內容:
<ITEM>
<LineItemNo>01</LineItemNo>
<SplitPercentage>100.00</SplitPercentage>
<SplitNo>01</SplitNo>
<Cash>100</Cash>
<CreditCard>200</CreditCard>
</ITEM>
<ITEM>
<LineItemNo>02</LineItemNo>
<SplitPercentage>50.00</SplitPercentage>
<SplitNo>02</SplitNo>
<Cash>300</Cash>
<CreditCard>400</CreditCard>
</ITEM>
<ITEM>
<LineItemNo>02</LineItemNo>
<SplitPercentage>50.00</SplitPercentage>
<SplitNo>01</SplitNo>
<Cash>500</Cash>
<CreditCard>600</CreditCard>
</ITEM>
您好,非常感謝您的快速解決方案和明確的評論。 – Sara