我有一個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