2008-11-26 1 views
19

При редактировании XML-файла в IntelliJ IDEA, если документ ссылается на схему, IDEA будет извлекать схему и использовать информацию для автозаполнения. Он знает, какие теги действительны в каких контекстах, поэтому, когда вы нажимаете CTRL-пространство, он предлагает только те теги. Он также выделяет любые теги, которые недействительны в соответствии с схемой.Редактирование XML с помощью схемы в Vim

Кто-нибудь знает расширение для Vim, которое обеспечивает аналогичную функциональность?

+1

Интересно, я искушаюсь, чтобы пойти на него. Работает ли он в IDEA только для редактирования или для написания с нуля? То есть требует ли он, чтобы весь документ был действительным; или что часть до того места, где вы редактируете, действительна; или он будет работать с голой фрагмент? Это влияет на реализацию. – 13ren 2009-02-25 14:52:02

ответ

6

Ближайшая вещь, которую я видел для Vim, - это сценарий XML Completion.

В нем содержатся файлы определения XML для DocBook 4. [234], XSL FO 1.0, XSLT 1.0, Relax NG 1.0, XML Schemas 1.0, SVG 1.1, XHTML 1.1, XInclude 1.0 и формат OpenOffice 1.0 XML.

+0

Спасибо, этого может быть достаточно. – 2008-11-27 12:04:14

2

Прочитайте этот документ: http://www.pinkjuice.com/howto/vimxml/

очень полезно.

+0

См. Комментарий @ nmaier ниже: http://stackoverflow.com/questions/322481/schema-aware-xml-editing-in-vim#comment27428025_18630589 – icedwater 2016-12-20 14:04:05

15

VIM 7+ поддерживает, что по умолчанию без каких-либо плагинов, он может загрузить определение XML, есть конвертеры для ОТД и SchemaNG:

http://vimdoc.sourceforge.net/htmldoc/insert.html#ft-xml-omni

Например мой Vim 7.3 уже есть определения для XHTML :

$ rpm -ql vim vim-common | grep xml 
/usr/share/vim/vim73/autoload/xml 
/usr/share/vim/vim73/autoload/xml/html32.vim 
/usr/share/vim/vim73/autoload/xml/html401f.vim 
/usr/share/vim/vim73/autoload/xml/html401s.vim 
/usr/share/vim/vim73/autoload/xml/html401t.vim 
/usr/share/vim/vim73/autoload/xml/html40f.vim 
/usr/share/vim/vim73/autoload/xml/html40s.vim 
/usr/share/vim/vim73/autoload/xml/html40t.vim 
/usr/share/vim/vim73/autoload/xml/xhtml10f.vim 
/usr/share/vim/vim73/autoload/xml/xhtml10s.vim 
/usr/share/vim/vim73/autoload/xml/xhtml10t.vim 
/usr/share/vim/vim73/autoload/xml/xhtml11.vim 
/usr/share/vim/vim73/autoload/xml/xsd.vim 
/usr/share/vim/vim73/autoload/xml/xsl.vim 
/usr/share/vim/vim73/autoload/xmlcomplete.vim 
/usr/share/vim/vim73/compiler/xmllint.vim 
/usr/share/vim/vim73/compiler/xmlwf.vim 
/usr/share/vim/vim73/ftplugin/xml.vim 
/usr/share/vim/vim73/indent/xml.vim 
/usr/share/vim/vim73/syntax/docbkxml.vim 
/usr/share/vim/vim73/syntax/xml.vim 

Попробуйте, это того стоит. Все документально оформлено по ссылке выше, я не буду копировать ее здесь.

+0

Хм, что еще можно сделать vim? – 2015-06-24 19:40:01

+0

Исключительное дополнение xml для Vim 7+ - это хорошо, но я никогда не мог заставить скрипт vim2dtd работать над созданием новых определений для других типов XML. Скрипт не обновлялся почти через десять лет. Я бы убил, чтобы иметь файлы автозаполнения для dita xml. – Scribblemacher 2015-09-30 14:46:53

0

Ссылка: http://ricardianambivalence.com/2013/02/17/xml-validation-in-vim/

С bar.xml открытым, вы можете легко проверить на foo.xsd. Сначала сохраните изменения, а затем нажмите : и введите следующее (это труба к команде терминала).

:! xmllint --noout --schema foo.xsd bar.xml 
+0

Это не будет полезно, если вы хотите, чтобы во время ввода отображалась отчетность. – Soundararajan 2013-09-05 07:47:52

0

Я собрал материал по этой теме, вы можете найти его на github. https://github.com/tbazant/xml-vim это написано в docbook, конвертируйте его в PDF и наслаждайтесь!