基于W3C XML Schema的emacs中的模式敏感编辑? (不是RNG)

时间:2009-05-27 18:38:08

标签: xml emacs xsd relaxng

我刚学会了here,关于nxml-mode,根据自述文件,它是

  

GNU Emacs的主要模式   编辑XML文档。它支持   编辑格式良好的XML文档和   还提供了架构敏感的编辑   使用RELAX NG的XML文档   紧凑语法。

对于W3C XML Schema,是否存在相同的模式?

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

相关:Schema-aware editing in VIM

4 个答案:

答案 0 :(得分:7)

只需使用XSD到RNG转换器,例如this

答案 1 :(得分:7)

我尝试使用相当简单的XSD架构 - 一个定义了4种不同类型的元素。在nxml-mode中使用这个模式需要我运行3次XSL转换:

  • XsdToRNG.xsl - 来自googlecode,由Alex Ott建议。生成RNG XML语法。
  • RNGToRncXml.xsl - 来自Pantor。这适用于RNG XML语法,并生成模式的“中间”表示,它不是{XSD,RNG,RNC}
  • RNGToRncText.xsl - 也来自Pantor。以中间格式运行以生成RNC。 (RNG Compact Syntax),这是nxml-mode想要的。

[在此之前,我没有意识到有两种类型的RNG。 ]

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

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

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

架构与文档关联后,您将获得架构敏感完成(即智能感知)和验证。 nxml-mode商店使用.rnc架构,用于XSLT,Docbook,以及有趣的RNG Xml语法等。

需要一点设置,但它有效。

答案 2 :(得分:1)

即使没有架构,它也非常有用。您可以自动完成结束标记,按标记导航以及许多其他很棒的铃声和口哨声。所有这一切,Alex Ott都是对的。

答案 3 :(得分:0)

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