Как закомментировать раздел XML, в котором есть комментарии? - PullRequest
23 голосов
/ 20 декабря 2011

Как закомментировать раздел XML с комментариями внутри?

Следующее не будет работать. Это только комментарии из stuff0:

<!--
stuff0
<!-- stuff1 -->
stuff2
<!-- stuff3 -->
stuff4
<!-- stuff5 -->
stuff6
-->

Ответы [ 5 ]

7 голосов
/ 20 декабря 2011

Ты не.XML согласно спецификации не поддерживает вложенные комментарии.

6 голосов
/ 20 декабря 2011

-- не допускается в комментариях XML. Вы можете добавить пробел между двумя -. Если вы хотите сделать это программно, XSLT может сделать эту работу за вас. Например, следующий XSLT:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="2.0">
    <xsl:template match="/">
        <a>
            <xsl:comment select="'a -- b -- c'"/>
        </a>
    </xsl:template>
</xsl:stylesheet>

Дает следующий вывод:

<a><!--a - - b - - c--></a>

Но процессор XSLT также может выдавать ошибку. Учитывая спецификацию, все зависит от реализации, чтобы добавить пробел или вызвать ошибку.

5 голосов
/ 10 мая 2018

Ты не должен этого делать, я знаю.Я имею в виду, согласно спецификации XML, вы не должны.Хватит читать этот ответ.Это хак!(ну ... может быть, хороший).

Сказав это ... я действительно нуждался в этом, так что вот трюк .Окружите раздел, который вы хотите прокомментировать, с помощью неиспользуемой инструкции обработки :

<some-tags />

<?comment
  <!-- traditional comment 1 -->
  <badtag prop1="123">
    <!-- traditional comment 2 -->        
  </badtag>
  <!-- traditional comment 3 -->
?>

<rest-of-my-tags />

Вы можете использовать любую инструкцию обработки, которая не используется.Я выбрал «комментарий» в качестве неиспользуемой инструкции по обработке, поэтому я начал большой комментарий с <?comment и закончил его с ?>.

Практически любое слово будет использоваться в качестве инструкции по обработке, поскольку они не являютсяЯ действительно использовал большую часть времени.Я имею в виду, вы когда-нибудь использовали?

2 голосов
/ 12 августа 2014

Вот еще один подход: вы можете просто использовать вложенные комментарии, как если бы они были поддержаны в XML:

<!-- Outer comment
  <SomeXML> ... </SomeXML>
  <!-- Inner comment 
    <SomeXML> ... </SomeXML>
  -->
-->

Тогда используйте this XML внутри текстового редактора. XML, который вы в действительности вводите в процесс, является выходом какой-то простой программы, которую вы пишете, которая читает XML-файл nested-comment и выдает XML-код unnested-comment.

Еще один похожий трюк - использование препроцессора Си-компилятора. Я сделал это несколько лет назад с помощью компилятора Microsoft C ++. Компилятор cl.exe фактически вызвал две отдельные программы, cl1.exe и cl2.exe. Cl1.exe является препроцессором. Таким образом, вы можете вставить что-нибудь в эту вещь (XML, скрипты nmake и т. Д.), И она будет предварительно обработана. Так что-то вроде этого будет работать:

<SomeXML> ... </SomeXML>
#ifdef PRODUCE_THIS
<SomeMoreXML> ... </SomeMoreXML>
#endif
2 голосов
/ 20 декабря 2011

У вас есть два варианта:

  1. Удалите его, а не комментируйте - вы всегда можете вернуться к нему позже.
  2. Замените все экземпляры -- на что-то другое в первую очередь.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...