0
我有一個輸入XML這樣的 -行輸出XML來額外
<SAMPLE>
<SAMPLE_ID>111</SAMPLE_ID>
<ROWS>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">1025.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">949.07</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">1025.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">949.07</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">67.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">53.60</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">67.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">53.60</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">3.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">2.40</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">3.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">2.40</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SUBTOTAL" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">1095.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">1095.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">315.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">291.67</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">630.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">583.33</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">30.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">24.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">60.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">48.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">10.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">8.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">20.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">16.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">175.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">140.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">350.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">280.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SUBTOTAL" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">530.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">1060.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</ROW_TOTAL>
</ROW>
</ROWS>
我的轉換是這樣的 -
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="kRowById" match="ROW[not(@ROW_TYPE='SUBTOTAL' or @ROW_TYPE='MAIN' or @ROW_TYPE='COMMENT')]" use="@ROW_ID"/>
<xsl:template match="ROW[not(@ROW_TYPE='SPECIFICATION')]">
<xsl:copy-of select="."/>
<xsl:copy-of select="key('kRowById', @ROW_ID)"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
我的輸出結構來正確的,但只問題在於,這種邏輯在輸出xml中添加了額外的重複ROWS。 哪些不是必需的。對此有任何建議。
預期輸出 -
<SAMPLE>
<ROW ROW_TYPE="SUBTOTAL" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">1095.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">1095.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">1025.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">949.07</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">1025.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">949.07</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">67.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">53.60</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">67.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">53.60</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="1">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">3.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">2.40</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">3.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">2.40</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SUBTOTAL" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">530.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">1060.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">0.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">315.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">291.67</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">630.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">583.33</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">30.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">24.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">60.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">48.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">10.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">8.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">20.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">16.00</AMOUNT>
</ROW_TOTAL>
</ROW>
<ROW ROW_TYPE="SPECIFICATION" ROW_ID="2">
<PRICE_PER_UNIT>
<AMOUNT SIGN="+" VAT="INCLUDED">175.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">140.00</AMOUNT>
</PRICE_PER_UNIT>
<ROW_TOTAL>
<AMOUNT SIGN="+" VAT="INCLUDED">350.00</AMOUNT>
<AMOUNT SIGN="+" VAT="EXCLUDED">280.00</AMOUNT>
</ROW_TOTAL>
</ROW>
</SAMPLE>
是否可以編輯您的問題,以顯示你的預期產出,否則它是不完全清楚你不希望看到哪些行。謝謝! –
就我所見,您的預期輸出與您的問題中的XSLT生成的內容匹配..... –
從我的xslt轉換中,ROW_TYPE =「SPECIFICATION」行即將增加。如果ROW_ID =「1」包含3次ROW_TYPE =「SPECIFICATION」,那麼我的轉換結果有9次。請再檢查一次。 – Kundan