2009-10-18 43 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