簡體   English   中英

使用XSLT是否可以比較兩個xml?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM