我想知道如何使用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