首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XSLT -基于排序的每个循环

XSLT -基于排序的每个循环
EN

Stack Overflow用户
提问于 2022-09-23 12:00:21
回答 1查看 34关注 0票数 0
代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ns2:CommissionEvents xmlns="urn:tracelink:mapper:sl:canonical:commontypes" xmlns:ns2="urn:tracelink:mapper:sl:canonical:serialized_operations_manager">
        <ns2:CommissionEvent>
           <NumberList>
            <Serial barcodeContent="(01)00355135132011(21)897883089643(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="0" format="AI(01)+AI(21)">010035513513201121897883089643</Serial>
            </NumberList>
    </ns2:CommissionEvent>
        <ns2:CommissionEvent>
           <NumberList>
            <Serial barcodeContent="(01)00355135132011(21)903131477120(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="0" format="AI(01)+AI(21)">010035513513201121903131477120</Serial>
           </NumberList>
    </ns2:CommissionEvent>
    <ns2:CommissionEvent>
           <NumberList>
            <Serial barcodeContent="(01)30355135132012(21)389170110454(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="3" format="AI(01)+AI(21)">013035513513201221389170110454</Serial>
           </NumberList>
    </ns2:CommissionEvent>
    <ns2:CommissionEvent>
           <NumberList>
            <Serial barcodeContent="(00)003551350000000907" companyPrefix="0355135" filterValue="0" format="AI(00)">00003551350000000907</Serial>
           </NumberList>
    </ns2:CommissionEvent>
    <ns2:CommissionEvent>
            <NumberList>
              <Serial barcodeContent="(00)103551350000000645" companyPrefix="0355135" filterValue="1" format="AI(00)">00103551350000000645</Serial>
            </NumberList>
    </ns2:CommissionEvent>
    </ns2:CommissionEvents>

我试图实现的输出如下所示。我尝试了基于@filterValue和@format的每个循环分组。有人能帮我用XSLT1.0或XSLT2.0实现这一点吗?

代码语言:javascript
运行
复制
<ns2:CommissionEvents>              
        <ns2:CommissionEvent>
           <ns0:NumberList>
            <ns0:Serial barcodeContent="(01)00355135132011(21)897883089643(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="0" format="AI(01)+AI(21)" />
            <ns0:Serial barcodeContent="(01)00355135132011(21)903131477120(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="0" format="AI(01)+AI(21)" />
            </ns0:NumberList>
    </ns2:CommissionEvent>
    <ns2:CommissionEvent>
           <ns0:NumberList>
            <ns0:Serial barcodeContent="(01)30355135132012(21)389170110454(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="3" format="AI(01)+AI(21)" />
           </ns0:NumberList>
    </ns2:CommissionEvent>
    <ns2:CommissionEvent>
            <ns0:NumberList>
            <ns0:Serial barcodeContent="(00)003551350000000907" companyPrefix="0355135" filterValue="0" format="AI(00)" />
            <ns0:Serial barcodeContent="(00)103551350000000645" companyPrefix="0355135" filterValue="1" format="AI(00)" />
           </ns0:NumberList>
    </ns2:CommissionEvent>
    </ns2:CommissionEvents>
EN

回答 1

Stack Overflow用户

发布于 2022-09-23 15:23:27

这可能会让你开始。我在输出中看到了四个不同的组:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:ns1="urn:tracelink:mapper:sl:canonical:commontypes"
  xmlns:ns2="urn:tracelink:mapper:sl:canonical:serialized_operations_manager"
  exclude-result-prefixes="#all">
  
  <xsl:output method="xml" indent="yes" />

  <xsl:template match="/ns2:CommissionEvents" >
    <xsl:copy>
      <xsl:for-each-group select="ns2:CommissionEvent/ns1:NumberList/ns1:Serial" 
                          group-by="concat(@filterValue, '##', @format)" >
        <ns2:CommissionEvent>
          <ns1:NumberList>
            <ns1:Serial>
              <xsl:copy-of select="current-group()" />
            </ns1:Serial>
          </ns1:NumberList>          
        </ns2:CommissionEvent>
      </xsl:for-each-group>
    </xsl:copy>
  </xsl:template>
  
</xsl:stylesheet>

使用输出(给出显式前缀ns1,而在输入中是隐式的)

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<ns2:CommissionEvents xmlns:ns2="urn:tracelink:mapper:sl:canonical:serialized_operations_manager" xmlns="urn:tracelink:mapper:sl:canonical:commontypes">
   <ns2:CommissionEvent>
      <ns1:NumberList xmlns:ns1="urn:tracelink:mapper:sl:canonical:commontypes">
         <ns1:Serial>
            <Serial barcodeContent="(01)00355135132011(21)897883089643(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="0" format="AI(01)+AI(21)">010035513513201121897883089643</Serial>
            <Serial barcodeContent="(01)00355135132011(21)903131477120(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="0" format="AI(01)+AI(21)">010035513513201121903131477120</Serial>
         </ns1:Serial>
      </ns1:NumberList>
   </ns2:CommissionEvent>
   <ns2:CommissionEvent>
      <ns1:NumberList xmlns:ns1="urn:tracelink:mapper:sl:canonical:commontypes">
         <ns1:Serial>
            <Serial barcodeContent="(01)30355135132012(21)389170110454(17)230430(10)TLSMKTST" companyPrefix="0355135" filterValue="3" format="AI(01)+AI(21)">013035513513201221389170110454</Serial>
         </ns1:Serial>
      </ns1:NumberList>
   </ns2:CommissionEvent>
   <ns2:CommissionEvent>
      <ns1:NumberList xmlns:ns1="urn:tracelink:mapper:sl:canonical:commontypes">
         <ns1:Serial>
            <Serial barcodeContent="(00)003551350000000907" companyPrefix="0355135" filterValue="0" format="AI(00)">00003551350000000907</Serial>
         </ns1:Serial>
      </ns1:NumberList>
   </ns2:CommissionEvent>
   <ns2:CommissionEvent>
      <ns1:NumberList xmlns:ns1="urn:tracelink:mapper:sl:canonical:commontypes">
         <ns1:Serial>
            <Serial barcodeContent="(00)103551350000000645" companyPrefix="0355135" filterValue="1" format="AI(00)">00103551350000000645</Serial>
         </ns1:Serial>
      </ns1:NumberList>
   </ns2:CommissionEvent>
</ns2:CommissionEvents>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73827372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档