2009-05-27 14 views
8

私はちょうど学んだ、herenxml-mode、これは、READMEによると、 、XML文書を編集するためのGNU EmacsのためのW3C XMLスキーマに基づく、emacsでのスキーマ依存編集? (ないRNG)

主要なモードです。 は整形式XML文書を、 はRELAX NG コンパクト構文を使用してXML文書のスキーマ依存編集 も提供しています。

W3C XMLスキーマでも同じようなモードがありますか?

もし私がこのようなことが見つからなければ、とにかく、私はW3C XML Schemaを厳密に扱い、Relax-NGでは扱えないと思うと、nxml-modeは役に立ちますか?

関連:Schema-aware editing in VIM

答えて

7

だけでもスキーマなしで、それは非常に便利であるthis

+0

Relax-NGコンパクト構文ではなく、Relax-NGが生成されるため、これは動作しないと思います。多分、私が遂行しなければならないもう一つの変換があります。 – Cheeso

+0

これは第2回目の変換ではうまくいくと思います。http://www.pantor.com/download.htmlこれはRNG-RNC変換シートです。実際、RNG-to-RNCもまた2段階変換である。 !!フラクタルを得る。 – Cheeso

+1

これは実際にうまくいきました! – Cheeso

1

のように、RNGコンバータにXSDを使用しています。終了タグを自動補完したり、タグや他の偉大な鐘や笛でナビゲートすることができます。すべてのことが言った、アレックスオットはお金に右です。

7

私はかなりシンプルなXSDスキーマでこれを試しました。これは、さまざまなタイプの4つの要素を定義したものです。アレックスオットにより示唆されるようgooglecodeから -

  • XsdToRNG.xsl:NXMLモードでこのスキーマを使用すると、3つのXSL変換を介して実行するために私を必要としました。 RNG XML構文を生成します。
  • RNGToRncXml.xsl - Pantorから。これはRNG XML構文で動作し、{XSD、RNG、RNC}のいずれでもないスキーマの "中間"表現を生成します。
  • RNGToRncText.xsl - Pantorからも提供されます。 RNCを生成するために中間フォーマットで動作する。 (RNGコンパクトシンタックス)。これはnxmlモードが望むものです。

[これ以前は、RNGの2つの味があることに気付きませんでした。 ]

結果はかなりコンパクトなRNCファイルであり、わかりやすいものです。

同じことをXSLT XSDで試してみましたが、同様の肯定的な結果が得られました。nxmlモードで使用するための良い.rncファイルです。 nxml-modeにはXSLT用のRNCが付属しているため、これは不要です。しかし、より複雑な.XSDファイルを.RNCに変換できるという自信がありました。

.RNCを入手した後、それを使用してXML文書の編集をガイドすることができます。 doc(おそらく新しい空のドキュメント)を開き、nxml-modeが自動的に実行されない場合は必ず実行してください。次に、C-C C-s C-fを使用して、nxmlモードでスキーマをそのドキュメントに関連付けます。これは、初めてドキュメントを編集する場合にのみ必要です。その後、スキーマをドキュメントに自動的に関連付けることができます。

スキーマがドキュメントに関連付けられると、スキーマセンシティブな完了(別名インテリセンス)と検証が行われます。 nxml-modeは、XSLT、Docbook、そして面白いことにRNG Xml構文などの.rncスキーマを扱っています。

少しセットアップが必要ですが動作します。

0

Sun RNG Converterを使用してXSDをRNG/XMLに変換し、Trangを使用してRNGコンパクト構文に変換します。 Sunコンバータはmsv.java.netからダウンロードできます。