XSLT设置差异但匹配节点的子部分

时间:2009-10-18 08:17:33

标签: xslt set

我已经在一个递归时装中实现了这个,但由于大多数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中进行渲染。

任何想法/建议/指导都很好!

1 个答案:

答案 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