2009-10-18 78 views
1

我已经在递归fashon中实现了这一点,但由于大多数xml编辑器似乎耗尽堆栈空间,我认为应该有一个更有效的解决方案。XSLT设置差异,但在节点的一个子节点上匹配

我已经看了珍妮Tenison的差集模板: http://www.exslt.org/set/functions/difference/set.difference.template.xsl

但需要的东西略有不同。我需要将节点相等性定义为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> 

以物为节点都是不同的d我不能使用复杂的关键ocuments(重写导入的定义是我试图处理这个问题的原因)。 此外,这需要XSLT 1.0,因为我需要在IE/Firefox中呈现。

任何想法/建议/ guidence的欢迎!

回答

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

+0

谢谢,我已经看过了,价值相等是递归的,这是有效的我已经在做什么。我想知道是否有办法更有效地进行价值平等。 – Squirrel 2009-10-19 21:00:09

+0

不是我所知道的。说实话,我不得不把XSLT拿出来,放到C++后端来提高效率。 – 2009-10-20 05:10:19

相关问题