#xml #eclipse #xsd
#xml #eclipse #xsd
Вопрос:
Если я пишу многострочную документацию в XML-схеме, используя представление свойств, оно создает <xsd:documentation>
теги для ее хранения.
Всякий раз, когда я форматирую файл (CTRL SHIFT F), все строки, кроме первой, имеют отступ, а иногда и переносятся из-за этого отступа.
Это отступ и перенос эффективно разрушают все усилия по созданию красивой документации из файла. Особенно, если я хочу документировать таблицу допустимых значений.
Перед форматированием:
<xsd:documentation>1st line of comment
2nd line is indented and also wrapped as it exceeds the max line length setting.
3rd line is just indented.
</xsd:documentation>
После форматирования:
<xsd:documentation>1st line of comment
2nd line is indented and also wrapped as it exceeds the max line
length setting.
3rd line is just indented.
</xsd:documentation>
Опция «Форматировать комментарии» в настройках -> XML -> XML-файлы -> Редактор не помогает с отступом. Увеличение «ширины строки» на той же странице настроек исправляет перенос, но я действительно хочу, чтобы редактор НЕ форматировал содержимое моих элементов документации.
Ответ №1:
Вы можете добавить атрибут xml xml:space="preserve"
xsd:documentation
, чтобы указать, что пробелы должны быть сохранены. Например:
<xsd:documentation xml:space="preserve" >1st line of comment
2nd line is indented and also wrapped as it exceeds the max line length setting.
3rd line is just indented.
</xsd:documentation>
Комментарии:
1. Я предпочитаю использовать этот атрибут, а не добавленный тег CDATA, он выглядит чище, он понятен сам по себе, и мне не нужно явно указывать Eclipse игнорировать текст, завернутый в CDATA. Мой трюк заключается в том, чтобы добавить весь мой многострочный текст в одну строку, использовать код формата в Eclipse, а затем добавить атрибут xml:space для сохранения форматирования.
Ответ №2:
Опция «Форматировать комментарии» предназначена для комментариев XML:
<!-- comment -->
Вот почему это работает не так, как вы хотите.
Я не понимаю, с какой проблемой вы столкнулись, установив для параметра «ширина строки» значение max (в версии 3.7 оно равно 999).
Если ваш XML:
<xsd:documentation>1st line of comment
2nd line is indented and also wrapped as it exceeds the max line length setting.
3rd line is just indented.
</xsd:documentation>
Тогда установка «ширины строки» на 999 и форматирование не изменит ваш контент. К сожалению, нет возможности отключить проверку ширины (например, чтобы установить «ширину строки» в 0).
редактировать: похоже, что при использовании <![CDATA[, Eclipse не форматирует содержимое (по крайней мере, отступы и перенос строк), пример:
<root>
<documentation><![CDATA[
1st line of comment
2nd line is indented and also wrapped as it exceeds the max line length setting.
3rd line is just indented.
]]></documentation>
</root>
Комментарии:
1. Конечно, я могу установить ширину строки, но проблема в том, что я написал документацию в определенном формате, а Eclipse продолжает ее переформатировать. Добавляется не только перенос строк, но и отступ. Когда я пытаюсь сгенерировать документацию с помощью такого инструмента, как XML Spy, документация плохо отформатирована, частично из-за отступов, добавленных Eclipse.
2. Также бывает, что сам Eclipse, форматируя документацию, делает документацию очень странной в редакторе свойств.
3. Я понимаю, может быть, вам стоит попробовать некоторые плагины из Eclipse Marketplace и найти лучший редактор XML.
4. Спасибо за предложения. Да, я, вероятно, попробую интеграцию XML Spy с Eclipse в следующий раз. В то время, когда я задавал вопрос, у меня не было лицензии XML Spy, необходимой для работы с файлами WSDL. Похоже, другого решения нет, если я не смогу найти время для создания собственного патча для Eclipse, и я не вижу, чтобы это произошло в ближайшее время.
5. смотрите мой отредактированный ответ использовании <! [CDATA[ возможно, это то, что вам нужно, но вы должны попробовать, если это соответствует вашим требованиям
Ответ №3:
Попробуйте использовать его следующим образом:
<xsd:documentation><![CDATA[ 1st line of comment
2nd line is indented and also wrapped as it exceeds the max line
length setting.
3rd line is just indented.]]></xsd:documentation>
Но ТАКЖЕ попробуйте установить
<?xml version="1.0" encoding="UTF-16"?>
в вашем файле, если вы его еще не используете. Новые строки в xml могут быть проблематичными между ASCII и UTF-16
Ответ №4:
Установите параметр «Сохранять пробелы в тегах с содержимым PCDATA».
Комментарии:
1. Похоже, это действительно то, что нужно установить. Но это не имеет никакого эффекта, когда я пытаюсь это сделать. Поскольку мой вопрос касался редактирования файла XML-схемы, я также протестировал простой XML-файл с этим параметром, но я все равно получаю те же результаты. Вы пробовали фрагмент из вопроса? Я также заметил, что файл переформатируется дважды, если я дважды применяю команду format . Выполнение этого в третий раз не приводит к дополнительным изменениям.
2. Это потому, что у вас нет ничего, что говорило бы eclipse о том, что внутри элемента documentation находится элемент PCData, см. Ошибка Eclipse 361708 .