web-dev-qa-db-ja.com

行長に耐性のあるXML差分

この質問 の答えを見てきましたが、残念ながら、これまでのところ、どれも役に立ちませんでした。

ブッシュに勝るものはありませんが、C#in Depthの第2版は、現在コピー編集中です。コピーエディターが実際に何をしたかを簡単に確認できるようにしたいので、彼の変更を拒否または受け入れることができます。

変更された形式のdocbookを使用していますが、生のXMLソースを見ると十分満足しています。これまでのところすべて問題ありません。ただし、コピーエディタが変更を加えると、行の折り返しが変更される可能性があります。だから、以前読んだもの:

<para>Foo bar baz
 second line</para>

今読む

<para>Foo bar grontle
 baz second line</para>

ここでのrealの変更は、「grontle」の挿入です。 「baz」が最初の行から2番目の行に移動したことは気にしませんが、私が見たすべての差分ツールは移動します。

1つのオプションは、ドキュメント全体(または段落全体)を1行に再フォーマットすることです...しかし、差分ツールは表示時に折り返されないため、それは非常に読みにくいものです。

私が持っているツールで管理できると確信していますが、誰かがもっと良いことを知っているなら、私は本当にうれしいですそれ。私の出版社もそうするだろうと思います。

(Windowsタグをここに含めたのは、Windowsで使用できるようにする必要があるためです。非-について聞きたい Windowsソフトウェアもありますが、Windowsでのビルドを支援できる場合に限ります。

13
Jon Skeet

SourceGear DiffMerge は、XML(および他の多くの言語)のルールセットサポートとともに、これを提供します。例はもちろん実際のプログラムを単純化したものであるため、すべての問題が解決するかどうかはわかりません。もう少し複雑な変更を試みましたが、それらもうまく機能しているようです。

説明した差分については、以下のサンプルを参照してください

simple diff

9
Sander Rijken

私の解決策は比較を超えてです。 (はるかに強力なツール)

それで、私たちは問題を見ることから始めます。

enter image description here

BCには特別なXML解析の役割があります:(すでにXMLの役割がありますが、事前分析はありませんSorted and Tidied

enter image description here

だから私たちは http://www.scootersoftware.com/download.php?zz=kb_moreformats_alt に行きます

enter image description here

そして今 -

enter image description here

c#の次のエディションで詳細に使用することを願っています

p.s.写真のテキストが小さすぎる場合は、写真をクリックして元の画像をロードしてください。

4
Royi Namir

私は、その仕事(およびその他のいくつかの機能)を実行する必要があるXML差分ツール(商用ソフトウェア)の作成者です。ここからダウンロードできるテストバージョン(最大100 KBのXmlファイルに制限されています)があります。

http://xmldifftool.com/download_en.html

簡単な紹介もここにあります:

http://xmldifftool.com/xtcmanual_en.html

1
Martin

@Jon Skeet:質問の中で、差分ツールは表示時に折り返されないとおっしゃいました。
vimdiff(Windowsではgvimからも利用可能)を使用すると、表示されたxmlファイルを:window set wrapでラップできます。 参照リンク
また、:diffupdateを実行して差分を更新することもできます。

0
GuruM

SD Smart Differencer 実際のレイアウトではなく、構造に基づいてドキュメントを比較します。

XML SmartDifferencerがあります。 XMLの場合、これはタグとコンテンツの順序を一致させることを意味します。指定した特定のフラグメントのテキスト文字列が異なっていることに注意してください。 (現在、空白が正規化されているテキストと重要なテキストのXML概念を理解していませんが、それほど害はないと思います)。

0
Ira Baxter

少し前の会社でも同じ問題がありました。彼らは真の「XMLの違い」を見つけたかったのですが、完全な解決策はそこにはないようです。

最も簡単な解決策は、最初にXMLで プリティプリントスクリプト を実行して行末と間隔を正規化し、次に選択した差分ツールを実行することです( WinMerge is Nice Windows用)。これにより、ほとんどのdifftoolsがXMLからスローする多くの浮浪者が削除され、スクリプトを簡単に作成できます。

0
jweede