我有一个关于使用xslt复制一些xml的问题。
我有xml,有时包含带有迭代的父节点。它们看起来像这样。
<opdracht iteration="1">
<a> 1 </a>
<b> 1 </b>
</opdracht>
<opdracht iteration="2">
<a> 1 </a>
<b> 1 </b>
</opdracht>
<opdracht iteration="3">
<a> 1 </a>
<b> 1 </b>
</opdracht>
如果我选择3个项目,xml将构建3个迭代节点。但是如果我选择6个项目中的5个,它会生成5或6个不同的xml迭代。
我需要制作一些允许我复制这些父迭代节点和子迭代节点的XSLT,只要它们被迭代。并以相同的原始名称输出它们。所以:
<opdracht iteration="1"> Becomes <opdracht>
And
<opdracht iteration="2"> becomes also <opdracht>
等等......
我该怎么做?
答案 0 :(得分:0)
我不完全理解这个问题,但我“想”你说要复制XML,但是从 opdracht 中删除 @iteration 属性元件。
如果是这种情况,您可以通过XSLT 身份转换的简单扩展来实现
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="opdracht/@iteration" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于以下XML
<root>
<opdracht iteration="1">
<a> 1 </a>
<b> 1 </b>
</opdracht>
<opdracht iteration="2">
<a> 1 </a>
<b> 1 </b>
</opdracht>
<opdracht iteration="3">
<a> 1 </a>
<b> 1 </b>
</opdracht>
</root>
以下是输出:
<root>
<opdracht>
<a> 1 </a>
<b> 1 </b>
</opdracht>
<opdracht>
<a> 1 </a>
<b> 1 </b>
</opdracht>
<opdracht>
<a> 1 </a>
<b> 1 </b>
</opdracht>
</root>