Чувствительное к схеме редактирование в emacs на основе W3C XML Schema. (не ГСЧ) - PullRequest
8 голосов
/ 27 мая 2009

Я только что узнал, здесь , о nxml-mode , который, согласно README, является

основной режим для GNU Emacs для редактирование XML документов. Поддерживает редактирование правильно оформленных документов XML и также обеспечивает редактирование с учетом схемы XML-документов с использованием RELAX NG Компактный синтаксис.

Есть ли такой же режим для схемы XML W3C?

Если я не могу найти такую ​​вещь, то полезен ли мне в любом случае режим nxml, если я имею дело со схемой XML W3C, а не с Relax-NG?

Связанный: Редактирование с учетом схемы в VIM

Ответы [ 4 ]

7 голосов
/ 03 июня 2009

Я попробовал это с довольно упрощенной схемой XSD - той, которая определяла 4 элемента различного типа. Использование этой схемы с nxml-режимом потребовало от меня выполнения 3 XSL-преобразований:

  • XsdToRNG.xsl - из googlecode в соответствии с предложением Алекса Отта. Создает синтаксис RNG XML.
  • RNGToRncXml.xsl - из Пантор . Он работает с синтаксисом XML RNG и создает «промежуточное» представление схемы, которое не является ни одним из {XSD, RNG, RNC}
  • RNGToRncText.xsl - также от Пантора. работает на промежуточном формате для производства RNC. (RNG Compact Syntax), чего хочет nxml-mode.

[До этого я не осознавал, что существует два вида ГСЧ. ]

В результате получается довольно компактный RNC-файл, который даже понятен.

Я также попробовал то же самое с XSLT XSD и получил похожие положительные результаты: хороший файл .rnc для использования в режиме nxml. Это оказалось ненужным, поскольку nxml-режим поставляется с RNC для XSLT. Но это дало мне уверенность, что более сложные файлы .XSD могут быть преобразованы в .RNC.

После того, как вы получите .RNC, вы можете использовать его для руководства редактированием XML-документа. Откройте документ (возможно, новый, пустой документ) и обязательно запустите nxml-режим, если это не сделано автоматически для вас. Затем свяжите схему с этим документом в режиме nxml, используя C-c C-s C-f. Это необходимо только при первом редактировании документа - после этого схема может быть автоматически связана с документом.

Как только схема связана с документом, вы получаете чувствительное к схеме завершение (он же intellisense) и проверку. Магазин в режиме nxml со схемами .rnc для XSLT, Docbook и, что забавно, синтаксис RNG Xml и другие.

Требуется небольшая настройка, но это работает.

7 голосов
/ 28 мая 2009

Просто используйте конвертер XSD в RNG, например this

1 голос
/ 29 мая 2009

Даже без схем это довольно полезно. Вы можете автоматически заполнять закрывающие теги, перемещаться по тегам и множеству других замечательных свистков. Все, что сказал, Алекс Отт прав на деньги.

0 голосов
/ 19 февраля 2011

Используйте Sun RNG Converter, чтобы получить XSD в RNG / XML, а затем Trang, чтобы получить RNG в компактный синтаксис RNG. Вы можете скачать конвертер Sun с msv.java.net.

...