我有一个XML文件,我想按属性排序。该文件的结构如下图所示:通过XSL排序XML文件
<wb xmlns:cf="http://www.macromedia.com/2004/cfform">
<a:form name="chart">
<a:input FIELDNUMBER="09" INDEX="2" LEFT="200" />
<a:input FIELDNUMBER="08" INDEX="3" LEFT="200" />
<a:fieldset FIELD="a" FIELDNAME="FieldSet1">
<a:input FIELDNUMBER="02" INDEX="4" LEFT="200" />
<a:select1 FIELDNUMBER="01" />
</a:fieldset>
<a:fieldset FIELD="b" FIELDNAME="FieldSet1">
<a:input FIELDNUMBER="04" INDEX="7" LEFT="200" />
<a:select1 FIELDNUMBER="03" />
<a:fieldset FIELD="c" FIELDNAME="FieldSet1">
<a:input FIELDNUMBER="06" INDEX="8" LEFT="200" />
<a:input FIELDNUMBER="05" INDEX="6" LEFT="200" />
</a:fieldset>
</a:fieldset>
</a:form>
</wb>
我想上面的XML排序贯穿所有通过@fieldnumber,但同时我想保持XML的结构相同。我设法对其他XML文件进行排序,但他们没有这样的嵌套层次。这是可能的,只有XSL,如果是这样可以做到这一点?
输出应该如下:
<wb xmlns:cf="http://www.macromedia.com/2004/cfform">
<a:form name="chart">
<a:input FIELDNUMBER="08" INDEX="3" LEFT="200" />
<a:input FIELDNUMBER="09" INDEX="2" LEFT="200" />
<a:fieldset FIELD="a" FIELDNAME="FieldSet1">
<a:select1 FIELDNUMBER="01" />
<a:input FIELDNUMBER="02" INDEX="4" LEFT="200" />
</a:fieldset>
<a:fieldset FIELD="b" FIELDNAME="FieldSet1">
<a:select1 FIELDNUMBER="03" />
<a:input FIELDNUMBER="04" INDEX="7" LEFT="200" />
<a:fieldset FIELD="c" FIELDNAME="FieldSet1">
<a:input FIELDNUMBER="05" INDEX="6" LEFT="200" />
<a:input FIELDNUMBER="06" INDEX="8" LEFT="200" />
</a:fieldset>
</a:fieldset>
</a:form>
</wb>
作为另一示例,如果FIELDNUMBER 04被改变到的值大于7,如10(让我们假定10在本例中),那么的输出字段集与现场值b变为:
<a:fieldset FIELD="b" FIELDNAME="FieldSet1">
<a:select1 FIELDNUMBER="03" />
<a:fieldset FIELD="c" FIELDNAME="FieldSet1">
<a:input FIELDNUMBER="05" INDEX="6" LEFT="200" />
<a:input FIELDNUMBER="06" INDEX="8" LEFT="200" />
</a:fieldset>
<a:input FIELDNUMBER="10" INDEX="7" LEFT="200" />
</a:fieldset>
目前尚不清楚你所说的“保持XML结构相同”在这方面的意思。显示排序样本输入的输出结果。 – 2010-05-25 18:59:03
完成。 Jim,基本上我的意思是,如果XML包含大约20行,那么排序的输出将具有相同数量的行。这意味着排序功能将根据字段编号简单地调换行,但同时保持相同的嵌套和等量的层次。使排序有点困难的是,我可以通过fieldnumber来排序a:fieldset中的嵌套元素。 – user164701 2010-05-25 19:20:07
这还不够信息。如果您将字段编号04更改为FIELDNUMBER =“10”,那么它会保留在它所在的位置还是排在包含05和06的字段集之后? – 2010-05-25 19:21:44