<?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实现这一点吗?
<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>
发布于 2022-09-23 15:23:27
这可能会让你开始。我在输出中看到了四个不同的组:
<?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
,而在输入中是隐式的)
<?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>
https://stackoverflow.com/questions/73827372
复制相似问题