2009-10-18 11 views
1

J'ai implémenté ceci dans un mode récursif mais comme la plupart des éditeurs xml semblent manquer d'espace de pile, j'ai pensé qu'il devrait y avoir une solution plus efficace.XSLT Différence de définition mais correspondant à une sous-section du noeud

J'ai regardé le modèle de différence de jeu de Jenni Tenison: http://www.exslt.org/set/functions/difference/set.difference.template.xsl

mais besoin de quelque chose un peu différent. J'ai besoin que l'égalité des noeuds soit définie comme concat (node ​​(.), @ Name).

Il y a un ensemble prédéfini de nœuds:

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

Je veux savoir le sous-ensemble des nœuds ci-dessous qui ne sont pas dans la liste ci-dessus:

<b name="Berty"><!-- different contents --></b> 
<b name="Boris"><!-- different contents --></b> 

Le résultat que je suis après serait un ensemble de nœuds de:

<b name="Boris"><!-- different contents --></b> 

Pour compliquer les choses, je ne peux pas utiliser la clé comme les noeuds sont différents d les indications (les définitions importées prioritaires sont la raison pour laquelle j'essaie de traiter ceci). Cela doit également être XSLT 1.0 car j'ai besoin de rendre dans IE/Firefox.

Toutes les pensées/suggestions/guidence bienvenu!

Répondre

0

Avez-vous jeté un oeil à la technique dans le livre de cuisine XSLT?

http://books.google.com/books?id=POJkiuHIAfoC&lpg=PP1&pg=PA324#v=onepage&q=&f=false

M. Mangano a une recette pour la différence de jeu, et une explication assez bien écrit aussi bien. Remarquez que lorsque vous comparez deux éléments qui semblent identiques mais qui ont deux documents source différents, XSLT les signale généralement différemment. Vous devez donc tester la valeur de l'élément, les attributs, etc.

Vous pourrait vouloir piquer à l'exemple de code du livre, fourni ici: http://oreilly.com/catalog/9780596009748

+0

Merci, j'ai jeté un coup d'oeil à cela et la valeur-égalité est récursive qui est effectivement ce que je fais déjà. Je me demandais s'il y avait un moyen de rendre l'égalité des valeurs plus efficace. – Squirrel

+0

Pas que je sache. Pour être brutalement honnête, j'ai dû sortir le XSLT, et le mettre dans un backend C++ pour l'efficacité. –

Questions connexes