【发布时间】:2012-02-19 20:00:06
【问题描述】:
我有一段糟糕的 XML 需要通过 BizTalk 进行处理,并且我已设法将其规范化为下面的示例。我不是 XSLT 忍者,但在 web 和 VS2010 调试器之间,我可以找到绕过 XSL 的方法。
我现在需要一点 XSLT 来“清除”重复的元素,只保留最新的元素,这由 ValidFromDate 属性中的日期决定。
ValidFromDate 属性属于 XSD:Date 类型。
<SomeData>
<A ValidFromDate="2011-12-01">A_1</A>
<A ValidFromDate="2012-01-19">A_2</A>
<B CalidFromDate="2011-12-03">B_1</B>
<B ValidFromDate="2012-01-17">B_2</B>
<B ValidFromDate="2012-01-19">B_3</B>
<C ValidFromDate="2012-01-20">C_1</C>
<C ValidFromDate="2011-01-20">C_2</C>
</SomeData>
转换后我只想保留这些行:
<SomeData>
<A ValidFromDate="2012-01-19">A_2</A>
<B ValidFromDate="2012-01-19">B_3</B>
<C ValidFromDate="2012-01-20">C_1</C>
</SomeData>
关于我如何将 XSL 组合在一起的任何线索?我已经在网上寻找解决方案,并尝试了很多聪明的 XSL 排序脚本,但我觉得没有一个能把我引向正确的方向。
【问题讨论】:
-
另外...因为这将从 BizTalk 映射中调用,因此通过 .NET 我仅限于 XSLT 1.0 ...
-
可能是
C_1而不是C_2? -
是的,当然……谢谢。在我的任务中编辑了这个。
-
首先......很多非常棒的解决方案。通过阅读所有这些,我的 XSLT mojo 变得更好。我没有时间尝试所有这些,除了我选择的解决方案之外,还有其他解决方案可以解决问题。