【发布时间】:2013-12-04 23:24:51
【问题描述】:
我有以下输入 XML,需要使用 xslt 进行转换
输入 Xml:
<element>
<childelement xml:type="base" id="645">
<seg1>a</seg1>
<seg2>A</seg2>
<seg3>0</seg3>
</childelement >
<childelement xml:type="level1" id="646">
<seg1>a</seg1>
<seg2>B</seg2>
<seg3>1</seg3>
</childelement>
<childelement xml:type="level2" id="656">
<seg1>a</seg1>
<seg2>C</seg2>
<seg3>0</seg3>
</childelement>
</element>
<element>
<childelement xml:type="base" id="647">
<seg1>a</seg1>
<seg2>A</seg2>
<seg3>0</seg3>
</childelement>
<childelement xml:type="level1" id="648">
<seg1>a</seg1>
<seg2>B</seg2>
<seg3>0</seg3>
</childelement>
<childelement xml:type="level2" id="649">
<seg1>a</seg1>
<seg2>D</seg2>
<seg3>0</seg3>
</childelement>
</element>
预期输出:
<element>
<childelement xml:type="base" id="645">
<seg1>a</seg1>
<seg2>A</seg2>
<seg3>0</seg3>
</childelement >
<childelement xml:type="level1" id="646">
<seg1>a</seg1>
<seg2>B</seg2>
<seg3>1</seg3>
</childelement>
<childelement xml:type="level2" id="656">
<seg1>a</seg1>
<seg2>C</seg2>
<seg3>0</seg3>
</childelement>
</element>
<element>
<childelement xml:type="base" id="647">
<seg1>a</seg1>
<seg2>A</seg2>
<seg3>0</seg3>
</childelement>
<childelement xml:type="level2" id="649">
<seg1>a</seg1>
<seg2>D</seg2>
<seg3>0</seg3>
</childelement>
</element>
所以我想做的是识别所有具有相同属性但基础的子元素(即此处的 level1 和 level2 可能更高级别)以及 seg1 和 seg2 的相同内部文本,只保留第一个最高的seg3(在这种情况下,id = 646 并过滤掉 id = 648)。
xml/xlst(根据属性和内部文本匹配重复项)是否可以进行这样的处理?
感谢阅读
【问题讨论】:
-
你可以使用 XLST 2.0 吗?
标签: xml xslt duplicates filtering