【发布时间】:2016-01-19 09:44:18
【问题描述】:
如何将选定的 Xml 节点移动到选定节点的最后一个。下面是一个示例 xml。
<Custom>
<Root name="root1">
<Folder name="Folder1">
<Node name="Sample Node">
<LevelGroup>
<Level name="1">First Level</Level>
<Level name="5">Fifth Level</Level>
</LevelGroup>
</Node>
</Folder>
<Folder name="Folder2">
<Node name="Node A">
<LevelGroup>
<Level name="1">First Level</Level>
<Level name="2">Second Level</Level>
</LevelGroup>
</Node>
<Node name="Node C">
<LevelGroup>
<Level name="4">Fourth Level</Level>
<Level name="5">Fifth Level</Level>
</LevelGroup>
</Node>
</Folder>
</Root>
<Root name="root2">
<Folder name="FolderA">
<Node name="Node X">
<LevelGroup>
<Level name="1">First Level</Level>
</LevelGroup>
</Node>
</Folder>
</Root>
<Root name="root4">
<Folder name="FolderC">
<Node name="Node Z">
<LevelGroup>
<Level name="1">First Level</Level>
</LevelGroup>
</Node>
</Folder>
</Root>
</Custom>
在上面的 XML 中,有很多 Node 叫做“Root”和“Node”。 “Node”有一个名为“name”的属性。如果 name 属性值包含字符串“Sample Node”,则它必须移动到匹配的“Node”的最后一个。我们如何通过 xslt 实现这一点。
以下是预期结果:
<Custom>
<Root name="root1">
<Folder name="Folder2">
<Node name="Node A">
<LevelGroup>
<Level name="1">First Level</Level>
<Level name="2">Second Level</Level>
</LevelGroup>
</Node>
<Node name="Node C">
<LevelGroup>
<Level name="4">Fourth Level</Level>
<Level name="5">Fifth Level</Level>
</LevelGroup>
</Node>
</Folder>
<Folder name="Folder1">
<Node name="Sample Node">
<LevelGroup>
<Level name="1">First Level</Level>
<Level name="5">Fifth Level</Level>
</LevelGroup>
</Node>
</Folder>
</Root>
<Root name="root2">
<Folder name="FolderA">
<Node name="Node X">
<LevelGroup>
<Level name="1">First Level</Level>
</LevelGroup>
</Node>
</Folder>
</Root>
<Root name="root4">
<Folder name="FolderC">
<Node name="Node Z">
<LevelGroup>
<Level name="1">First Level</Level>
</LevelGroup>
</Node>
</Folder>
</Root>
</Custom>
改变必须发生在
<Folder name="Folder1">
<Node name="Sample Node">
<LevelGroup>
<Level name="1">First Level</Level>
<Level name="5">Fifth Level</Level>
</LevelGroup>
</Node>
</Folder>
提前致谢。
【问题讨论】:
标签: xslt