0

我的挑战是我必须将值/值标签中的所有内容分组。<Value ID="0" AttributeID="att_X">0 - AAAAA</Value>当其中有一个带有 AAAAA 的值时,我必须对每个标签进行分组。值 0 - AAAAA、23 - AAAAA B、12 - AAAAA C 必须在输出消息中组合在一起,最好的方法是什么?

我试图将它分组

<xsl:for-each-group select="Entity/Values/Value[@AttributeID='att_PVPP']" group-by="substring-before(substring-after(Entity/Values/Value[@AttributeID='att_X'], '- '), ' ') ='AAAAA'">

也试过

<xsl:for-each-group select="Entity/Values/Value[@AttributeID='att_PVPP']" group-by="matches(Entity/Values/Value[@AttributeID='att_X'], 'AAAAA')">

<xsl:for-each select="matches(Entity/Values/Value[@AttributeID='att_X'], 'AAAAA')">

我有以下输入xml:

<Entities>
    <Entity Referenced="true" Selected="false" ParentID="P" UserTypeID="V" ID="PVP-1">
        <Name>123456 - 0</Name>
        <Values>
            <Value AttributeID="att_PVPS">2020-10-06</Value>
            <Value AttributeID="att_PVPP">123456</Value>
            <Value ID="0" AttributeID="att_X">0 - AAAAA</Value>
            <Value AttributeID="att_PVPEi">2020-10-06</Value>
            <Value UnitID="Y.unit." AttributeID="C">10</Value>
            <Value ID="2" AttributeID="att_Z">A</Value>
        </Values>
    </Entity>
    <Entity Referenced="true" Selected="false" ParentID="W" UserTypeID="V" ID="PVP-2">
        <Name>789012 - 200</Name>
        <Values>
            <Value AttributeID="att_PVPS">2020-09-16</Value>
            <Value AttributeID="att_PVPP">789012</Value>
            <Value ID="200" AttributeID="att_X">200 - BBBBB</Value>
            <Value AttributeID="att_PVPEi">2020-10-22</Value>
            <Value UnitID="Y.unit." AttributeID="C">200</Value>
            <Value ID="2" AttributeID="att_Z">A</Value>
        </Values>
    </Entity>
    <Entity Referenced="true" Selected="false" ParentID="W" UserTypeID="V" ID="PVP-3">
        <Name>123456 - 0</Name>
        <Values>
            <Value AttributeID="att_PVPS">2020-10-07</Value>
            <Value AttributeID="att_PVPP">123456</Value>
            <Value ID="0" AttributeID="att_X">0 - BBBBB</Value>
            <Value AttributeID="att_PVPEi">2020-10-13</Value>
            <Value UnitID="Y.unit." AttributeID="C">1</Value>
            <Value ID="2" AttributeID="att_Z">A</Value>
        </Values>
    </Entity>
    <Entity Referenced="true" Selected="false" ParentID="W" UserTypeID="V" ID="PVP-4">
        <Name>123456 - 23</Name>
        <Values>
            <Value AttributeID="att_PVPS">2020-10-16</Value>
            <Value AttributeID="att_PVPP">123456</Value>
            <Value ID="23" AttributeID="att_X">23 - AAAAA B</Value>
            <Value AttributeID="att_PVPEi">2020-10-21</Value>
            <Value UnitID="Y.unit." AttributeID="C">1</Value>
            <Value ID="3" AttributeID="att_Z">C</Value>
        </Values>
    </Entity>
    <Entity Referenced="true" Selected="false" ParentID="W" UserTypeID="V" ID="PVP-5">
        <Name>123456 - 12</Name>
        <Values>
            <Value AttributeID="att_PVPS">2020-10-14</Value>
            <Value AttributeID="att_PVPP">123456</Value>
            <Value ID="12" AttributeID="att_X">12 - AAAAA C</Value>
            <Value AttributeID="att_PVPEi">2020-10-16</Value>
            <Value UnitID="Y.unit." AttributeID="C">15</Value>
            <Value ID="2" AttributeID="att_Z">A</Value>
        </Values>
    </Entity>
</Entities>

输出必须是:

<test>
  <test1>
    <value-ID-att_X-att_X>0</value-ID-att_X>
    <lines>
      <line>
        <att_PVPS>2020-10-06</att_PVPS>
        <AttributeID-C>10</AttributeID-C>
        <value-ID-att_Z>2</value-ID-att_Z>
      </line>
    </lines>
  </test1>
  <test1>
    <value-ID-att_X>23</value-ID-att_X>
    <lines>
      <line>
        <att_PVPS>2020-10-16</att_PVPS>
        <AttributeID-C>1</AttributeID-C>
        <value-ID-att_Z>3</value-ID-att_Z>
      </line>
    </lines>
  </test1>
  <test1>
    <value-ID-att_X>12</value-ID-att_X>
    <lines>
      <line>
        <att_PVPS>2020-10-14</att_PVPS>
        <AttributeID-C>15</AttributeID-C>
        <value-ID-att_Z>2</value-ID-att_Z>
       </line>
    </lines>
  </test1>
</test>
4

0 回答 0