Як я можу коментувати один рядок у XML?


123

Це швидше перевірка, щоб її не пропустити.

Чи немає у XML рядка-коментаря? Отже, один без ближче, як, наприклад, "//", який використовує компілятор.

Я бачив Як я коментую блок тегів у XML? та кілька інших дискусій.

Цей тип коментаря було б практично коментувати рядок, не турбуючи її ближче десь вниз.


2
XML розроблений на основі припущення, що такі інструменти, як редактори, часто виконують обробку слів, і тому закінчення рядків є крихкими. Було б погано, якби закінчення рядків потрібно було зберегти лише на випадок коментарів.
— Майкл Кей

2
Напевно редактори обгортають лише лінії для відображення . Я ніколи не знав важких нових рядків, які можна додавати довільно до самого файлу. Це пекельна неприємність, що не має рядкового коментаря.
— Джон Уайт

Відповіді:


147

Ні, немає жодного способу коментувати рядок у XML і автоматично закінчувати коментар при появі рядка.

XML має лише одне визначення для коментаря :

'<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

XML забороняє --в коментарях підтримувати сумісність із SGML .


Вирішення проблеми полягає у використанні рядкових коментарів ( //) та запуску сценарію, щоб викреслити ці коментарі перед використанням (може бути частиною процесу складання окремого кроку). Це дозволяє значно зручніше використовувати коментарі. (Я використовував цю техніку з джерелом WiX (інструмент інсталятора для Windows). Для створення інсталятора було потрібно ряд інших кроків, тому це був лише ще один крок для додавання до сценарію / процесу збирання.)
— Peter Mortensen

20

Як говорили інші, у XML немає можливості законно коментувати один рядок, який коментує кілька рядків, але є способи полегшити коментування сегментів XML.

Подивившись на приклад нижче, якщо ви додасте '>' до першого рядка, XmlTag буде коментований. Видаліть '>', і він знову прокоментується. Це найпростіший спосіб, який я бачив, щоб швидко коментувати / коментувати XML, не порушуючи нічого.

<!-- --
<XmlTag variable="0" />
<!-- -->

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

Маркер синтаксису синтаксису Overflow і Notepad ++ трактують його як багаторядковий коментар, бібліотека Boost C ++ трактує це як багаторядковий коментар, і єдиний аналізатор, який я знайшов досі, що ламає, - це той, що знаходиться в .NET, зокрема C #. Отже, спочатку перевірте, що ваші інструменти, IDE, бібліотеки, мова тощо приймають його перед тим, як використовувати його.

Якщо ви дбаєте про сумісність з SGML, просто використовуйте це замість цього:

<!-- -
<XmlTag variable="0" />
<!- -->

Додайте "->" до верхнього коментаря та "-" до нижнього коментаря. Недоліком є ​​необхідність кожного разу редагувати нижній коментар, що, ймовірно, полегшить кожен раз вводити <!--вгорі та -->внизу.

Я також хочу зазначити, що інші коментатори рекомендують використовувати редактор XML, який дозволяє клацати правою кнопкою миші та коментувати / коментувати / блокувати XML, що, мабуть, є кращим за хитромудрі трюки пошуку / заміни (це також спричинило б хорошу відповідь, але я ніколи не використовував таких інструментів, я просто хочу переконатися, що інформація не втрачається з часом. Мені особисто ніколи не доводилося стикатися з XML достатньо, щоб виправдати, що редактор є більш прихильним, ніж «Блокнот ++», тому це повністю залежить від вас.


3
На жаль, це неправильно. Специфікація каже: Для сумісності, рядок "-" (подвійний дефіс) НЕ МОЖЕ НЕ виникати в коментарях.
— kojiro

2
Звичайно, це не законно. Специфікація на цьому зрозуміла. XML-аналізатори можуть дотримуватися Закону Постела і дозволяти вам піти від нього, але відповідна перевірка на чітку форму буде позначена ним.
— kojiro

4
Як говорить @kojiro, коментар, що містить "-", не є добре сформованим XML. Фраза про "Для сумісності" - це лише редактори специфікацій, що пояснюють причину включення цього жахливого правила: це не означає, що ви можете ігнорувати правило, якщо вас не цікавить сумісність. Відхиляючи відповідь як неправильну.
— Майкл Кей

10
Ви можете написати це, <!-- ->і якщо ви не можете мати XML, додайте тире замість цього.
— kojiro

3
@RyanWH продовжує робити те, що працює для вас, але, здається, це залежить від помилки в аналізі XML, який ви використовуєте. Особисто я використовую IDE (oXygen), який дозволяє мені вибрати фрагмент тексту XML, клацнути правою кнопкою миші та попросити прокоментувати його. Що здається набагато простіше, ніж ваша техніка.
— Майкл Кей

12

Це те саме, що коментарі до блоку HTML або JavaScript:

<!-- The to-be-commented XML block goes here. -->

5

Не православний, але для мене це іноді працює; встановити свій коментар як інший атрибут:

<node usefulAttr="foo" comment="Your comment here..."/>

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