【问题标题】:getting the total weight of unique prodid获取唯一产品的总重量
【发布时间】:2012-07-28 10:31:56
【问题描述】:

大家好,我需要你的帮助!我一直在编写一个代码,该代码将获取属于第二级循环的每个唯一产品 ID 的总权重。这是我正在使用的代码。但我得到的输出是 110,应该只有 60。提前谢谢!

<xforms:bind calculate="sum(instance('Generated')/page1/table1/item[sublinesA[not(sublineA/prodid = preceding-sibling::sublinesA/sublineA/prodid)]]/sublinesA/sublineA[not(prodid = preceding-sibling::sublineA/prodid)]/weight)" nodeset"instance('Generated')/page1/table1/totalwgt"></xforms:bind>

    <item>
    <sublinesA>
         <sublineA>
             <prodid>AAA</prodid>
             <weight>10</weight>
         </sublineA>
         <sublineA>
             <prodid>AAA</prodid>
             <weight>10</weight>
         </sublineA>
         <sublineA>
            <prodid>BBB</prodid>
            <weight>20</weight>
         </sublineA>
    </sublinesA>
   </item>

   <item>
    <sublinesA>
         <sublineA>
             <prodid>BBB</prodid>
             <weight>20</weight>
         </sublineA>
         <sublineA>
             <prodid>BBB</prodid>
             <weight>20</weight>
         </sublineA>
         <sublineA>
             <prodid>CCC</prodid>
             <weight>30</weight>
         </sublineA>
   </sublinesA>
   </item>

    <item>
     <sublinesA>
         <sublineA>
             <prodid>CCC</prodid>
             <weight>30</weight>
         </sublineA>
     </sublinesA>
   </item>

【问题讨论】:

    标签: xforms xfdl


    【解决方案1】:

    您的calculate 表达式选择每个sublinesA / sublineA / weight 元素,其父sublineA 元素的产品ID 与其前一个兄弟 的产品ID 不同。所以第二个item中的第一个BBB被计算在内,第三项中的CCC也是如此。

    如果您打算按项目计算重量,那么您期望总和为 60 是错误的;你应该期待三个总和 30、50、30。

    另一方面,如果您打算对给定表中所有项目的权重求和(并且考虑到计算的绑定方式,我猜您是这样),那么[not(prodid = preceding-sibling::sublineA/prodid)] 不是正确的谓词。

    如果实例中只有一个table1 实例,则可以直接替换为[not(prodid = preceding::sublineA/prodid)]。如果不止一个,您将需要做一些非常聪明的 XPath,或者可能重组文档以使其更容易做您需要的事情。

    (这与您的问题无关,但我顺便指出您正在检查谓词两次;除非我遗漏了什么,否则可以删除第一个双重嵌套谓词而不改变表达式的含义。除非您的 XForms引擎在优化方面非常激进,我希望第一个谓词的唯一效果是减慢速度。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多