按某些属性对XML元素进行排序 [英] Sort XML elements by certain attributes
本文介绍了按某些属性对XML元素进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要对如下所示的XML文档进行排序:
I would need to sort an XML document that looks like follows:
<root xmlns="http://my.name.space.com">
<product id="id001">
<datafield name="Name" value="value 1"/>
<datafield name="Description" value="descriptive text"/>
<dataAttribute id="id002">
<datafield name="Name" value="ZZZZZ"/>
<datafield name="Start Date" value="16/01/2010 00:00:00"/>
<datafield name="End Date" value=""/>
<datafield name="Status" value="Active"/>
</dataAttribute>
<dataAttribute id="id003">
<datafield name="Name" value="XXXXX"/>
<datafield name="Start Date" value="16/01/2010 00:00:00"/>
<datafield name="End Date" value=""/>
<datafield name="Status" value="Active"/>
</dataAttribute>
<dataAttribute id="id004">
<datafield name="Name" value="YYYYY"/>
<datafield name="Start Date" value="16/01/2010 00:00:00"/>
<datafield name="End Date" value=""/>
<datafield name="Status" value="Active"/>
</dataAttribute>
</product>
</root>
dataAttribute元素应按@name Attribute ="Name"的顺序进行排序,但排序应按该元素的@value属性进行.
The dataAttribute elements should be sorted, by the one which @name Attribute = "Name" but the sorting should occure by this element's @value attribute.
您对此有任何提示吗?
非常感谢!
弗里兹
推荐答案
将xsl:sort
与适当的select
属性配合使用:
Well use xsl:sort
with the proper select
attribute:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:df="http://my.name.space.com"
exclude-result-prefixes="df">
<xsl:strip-space elements="*"/>
<xsl:output indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="df:product">
<xsl:copy>
<xsl:apply-templates select="@* | *[not(self::df:dataAttribute)]"/>
<xsl:apply-templates select="df:dataAttribute">
<xsl:sort select="df:dataField[@name = 'Name']/@value"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这篇关于按某些属性对XML元素进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文