2
我需要將xml數據轉換爲其他格式。我做了很少XSL的東西,我的互聯網搜索沒有給我需要的結果。我有這個樣本XML:使用XSL將XML轉換爲XML
<MailStatusReport>
<Output>
<ColMetaData ColCount="5">
<ColList>
<Col Name="parcelid" Pos="1"/>
<Col Name="currentlocationid" Pos="2"/>
<Col Name="deliverystatus" Pos="4"/>
<Col Name="requestedlocationid" Pos="3"/>
<Col Name="requestor" Pos="5"/>
</ColList>
</ColMetaData>
<RowList>
<Row>
<ColList>
<Col Pos="2">Delaware</Col>
<Col Pos="1">001</Col>
<Col Pos="3">NewYork</Col>
<Col Pos="4">InRoute</Col>
<Col Pos="5">John</Col>
</ColList>
</Row>
<Row>
<ColList>
<Col Pos="1">002</Col>
<Col Pos="2">Sanjose</Col>
<Col Pos="3">Michigan</Col>
<Col Pos="4">Delivered</Col>
<Col Pos="5">Rob</Col>
</ColList>
</Row>
</RowList>
</Output>
</MailStatusReport>
所需的輸出:
<MailStatusReport>
<Row parcelid="001" currentlocationid="Delaware" requestedlocationid="NewYork" deliverystatus="InRoute" requestor="John"/>
<Row parcelid="002" currentlocationid="Sanjose" requestedlocationid="Michigan" deliverystatus="Delivered" requestor="Rob"/>
</MailStatusReport>
幾點需要注意:
- ColMetaData/ColList /列的輸入XML的名稱屬性最終成爲輸出xml的每個Row元素的屬性名稱。
- RowList/Row/ColList/Col在輸入xml中的值最終成爲輸出xml中屬性的值,該屬性與ColMetaData/ColList/Col部分中的Pos具有相同的Pos。
- ColMetaData的ColCount屬性值得信任,如果需要可以用作計數器。
的僞代碼,我能想到的是:
For each CurrentRow in the RowList
Begin Building OutputRow
For each Col in ColMetaData/ColList
attrName = ColMetaData/ColList/Col/Name
attrPos = ColMetaData/ColList/Col/Pos
attrVal = CurrentRow/ColList/Col[@Pos=$attrPos]
Add $attrName=$attrVal to the outputRow
我希望得到任何幫助,我能搞定! 感謝 SRINIVAS
非常感謝你Dimitre這按預期工作。 – 2012-01-03 17:13:42
@SrinivasPalakala:不客氣。 – 2012-01-03 17:23:16