【发布时间】:2015-06-03 09:11:30
【问题描述】:
假设我有以下 XML 结构
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl"?>
<?xml-stylesheet type="text/xsl"?>
<WTT>
<Msg
UserText="Iswritable = true" >
</Msg>
<Test
BaseLvl="Msg" >
</Test>
<start
id = "1" >
</start>
<Msg
UserText="Iswritable = true" >
</Msg>
<Test
BaseLvl="Msg" >
</Test>
<Msg
UserText="WriteBuffers = 2">
</Msg>
<Test
BaseLvl="Txt" >
</Test>
<Msg
UserText="ReadBuffers = 1">
</Msg>
<end
id ="1" >
</end>
<start
id = "2" >
</start>
<Test
BaseLvl="sound" >
</Test>
<Test
BaseLvl="Msg" >
</Test>
<Msg
UserText="vertexbuffers = 1">
</Msg>
<end
id ="2" >
</end>
<Msg
UserText="vertexbuffers = 1">
</Msg>
</WTT>
输出:
<start
id = "1" >
</start>
<Msg
UserText="Iswritable = true" >
</Msg>
<Msg
UserText="ReadBuffers = 1">
</Msg>
<end
id ="1">
</end>
<start
id = "2" >
</start>
<Msg
UserText="vertexbuffers = 1">
</Msg>
<end
id ="2" >
</end>
xml的结构不是固定的,任何标签都可以放在任何地方。
有没有办法做到这一点?
我尝试使用 foreach 并仅选择 msg 节点,但我们无法在 xslt 中破坏 foreach。
我只需要在单独的组中选择<start/> 和<end/> 标记之间的所有<msg/> 标记。
【问题讨论】:
-
请发布 (1) 格式良好的 XML 输入,(2) 转换的预期输出,以及 (3) 您正在使用的 XSLT 版本。
-
我已经编辑了您要求的内容。我正在使用 xslt 1.0 版
-
为什么
<Msg UserText="WriteBuffers = 2"/>没有包含在您的输出中?