如何按属性数量对 DOM XML 元素进行排序?
How to order DOM XML elements by number of attributes?
有没有可行的方法可以按属性计数对元素进行排序?我主要关心性能。
我想按属性数量从多到少对元素进行排序。
例如XML 文档
<!-- 1 -->
<element attr1="" attr2="">
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
</element>
<!-- 2 -->
<element attr1="" attr2="" attr3"">
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
</element>
<!-- 3 -->
<element attr1="">
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
</element>
在这种情况下正确的顺序是 2、1、3
与大多数 XML 转换一样,完成这项工作的最佳工具是 XSLT。以下是 XSLT 2.0,但在 1.0 中几乎一样简单
<xsl:template match="/*">
<xsl:perform-sort select="element">
<xsl:sort select="count(@*)" order="descending"/>
</xsl:perform-sort>
</xsl:template>
有没有可行的方法可以按属性计数对元素进行排序?我主要关心性能。
我想按属性数量从多到少对元素进行排序。
例如XML 文档
<!-- 1 -->
<element attr1="" attr2="">
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
</element>
<!-- 2 -->
<element attr1="" attr2="" attr3"">
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
</element>
<!-- 3 -->
<element attr1="">
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
<param name="" value=""/>
</element>
在这种情况下正确的顺序是 2、1、3
与大多数 XML 转换一样,完成这项工作的最佳工具是 XSLT。以下是 XSLT 2.0,但在 1.0 中几乎一样简单
<xsl:template match="/*">
<xsl:perform-sort select="element">
<xsl:sort select="count(@*)" order="descending"/>
</xsl:perform-sort>
</xsl:template>