如何在 xslt 中使用分组依据进行求和和删除重复项



我需要对所有输入元素进行分组并执行一些操作。

如果我得到输入为 -

 <ns1:users>
              <ns1:user>
                <ns1:name>A</ns1:name>
                 <ns1:ProductIdentifier>1234</ns1:ProductIdentifier>
                 <ns1:Quantity>100</ns1:Quantity>
              </ns1:user>
              <ns1:user>
         <ns1:name>B</ns1:name>
                 <ns1:ProductIdentifier>1234</ns1:ProductIdentifier>
                 <ns1:Quantity>200</ns1:Quantity>
              </ns1:user>
    <ns1:user>
         <ns1:name>C</ns1:name>
                 <ns1:ProductIdentifier>12345</ns1:ProductIdentifier>
                 <ns1:Quantity>300</ns1:Quantity>
              </ns1:user>
           </ns1:users>

我必须按元素产品标识符分组,如果有 2 个或超过 2 个相同的产品标识符,那么我只需要发送产品标识符的第一个副本,并且数量必须是所有相同产品标识符的总和。

输出-

<ns1:users>
          <ns1:user>
            <ns1:name>A</ns1:name>
             <ns1:ProductIdentifier>1234</ns1:ProductIdentifier>
             <ns1:Quantity>300</ns1:Quantity>
          </ns1:user>
          <ns1:user>
<ns1:user>
     <ns1:name>C</ns1:name>
             <ns1:ProductIdentifier>12345</ns1:ProductIdentifier>
             <ns1:Quantity>300</ns1:Quantity>
          </ns1:user>
       </ns1:users>

我的 XSLT -

 <xsl:key match="user" name="ProductIdentifier" use="ProductIdentifier"/>
      <xsl:template match="/">
       <xsl:for-each select="users/user[generate-id()=generate-id(key('ProductIdentifier',ProductIdentifier)[1])]">
                <ns1:user>
                <ns1:name>
                    <xsl:value-of select="name"/>
                  </ns1:name>
                  <ns1:ProductIdentifier>
                    <xsl:value-of select="ProductIdentifier"/>
                  </ns1:ProductIdentifier>
                   <ns1:Quantity>
                    <xsl:for-each select="key('ProductIdentifier',ProductIdentifier)">
                   <xsl:value-of select="sum(Quantity)"/>

                   </xsl:for-each>
                  </ns1:Quantity>
                </ns1:user>
              </xsl:for-each>
            </ns1:users>

输出是这样的——

<ns1:users>
      <ns1:user>
      <ns1:name>A</ns1:name>
         <ns1:ProductIdentifier>1078859</ns1:ProductIdentifier>
         <ns1:Quantity>100200</ns1:Quantity>
      </ns1:LeftOnBoardPart>
      <ns1:LeftOnBoardPart>
      <ns1:name>C</ns1:name>
         <ns1:ProductIdentifier>C</ns1:ProductIdentifier>
         <ns1:Quantity>300</ns1:Quantity>
      </ns1:LeftOnBoardPart>
   </ns1:LeftOnBoardParts>

如何求和 100 + 200 = 300?

对于数量,请执行:

<ns1:Quantity>
    <xsl:value-of select="sum(key('ProductIdentifier', ProductIdentifier)/Quantity)"/>
</ns1:Quantity>

相关内容

  • 没有找到相关文章

最新更新