Я попробовал это с довольно упрощенной схемой 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 и другие.
Требуется небольшая настройка, но это работает.