如何使用 xslt 创建新列表并在其中标记节点
我正在使用身份转换将一个 XML 转换为另一个 XML,在此期间,根据我想要在新列表中标记几个节点的条件。 假设我有一个像这样的 XML: p1 p2 p3 p4
<点头>
A
B
在此 XML 中,我想将 'nod' 的名称更新为 'newnod' 并为元素 'c' 创建一个有序列表;因此输出如下: p1 p2 p3 p4
A
B
<有序列表>
; <列表项>
; <列表项>
; <列表项>
;
有人可以告诉我该怎么做吗?
谢谢 !!!
I am transforming an XML to another using Identity Transformation and during this, based on a condition I want to tag few nodes in a new list.
Suppose, I have an XML like:
<nod>
<a>A</a>
<b>B</b>
<c><p>p1</p></c>
<c><p>p2</p></c>
<c><p>p3</p></c>
<c><p>p4</p></c>
</nod>
From this XML , I want to update name of 'nod' to 'newnod' and create an orderedlist for element 'c' ; so that output comes as:
<newnod>
<a>A</a>
<b>B</b>
<orderedlist>
<listitem><p>p1</p></listitem>
<listitem><p>p2</p></listitem>
<listitem><p>p3</p></listitem>
<listitem><p>p4</p></listitem>
</orderedlist>
</newnod>
Can anybody please tell me how to do this.
Thanks !!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是一个真正的“推送式”解决方案:
当此转换应用于提供的 XML 文档时:
生成所需的正确结果 :
Here is a true "push-style" solution:
when this transformation is applied on the provided XML document:
the wanted, correct result is produced:
这会为您的示例生成所需的输出:
请注意,它可能需要针对您的实际输入进行一些调整。例如,排序的细节。或者
a
、b
和c
的序列。是否将所有c
集中在一起?但它适用于你的样本。This produces the desired output for your example:
Note that it might need some tweaking for your actual input. For example, the details of sorting. Or the sequence of
a
,b
andc
. And lump allc
together or not? But it works for your sample.你可以使用类似的东西:
You could use something like:
其他方法是像这样遍历以下轴:
或者更短(更多“推送样式”):
两种输出:
注意:即使使用 XSLT 2.0,使用此模式也可以更好地表达一些复杂的序列处理。
Other approach is traversing the following axis like this:
Or shorter (more "push style"):
Both output:
Note: Even with XSLT 2.0, some complex sequence processing are expressed better with this pattern.