8

我刚刚在这里了解了nxml-mode,根据自述文件,它是一个

GNU Emacs 编辑 XML 文档的主要模式。它支持编辑格式良好的 XML 文档,还可以使用 RELAX NG Compact Syntax 对 XML 文档进行模式敏感的编辑。

W3C XML Schema 是否有相同的模式?

如果我找不到这样的东西,那么假设我严格处理 W3C XML Schema 而不是 Relax-NG,那么 nxml-mode 对我有用吗?

相关:VIM 中的模式感知编辑

4

4 回答 4

7

只需使用 XSD 到 RNG 转换器,像这样

于 2009-05-28T05:43:51.730 回答
7

我用一个相当简单的 XSD 模式进行了尝试——它定义了 4 个不同类型的元素。将此模式与 nxml-mode 一起使用需要我运行 3 次 XSL 转换:

  • XsdToRNG.xsl - 来自 Alex Ott 建议的googlecode 。生成 RNG XML 语法。
  • RNGToRncXml.xsl - 来自Pantor。这对 RNG XML 语法进行操作,并生成模式的“中间”表示,它不是 {XSD, RNG, RNC}
  • RNGToRncText.xsl - 也来自 Pantor。对中间格式进行操作以生成 RNC。(RNG 紧凑语法),这就是 nxml-mode 想要的。

【在此之前我并没有意识到RNG有两种口味。]

结果是一个相当紧凑的 RNC 文件,这甚至是可以理解的。

我还用 XSLT XSD 尝试了同样的事情,并得到了类似的积极结果:一个很好的 .rnc 文件与 nxml-mode 一起使用。事实证明这是不必要的,因为 nxml-mode 附带了用于 XSLT 的 RNC。但它让我相信更复杂的 .XSD 文件可以转换为 .RNC。

获得 .RNC 后,您可以使用它来指导 XML 文档的编辑。打开文档(可能是一个新的空文档),如果它没有自动为您完成,请确保运行 nxml-mode。然后使用 Cc Cs Cf 以 nxml 模式将模式与该文档相关联。这仅在第一次编辑文档时是必需的 - 此后模式可以自动关联到文档。

架构与文档关联后,您将获得架构敏感的完成(也称为智能感知)和验证。nxml 模式商店为 XSLT、Docbook 和有趣的 RNG Xml 语法等提供 .rnc 模式。

它需要一些设置,但它的工作原理。

于 2009-06-03T14:37:06.113 回答
1

即使没有模式,它也非常有用。您可以自动完成结束标签、按标签导航以及许多其他很棒的花里胡哨。综上所述,亚历克斯·奥特是对的。

于 2009-05-28T21:54:29.573 回答
0

使用 Sun RNG 转换器将 XSD 转换为 RNG/XML,然后使用 Trang 将 RNG 转换为 RNG 紧凑语法。您可以从 msv.java.net 下载 Sun 转换器。

于 2011-02-18T23:43:59.793 回答