我已经在一个递归时装中实现了这个,但由于大多数xml编辑器似乎耗尽了堆栈空间,我认为应该有一个更有效的解决方案。
我看过Jenni Tenison的设定差异模板: http://www.exslt.org/set/functions/difference/set.difference.template.xsl
但需要稍微不同的东西。我需要定义节点相等性 as concat(node(。),@ name)。
有一组预定义的节点:
<a name="Adam"><!-- don't care about contents for equality purposes --></a>
<b name="Berty"><!-- don't care about contents for equality purposes --></b>
<a name="Charly"><!-- don't care about contents for equality purposes --></a>
我想找出以下列表中不在上面列表中的子集:
<b name="Berty"><!-- different contents --></b>
<b name="Boris"><!-- different contents --></b>
我之后的结果将是一个节点集:
<b name="Boris"><!-- different contents --></b>
复杂的事情我不能使用Key因为节点在不同的文档中(覆盖导入的定义是我试图处理它的原因)。 这也需要XSLT 1.0,因为我需要在IE / Firefox中进行渲染。
任何想法/建议/指导都很好!
答案 0 :(得分:0)
您是否看过XSLT Cookbook中的技术?
http://books.google.com/books?id=POJkiuHIAfoC&lpg=PP1&pg=PA324#v=onepage&q=&f=false
先生。曼加诺有一套设定差异的方法,以及一个相当好的书面解释。请注意,当您比较两个看起来相同但有两个不同源文档的元素时,XSLT通常会将它们报告为不同,因此您必须通过元素,属性等的值进行测试。
您可能想要查看本书中的示例代码,此处提供: http://oreilly.com/catalog/9780596009748