2008-11-26 11 views
19

Wenn Sie bei der Bearbeitung einer XML-Datei in IntelliJ IDEA das Dokument auf ein Schema verweisen, ruft IDEA das Schema ab und verwendet die Informationen zur automatischen Vervollständigung. Er weiß, welche Tags in welchen Kontexten gültig sind. Wenn Sie also STRG-Leerzeichen drücken, werden nur diese Tags vorgeschlagen. Außerdem werden alle Tags hervorgehoben, die gemäß dem Schema ungültig sind.Schema-bewusste XML-Bearbeitung in Vim

Kennt jemand eine Erweiterung für Vim, die ähnliche Funktionalität bietet?

+1

interessant, ich bin versucht, es zu versuchen. Funktioniert es in IDEA nur für die Bearbeitung oder auch für das Schreiben von Grund auf neu? Das heißt, erfordert es, dass das gesamte Dokument gültig ist; oder dass der Teil, bis zu dem Sie bearbeiten, gültig ist; oder wird es mit einem bloßen Fragment funktionieren? Dies betrifft die Implementierung. – 13ren

Antwort

6

Das nächste, was ich für Vim gesehen habe, ist das XML Completion Skript.

Es enthält XML-Definitionsdateien für 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 und OpenOffice 1.0 XML-Format.

+0

Danke, das könnte ausreichen. –

15

VIM 7+ unterstützt, dass standardmäßig ohne Plugins, es XML-Definition laden können, gibt es Konverter für DTD und SchemaNG:

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

Zum Beispiel meine Vim 7.3 bereits Definitionen für 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 

Probieren sie es aus, es ist es wert. Alles ist unter dem obigen Link klar dokumentiert, ich werde es hier nicht kopieren.

+0

Hm, was kann Vim noch vervollständigen? –

+0

Die fertige XML-Vervollständigung für Vim 7+ ist nett, aber ich war noch nie in der Lage, das vim2dtd-Skript dazu zu bringen, tatsächlich neue Definitionen für andere XML-Typen zu erstellen. Das Skript wurde seit fast einem Jahrzehnt nicht mehr aktualisiert. Ich würde töten, um die Autocomplete-Dateien für dita xml zu haben. – Scribblemacher

0

Referenz: http://ricardianambivalence.com/2013/02/17/xml-validation-in-vim/

Mit dem bar.xml geöffnet, können Sie leicht gegen foo.xsd validieren. Speichern Sie zuerst Ihre Änderungen und drücken Sie dann : und geben Sie Folgendes ein (es ist die Pipe zum Terminal-Befehl).

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

Dies ist nicht hilfreich, wenn Sie während der Eingabe Berichte live schalten möchten. – Soundararajan

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – nmaier

+0

@nmaier Verstanden. Danke :) – Soundararajan

0

Ich habe etwas Material zu diesem Thema gesammelt, Sie finden es auf github. https://github.com/tbazant/xml-vim es ist in Docbook geschrieben, konvertieren Sie es in PDF und genießen Sie!

+0

Siehe @nmaiers Kommentar unten: http://stackoverflow.com/questions/322481/schema-aware-xml-editing-in-vim#comment27428025_18630589 – icedwater