2011-10-07 42 views

回答

1

要做到這一點,你可以創建一個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> 
+0

您好,非常感謝您的快速解決方案和明確的評論。 – Sara