寻求使用XSLT来转换我的XML。示例XML如下:使用XSLT重构XML节点
<root>
<info>
<firstname>Bob</firstname>
<lastname>Joe</lastname>
</info>
<notes>
<note>text1</note>
<note>text2</note>
</notes>
<othernotes>
<note>text3</note>
<note>text4</note>
</othernotes>
我在寻找提取所有“笔记”元素,并让他们父节点下的“注意事项”。
我在寻找的结果如下:
<root>
<info>
<firstname>Bob</firstname>
<lastname>Joe</lastname>
</info>
<notes>
<note>text1</note>
<note>text2</note>
<note>text3</note>
<note>text4</note>
</notes>
</root>
我试图用的是让我来提取我的“笔记”的XSLT,但我想不通我怎么能将它们重新包装在“笔记”节点中。
下面是我使用的XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="notes|othernotes">
<xsl:apply-templates select="note"/>
</xsl:template>
<xsl:template match="*">
<xsl:copy><xsl:apply-templates/></xsl:copy>
</xsl:template>
</xsl:stylesheet>
我与上面的XSLT得到的结果是:
<root>
<info>
<firstname>Bob</firstname>
<lastname>Joe</lastname>
</info>
<note>text1</note>
<note>text2</note>
<note>text3</note>
<note>text4</note>
</root>
感谢
不错,干净,+1。我想用来代替重新创建,这是我个人偏好的问题。另外,要创建特定命名空间中的元素,您可以轻松声明一个前缀并使用它:''。 ''实际上只在元素名称应该是动态时才需要。 –
Tomalak
2010-06-06 21:08:36