我想知道如何使用xsl模板將我的xml文檔轉換爲具有原始元素層次結構的另一個xml文檔。我還想爲新生成的XML中的元素添加一些屬性。如何使用xsl模板和遞歸構建一個新的xml文檔?
我原來的XML文件看起來是這樣的:
<shop>
<product>
<cookie ID="001">
<price>2</price>
</cookie>
</product>
<product>
<bread ID="002">
<price>5</price>
</bread>
</product>
<product>
<milk ID="003">
<price>2</price>
</milk>
</product>
</shop>
我想這個轉換爲下面的XML:
<newXML>
<newElement>
<newElement ID="001">
<newElement price="2"/>
</newElement>
</newElement>
<newElement>
<newElement ID="002">
<newElement price="5"/>
</newElement>
</newElement>
<newElement>
<newElement ID="003">
<newElement price="2"/>
</newElement>
</newElement>
</newXML>
什麼是做到這一點的好辦法?這可以通過模板遞歸來完成,還是有更好的方法?我一直在嘗試使用以下邏輯:
- 使創建元素
- 閱讀潮流元素ID的模板,如果它存在,並把它爲newElement
- 如果當前元素有一個孩子,這個應用模板(某種遞歸)
儘管進行了很多嘗試,我還是無法完成這項工作。您的幫助將不勝感激!
非常感謝你的非常詳細的解答。所有似乎都在工作,據我測試exept xsl:template>我想這個問題與「product/* [@ ID]」有關。我不斷收到以下錯誤:運行時錯誤:file transform.xsl第47行元素副本 屬性節點必須在任何子節點之前添加到元素。無論如何,你的回答非常有價值。 –
Coltrane
2013-02-17 14:28:09