Розмір XML, що відрізняється довжиною до ліній


13

Я переглянув відповіді на це питання , і, на жаль, жодна з них мені поки не допомогла.

Щоб не битися про кущ, друге видання C # у Глибині тепер редагується у копії. Я хочу мати можливість бачити, що редактор копій робиться дуже легко, тому я можу відхилити або прийняти його зміни.

Ми використовуємо модифіковану форму docbook, але я досить щасливий, коли дивлюся на вихідний XML-джерело. Досі добре - за винятком випадків, коли редактор копій вносить зміни, це може змінити обгортання рядків. Так що читали:

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

тепер читає

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

Тепер справжня зміна тут - це вставлення «ґранту». Мені все одно, що "baz" перемістився з першого рядка в другий, але всі різні інструменти, які я бачив, це роблять.

Я усвідомлюю, що одним із варіантів було б переформатувати весь документ (або, можливо, лише цілі абзаци) в окремі рядки ... але це справді важко читати, тому що різні інструменти не відображаються під час їх відображення.

Я впевнений, що мені вдається керувати інструментами, які я маю, але якщо хтось знає про щось краще, я був би дуже радий почути про це. Я підозрюю, що і мої видавці теж.

(Я включив тут тег 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, якщо текст на малюнках занадто малий, просто натисніть на зображення, щоб завантажити оригінали.


Btw, що означає " Намір.78 "?
Пейсьєр

1

Я є автором різного інструменту XML (комерційне програмне забезпечення), який повинен виконати цю роботу (та деякі інші функції). Тут можна завантажити тестову версію (яка обмежена файлами Xml максимум 100 КБ):

http://xmldifftool.com/download_en.html

Короткий вступ також доступний тут:

http://xmldifftool.com/xtcmanual_en.html


0

У мене ця проблема була не так давно в компанії. Вони хотіли знайти справжню "різницю XML", і там, здається, не існує жодного повного рішення.

Найпростіше рішення - запустити сценарій із симпатичним друком на XML, щоб спочатку нормалізувати закінчення рядків та пробіли, а потім запустити інструмент різного вибору ( WinMerge приємний для Windows). Це скидає багато флотсам, які більшість дифтолетів кине на вас із XML, і створити сценарій дуже просто.


Проблема в тому , що XML вже є досить видрукуваної, ефективна - це вставки і делеция , що зміни , де лінії загортають. Цікаво, чи потрібно мені щось переформатувати один файл на основі слів, які зустрічаються на кінцях рядків в іншому :(
Джон Скіт

0

SD Smart Differencer порівнює документи на основі структури на відміну від фактичної верстки.

Є XML Smart Differencer. Для XML це означає узгодження порядку тегів та вмісту. Слід зазначити, що текстовий рядок у конкретному вказаному вами фрагменті відрізнявся. (Наразі не розуміє XML-поняття тексту, в якому пробіл нормалізується порівняно зі значним, але я підозрюю, що це вам не зашкодить сильно).


0

@Jon Skeet: Ви згадували у своєму запитанні, що різні інструменти не відображаються під час їх відображення.
vimdiff(Доступно також у Windows через gvim) дозволяє обертати відображені файли XML :window set wrap. Довідкова посилання .
Також ви можете запустити :diffupdateдля оновлення розліків.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.