我需要帮助制作一个xsl地图文件。 我有一个输入。这包含一些项目的列表:
<root>
<resultListIn>
<resultItemIn>
<a>aaa</a>
<b>bbb</b>
<c>ccc1</c>
</resultItemIn>
<resultItemIn>
<a>aaa</a>
<b>bbb</b>
<c>ccc2</c>
</resultItemIn>
<resultItemIn>
<a>aab</a>
<b>bbb</b>
<c>ccc3</c>
</resultItemIn>
<resultItemIn>
<a>aaa</a>
<b>bbc</b>
<c>ccc4</c>
</resultItemIn>
<resultItemIn>
<a>aaa</a>
<b>bbc</b>
<c>ccc5</c>
</resultItemIn>
</resultListIn>
</root>
现在我想把它变成一个看起来像地图的结构:我们的“关键”将是&lt;一个&GT;和&lt; B个元素(来自每个resultItem),该值将是&lt; c取代;来自每个&lt; resultItem&GT;具有相同的&lt;一个&GT;和&lt; B个值。
所以输出应该是这样的(你可以看到&#34; cc1&#34; +&#34; cc2&#34;和&#34; cc4&#34; +&#34; cc5&#34;值在正确的resultItem&lt; cItemList&gt;中,因为在输入中&lt; a&gt;和&lt; b&gt;元素在相应的&lt; resultItem&gt;中是相同的:
<resultroot>
<resultListOut>
<resultItem>
<a>aaa</a>
<b>bbb</b>
<cItemList>
<c>cc1</c>
<c>cc2</c>
</cItemList>
</resultItem>
<resultItem>
<a>aab</a>
<b>bbb</b>
<cItemList>
<c>cc3</c>
</cItemList>
</resultItem>
<resultItem>
<a>aaa</a>
<b>bbc</b>
<cItemList>
<c>cc4</c>
<c>cc5</c>
</cItemList>
</resultItem>
</resultListOut>
</resultroot>
你们能帮助我吗?我不需要一个完整的xsl代码,只需要一些指导,建议如何从哪里开始,我应该写什么样的算法。我真的没有看到如何在xsl中实现它(遗憾的是我不能使用Java)。
我尝试用每个结构来考虑它,但是我看到它是一个很大的混乱。
提前致谢, 汤姆
答案 0 :(得分:0)
正如您所发现的,Muenchian grouping是您使用XSLT 1.0的答案。
要匹配两个元素,只需连接两个值(使用分隔符以防止误报),例如:
<xsl:key name="k" match="resultItem" use="concat(a,'|', b)"/>