2013-04-26 55 views
1

每次我嘗試做類似的東西:XSLT的XPath正確語法添加元素的前同輩

<xsl:value-of select="wd:XMLNAME_57-Payment_Deducted+preceding-sibling::wd:Result_Lines/wd:XMLNAME_57-Payment_Deducted"></xsl:value-of> 

我得到氧氣錯誤說着什麼效果......

Description: XPTY0004: A sequence of more than one item is not allowed as the second operand of '+' 

我已經嘗試將每個情況變成一個變量,然後調用添加函數的變量,並試圖創建一個序列。似乎沒有什麼是工作:

<xsl:variable name="child_support" select="preceding-sibling::wd:Result_Lines/wd:XMLNAME_57-Payment_Deducted[position()=1]"></xsl:variable> 
    <xsl:value-of select="sum(wd:XMLNAME_57-Payment_Deducted+(concat($child_support, '')))"></xsl:value-of> 
    <xsl:sequence select="format-number(preceding-sibling::wd:Result_Lines/wd:XMLNAME_57-Payment_Deducted+wd:XMLNAME_57-Payment_Deducted, '#')"></xsl:sequence> 

這裏是類似於XML我想呼籲加法運算的東西:

<?xml version='1.0' encoding='UTF-8'?> 
<wd:Report_Data xmlns:wd="urn:com.workday.report/CR-INT034-ADP-Garnishment_Disbursements_File-Outbound2"> 
    <wd:Report_Entry> 
    <wd:Result_Lines> 
     <wd:XMLNAME_57-Payment_Deducted>2</wd:XMLNAME_57-Payment_Deducted> 
    </wd:Result_Lines> 
    <wd:Result_Lines> 
     <wd:XMLNAME_57-Payment_Deducted>276.92</wd:XMLNAME_57-Payment_Deducted> 
    </wd:Result_Lines> 
    </wd:Report_Entry> 
</wd:Report_Data> 

我缺少什麼?如果我創建了一個xslt函數,那會起作用嗎? XSLT函數不是我以前創建的。

我可以用一些幫助來找出問題所在。

感謝, 薩拉

回答

0

如何:

<xsl:value-of select="sum(wd:XMLNAME_57-Payment_Deducted | 
          preceding-sibling::wd:Result_Lines/ 
           wd:XMLNAME_57-Payment_Deducted)" /> 

或少許清潔劑:

<xsl:variable name="thisAndPreceding" 
       select=". | preceding-sibling::wd:Result_Lines" /> 
<xsl:value-of select="sum($thisAndPreceding/wd:XMLNAME_57-Payment_Deducted)" /> 
+0

第一個似乎工作得很好。你真了不起!謝謝!我必須略微調整 2013-04-26 13:25:31

+0

Great聽到這一消息並感謝糾正。如果您的問題已解決,請將此答案標記爲已接受。 :) – JLRishe 2013-04-26 14:53:03