2016-11-28 5 views
0

Um die Unterschiede zwischen zwei XML-Dateien zu finden, ist es möglich, XSLT zu verwenden, wenn ja, können Sie ein kleines Beispiel teilen xslt ?? Beachten Sie, dass xslt in der Lage sein sollte, zwei beliebige XML-Dateien zu verwenden. Es sollte keine bestimmte Baumstruktur annehmen.Mit XSLT ist es möglich, zwei XML zu vergleichen?

Antwort

0

Beginnend mit XSLT 2.0 können Sie die Funktion deep-equalhttps://www.w3.org/TR/xquery-operators/#func-deep-equal verwenden, um zwei Sequenzen im Allgemeinen oder zwei Dokumentknoten zu vergleichen, wenn Sie z. deep-equal(doc('file1.xml'), doc('file2.xml')) mit return true, wenn die beiden Dateien als gleich betrachtet werden, wie in der verknüpften Spezifikation definiert.

Um "die Unterschiede" zu finden, haben Sie nicht einmal erklärt, welche Art von Ergebnis Sie suchen. 9 in den kommerziellen Editionen Saxon hat saxon:deep-equal die nach http://saxonica.com/html/documentation/functions/saxon/deep-equal.html können Sie die ? Flagge und einen Fehler-Listener für einen nicht-Spiel

Erklären Grund setzen. Wenn das Ergebnis nicht gleich ist, wird eine Warnung Nachricht, die den Grund erklärt, an den ErrorListener gesendet. (In Allgemeinen eine Folge von Warnmeldungen gesendet werden, beginnend mit der untersten Ebene Differenz und den Baum nach oben bewegt)

Aber das ist nicht etwas, standardisiert.

1

Bevor Sie mit der Programmierung in XSLT oder einer anderen Sprache beginnen, müssen Sie eine Spezifikation schreiben, was das Programm tun soll. Dies ist eine komplexe Anforderung, die nicht in drei Zeilen definiert werden kann. Es gibt mindestens eine Firma - DeltaXML - die das für ihren Lebensunterhalt tut.

Die erste Herausforderung besteht darin, zu definieren, was es bedeutet, dass zwei Dateien gleich sind. (Sie könnten die Spezifikation von fn: deep-equal als Ausgangspunkt nehmen). Sobald Sie das getan haben, ist das viel schwierigere Problem zu definieren, welche Ausgabe Sie produzieren möchten, wenn die Dateien unterschiedlich sind. Um ein sehr einfaches Beispiel, welche Ausgabe würden Sie für die Dateien:

(a)

<a><b/><c/></a> 

(b)

<a><c/><b/></a> 
+0

in diesem Beispiel gibt es keinen Unterschied – user3626733

+0

, welche Art von beweist den Punkt: Sie können dieses eine Beispiel nicht gleichzeitig angeben, Sie müssen die allgemeinen Regeln schreiben. –

Verwandte Themen