XSLT,XML:按属性值分组

时间:2017-10-11 16:29:31

标签: xml xslt

使用XSLT基于属性值对元素进行分组的最佳方法是什么? 使用XSLT 2.0或更高版本会更好吗?

非常感谢您的帮助

托马斯

原始XML:

<transaction>    
  <record type="1" >
    <field number="1" >
        <item >223</item>
    </field>
  </record>

  <record type="14" >
    <field number="1" >
        <item >777</item>
    </field>
  </record>

  <record type="14" >
    <field number="1" >
        <item >555</item>
    </field>
  </record>      
</transaction>

分组后的结果:

<transaction>
  <records type="1" >
      <record type="1" >
        <field number="1" >
            <item >223</item>
        </field>
      </record>
  </records>

  <records type="14" >
      <record type="14" >
        <field number="1" >
            <item >777</item>
        </field>
      </record>

      <record type="14" >
        <field number="1" >
            <item >555</item>
        </field>
      </record>
  </records>
</transaction>

1 个答案:

答案 0 :(得分:0)

在XSLT 2.0中,您可以使用public class MyApplication extends MultiDexApplication { private AppComponent appComponent; private static MyApplication appInstance; public static MyApplication get() { return appInstance; } @Override public void onCreate() { super.onCreate(); appInstance = this; setupAppComponent(); } private void setupAppComponent() { appComponent = DaggerAppComponent.builder() .appModule(new AppModule(this)) .userApiModule(new UserApiModule()) .build(); appComponent.inject(this); } public synchronized AppComponent getAppComponent() { if (appComponent == null) setupAppComponent(); return appComponent; } } ,但如果您要执行xsl:for-each-group,那么您必须在此时位于<xsl:for-each-group select="record" group-by="@type">记录上。

此外,您需要使用transaction来获取群组中的所有current-group元素。

试试这个XSLT

record