我有一个类似于以下结构的输入XML:
<request>
<X>
<Y>
...
<Cid>1</Cid>
<Sid>2</Sid>
<Pid>
<A1>
..
</A1>
</Pid>
</Y>
</X>
</request>
<request>
<X>
<Y>
...
<Cid>1</Cid>
<Sid>3</Sid>
<Pid>
<A1>
..
</A1>
</Pid>
</Y>
</X>
</request>
<request>
<X>
<Y>
...
<Cid>1</Cid>
<Sid>2</Sid>
<Pid>
<A1>
..
</A1>
</Pid>
</Y>
</X>
</request>
<request>
<X>
<Y>
...
<Cid>2</Cid>
<Sid>2</Sid>
<Pid>
<A1>
..
</A1>
</Pid>
</Y>
</X>
</request>
我必须在转换后的XML顶部提取一些[Cid和Sid]的唯一Id组合。其余数据(从Pid,A1,Y等获取)将被转换并放在otherDtls节点之后,该节点在创建所有Id之后出现。输出将如下所示:
<Id>
<Id1>2</Id1>
<Id2>1</Id2>
</Id>
<Id>
<Id1>3</Id1>
<Id2>1</Id2>
</Id>
<Id>
<Id1>2</Id1>
<Id2>2</Id2>
</Id>
<otherDtls>
.....
<otherDtls>
请注意[Cid值&#39; 1&#39; AND Sid值&#39; 2&#39;]组合是重复的,因此它只在转换后的XML中出现一次。 此外,请注意Cid值在Id2中,Sid值在Id1中。我无法找到任何有用的解决方案来提取[Cid和Sid]的唯一Id组合,并获取值以更改标签名称并在顶部打印。
有人可以帮忙吗?
答案 0 :(得分:0)
这是grouping problem,使用连接Cid
和Sid
的分组键,例如<xsl:key name="group" match="Y" use="concat(Cid, '|', Sid)"/>
。