[英]Using XSLT is it possible to compare two xml?
要查找兩個xml文件之間的差異,是否可以使用XSLT,如果可以,您可以共享一個小示例xslt? 請注意,xslt應該能夠獲取任何兩個xml文件,而不應該采用任何特定的樹結構
在開始使用XSLT或任何其他語言進行編碼之前,需要編寫有關程序要執行的操作的規范。 這是一個復雜的要求,不能在三行中定義。 至少有一家公司-DeltaXML-以此為生。
第一個挑戰是定義兩個文件相同意味着什么。 (您可以將fn:deep-equal的規范作為起點)。 完成此操作后,更困難的問題是定義文件不同時要產生的輸出。 舉一個非常簡單的例子,您想要文件的輸出是什么:
(一種)
<a><b/><c/></a>
(b)
<a><c/><b/></a>
從XSLT 2.0開始,如果需要例如deep-equal(doc('file1.xml'), doc('file2.xml'))
則可以使用deep-equal
https://www.w3.org/TR/xquery-operators/#func-deep-equal函數比較兩個常規序列或兩個文檔節點。 deep-equal(doc('file1.xml'), doc('file2.xml'))
,如果兩個文件被視為相等(如鏈接規范中所定義deep-equal(doc('file1.xml'), doc('file2.xml'))
,則返回true。
至於發現“差異”,您甚至沒有解釋您要尋找什么樣的結果。 商業版本中的Saxon 9具有saxon:deep-equal
,根據http://saxonica.com/html/documentation/functions/saxon/deep-equal.html ,您可以設置?
標志和錯誤偵聽器
解釋不匹配的原因。 如果結果不相等,則會將說明原因的警告消息發送到ErrorListener。 (通常,將發送一系列警告消息,從最低級別的差異開始,然后向上移動樹)
但這還不是標准化的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.