行長に寛容なXML diff


13

私はこの質問に対する答えを見てきましたが、残念ながら今のところ助けてくれる人はいません。

茂みに負けないように、C#in Depthの第2版は現在コピー編集中です。コピーエディターの処理を本当に簡単に確認できるようにしたいので、彼の変更を拒否または受け入れることができます。

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

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

今読む

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

さて、ここでの本当の変化は、「栄光」の挿入です。「baz」が最初の行から2番目の行に移動したことは気にしませんが、私が見たすべてのdiffツールは実行します。

私は1つのオプションが文書全体(またはおそらく段落全体)を単一行に再フォーマットすることであることを理解しています...しかし、それは表示するときにdiffツールがラップしないため、読みにくいです。

私が持っているツールで管理できると確信していますが、もっと良いものを知っている人がいれば、それについて聞いて本当にうれしいです。出版社もそうだろうと思う。

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

回答:


9

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

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

シンプルな差分


1
実際のファイルをざっと見てみましたが、完璧に機能しているようです。ありがとうので、ずっと!
ジョンスキート

4

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

そのため、問題を確認することから始めます。

ここに画像の説明を入力してください

BCには特別なXML解析の役割があります:(XMLの役割はすでにありますが、事前分析はありません- 並べ替えられ整理されています

ここに画像の説明を入力してください

http://www.scootersoftware.com/download.php?zz=kb_moreformats_altにアクセスます

ここに画像の説明を入力してください

そしていま -

ここに画像の説明を入力してください

C#の次のエディションで詳細に使用してください。

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


ところで " Namir.78 "はどういう意味ですか?
Pacerier


0

私もそう遠くない会社で同じ問題を抱えていました。彼らは真の「XMLの違い」を見つけたいと思っていましたが、完全なソリューションは存在しないようです。

最も簡単な解決策は、最初に行末とスペースを正規化するためにプリプリントスクリプトをXMLで実行してから、選択したdiffツールを実行することです(WinMergeはWindowsに適しています)。これにより、ほとんどのdifftoolsがXMLからユーザーに投げかける大量のフロートがドロップされ、スクリプトを簡単に構築できます。


トラブルは、XMLが既にということですされて効果的に、かなり印刷-それはラインがラップされている変更の挿入や削除をです。別の行の最後にある単語に基づいて1つのファイルを再フォーマットする必要があるかどうか疑問に思う:(
ジョンスキート

0

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

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


0

@Jon Skeet:質問の中で、diffツールが表示されたときにラップしないと述べました。
vimdiff(Windowsでもで利用可能gvim)を使用すると、表示されたxmlファイルをでラップできます:window set wrap参照リンク
また:diffupdate、差分を更新するために実行できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.