我有一個需要使用xslt來實現的要求。當E1EDP01下的另一個字段WERKS滿足一定條件時,它只需要在E1EDP01下添加字段'NETWR'的值。此添加的和將在E1EDS01下的不同節點字段SUMME下填充(E1EDS01的發生只有一個)。 WERKS的條件是,它必須具有值= VK10 0和VK11 0和VK12或(VK13和IDTNR不爲空)。我嘗試使用下面的XSLT代碼,但它給了我值'0'的輸出。任何人都可以請幫忙嗎? XSLT我使用:添加特定於其他字段的輸入值的字段的值
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ZNUMBER>
<IDOC>
<xsl:for-each select="Z_MM/IDOC/E1EDS01">
<E1EDS01>
<SUMME>
<xsl:value-of select="sum(Z_MM/IDOC/E1EDP01[(WERKS='VK13' and E1EDP19/IDTNR!='') or WERKS = 'VK10' or WERKS = 'VK11' or WERKS = 'VK12' ]/@NETWR)"/>
</SUMME>
</E1EDS01>
</xsl:for-each>
</IDOC>
</ZNUMBER>
</xsl:template>
</xsl:stylesheet>
INPUT XML:
<?xml version="1.0" encoding="UTF-8"?>
<Z_MM>
<IDOC BEGIN="1">
<E1EDP01 SEGMENT="1">
<NETWR>20</NETWR>
<WERKS>VK13</WERKS>
<E1EDP19 SEGMENT="1">
<IDTNR>000000000000211087</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<NETWR>10</NETWR>
<WERKS>VK11</WERKS>
<E1EDP19 SEGMENT="1">
<QUALF>001</QUALF>
</E1EDP19>
</E1EDP01>
<E1EDS01 SEGMENT="1">
<SUMID>002</SUMID>
<SUMME></SUMME>
<SUNIT></SUNIT>
</E1EDS01>
</IDOC>
</Z_MM>
OUTPUT應是20 + 10 = 30
你好。感謝您的答覆。我已經嘗試了這兩種方法,但仍未收到正確的輸出結果。當使用第一種方法嘗試時 我得到輸出爲'0',並且當用模板appraoch嘗試時,輸出爲空。任何進一步的建議將不勝感激。 –
我在http://xsltransform.net/gWvjQfs和http://xsltransform.net/jyRYYiu嘗試了我的解決方案,並根據需要將SUMME設置爲30。您的輸入XML是否準確?如果您在問題中使用不同的XML,例如,如果您的真實XML具有名稱空間,則可能存在問題。 –
非常感謝。你提供的解決方案已經解決了這個問題,儘管我嘗試了類似的方式,但不幸的是找不到確切的錯誤,爲什麼它沒有提前工作。謝謝。 最好的問候 –