如何在XSLT中动态创建节点?
我在 XSLT 转换方面遇到了问题。我输入了如下 XML:
<root>
<photoname>image</photoname>
<photocount>3</photocount>
</root>
我需要将其转换为以下 XML:
<root>
<response>
<images>
<image>
<small>image_1_120.jpg</small>
</image>
</images>
<images>
<image>
<small>image_2_120.jpg</small>
</image>
</images>
<images>
<image>
<small>image_3_120.jpg</small>
</image>
</images>
</response>
</root>
它可能与 XSLT(或 XSLT 中的 C# 函数)有关吗?
I have run into a problem with XSLT transformation. I have input XML as bellow:
<root>
<photoname>image</photoname>
<photocount>3</photocount>
</root>
and i need transform it to following XML:
<root>
<response>
<images>
<image>
<small>image_1_120.jpg</small>
</image>
</images>
<images>
<image>
<small>image_2_120.jpg</small>
</image>
</images>
<images>
<image>
<small>image_3_120.jpg</small>
</image>
</images>
</response>
</root>
Is it possble to do with XSLT(or with C# functions in XSLT)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是一个非递归解决方案(你需要有足够的节点:)),也称为Piez 方法:
当此转换应用于提供的 XML 文档时:
想要的正确结果是制作:
Here is a non-recursive solution (you need to have enough nodes :) ), also known as the Piez method:
when this transformation is applied on the provided XML document:
the wanted, correct result is produced:
您可以在 XSLT 中实现此目的,使用 recursize 模板基于 photocount 元素进行迭代
尝试以下 XSLT
当应用于示例 XML 时,将输出以下内容:
请注意,我不知道 <生成了strong>_120后缀,因此我必须将其硬编码到XSLT中。
You could achieve this in XSLT with a recursize template to iterate based on the photocount element
Try the following XSLT
When applied to your sample XML, the following is output:
Note that I didn't know how the _120 suffix was generated, so I had to hard-code it in the XSLT.
像这样的东西:
Something like that:
解决这个问题可能有很多方法。这是其中之一:
这是我的输出(在 Altova XMLSpy 下):
There are probably many approaches to this problem. This is one of them:
This is my output (under Altova XMLSpy):