使用 xslt 将 xml 复杂节点元素拆分为多个节点
Posted
技术标签:
【中文标题】使用 xslt 将 xml 复杂节点元素拆分为多个节点【英文标题】:Split xml complex node elements into multiple nodes using xslt 【发布时间】:2012-09-17 10:56:19 【问题描述】:有没有办法使用 xslt 将一个父节点拆分成多个节点?
我想将源 xml 转换为目标。
源xml
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<item>
<id>Some id</id>
<node1>
<node2 size="10.5" code="abcd"></node2>
<node2 size="10" code="cdef"></node2>
</node1>
</item>
</channel>
</rss>
目标 xml
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<item>
<id>Some id_10.5</id>
<size>10.5</size>
<code>abcd</code>
</item>
<item>
<id>Some id_10</id>
<size>10</size>
<code>cdef</code>
</item>
</channel>
</rss>
如果您注意到目标 xml 中节点 id 的值,它会附加一个下划线和大小。
【问题讨论】:
谁能帮我完成下面迈克尔给出的解决方案。 【参考方案1】:非常直截了当,不清楚您为什么会觉得这很困难。
<xsl:template match="node2">
<item>
<id><xsl:value-of select="../../id"/>_<xsl:value-of select="@size"/></id>
<size><xsl:value-of select="@size"/></size>
<code><xsl:value-of select="@code"/></code>
</item>
</xsl:template>
为其他元素加上一些琐碎的模板规则。
【讨论】:
谢谢@Michael 但它有一些问题。我将以下行放在模板以上是关于使用 xslt 将 xml 复杂节点元素拆分为多个节点的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 或 XSLT 将复杂的 XML 转换为 CSV
有没有办法使用 XSLT 基于 XML 中的元素复制 XML 节点 n 次?