2009-05-27 16 views
8

ho appena appreso, here, circa nxml-mode, che, secondo il README, è una modalità importanteModifica sensibile allo schema in emacs, basata sullo schema XML W3C? (Non RNG)

per GNU Emacs per modifica dei documenti XML. Supporta e modifica documenti XML ben strutturati e fornisce anche la modifica sensibile allo schema di documenti XML utilizzando la sintassi compatta NORMARELAX NG.

Esiste una modalità che fa lo stesso per W3C XML Schema?

Se non riesco a trovare una cosa del genere, quindi è nxml-mode utile per me comunque, assumendo mi occupo rigorosamente di W3C XML Schema e non con Relax-NG?

correlati: Schema-aware editing in VIM

risposta

7

Basta usare XSD al convertitore RNG, come this

+0

Non penso che funzioni, perché produce Relax-NG, non Relax-NG Compact Syntax. Forse c'è un'altra conversione che devo affrontare. – Cheeso

+0

Penso che questo potrebbe funzionare per la seconda conversione: http://www.pantor.com/download.html Si tratta di un foglio di conversione da RNG a RNC. In realtà, l'RNG-to-RNC è anche una conversione a 2 stadi. !! Ottenere un bel frattale. – Cheeso

+1

Ok, questo ha funzionato davvero bene! – Cheeso

1

Anche senza schemi è molto utile. Puoi completare automaticamente i tag di chiusura, navigare per tag e molti altri bellissimi campanelli e fischietti. Detto questo, Alex Ott ha ragione sui soldi.

7

Ho provato questo con uno schema XSD piuttosto semplicistico - uno che definisce 4 elementi di tipo variabile. L'utilizzo di questo schema con nxml-mode mi ha richiesto di correre attraverso 3 conversioni XSL:

  • XsdToRNG.xsl - da googlecode come suggerito da Alex Ott. Produce sintassi XML RNG.
  • RNGToRncXml.xsl - da Pantor. Funziona su RNG XML Syntax e produce una rappresentazione "intermedia" dello schema che non è {XSD, RNG, RNC}
  • RNGToRncText.xsl - anche da Pantor. opera sul formato intermedio per produrre RNC. (RNG Compact Syntax), che è ciò che vuole la modalità nxml.

[Prima di questo non mi rendevo conto che ci sono due tipi di RNG. ]

Il risultato è un file di RNC abbastanza compatto, che è anche comprensibile.

Ho anche provato la stessa cosa con XSLT XSD e ho ottenuto risultati simili: un buon file .rnc da utilizzare in modalità nxml. Ciò si è rivelato non necessario, poiché la modalità nxml viene fornita con un RNC per XSLT. Ma mi ha dato la certezza che file .XSD più complessi potevano essere convertiti in .RNC.

Dopo aver ottenuto il .RNC, è possibile utilizzarlo per guidare la modifica di un documento XML. Apri il documento (magari un nuovo documento vuoto) e assicurati di eseguire la modalità nxml se non viene eseguita automaticamente per te. Quindi associare lo schema a quel documento in modalità nxml, utilizzando C-c C-s C-f. Questo è necessario solo la prima volta che si modifica un documento: in seguito lo schema può essere associato automaticamente al documento.

Dopo aver associato uno schema a un documento, è possibile ottenere il completamento dello schema (ad esempio intellisense) e la convalida. negozi in modalità nxml con schemi .rnc per XSLT, Docbook e, in modo divertente, RNG Xml Syntax e altri.

Ci vuole un po 'di configurazione, ma funziona.

0

Utilizzare il convertitore Sun RNG per ottenere XSD in RNG/XML, quindi Trang per ottenere l'RNG nella sintassi RNG compatta. È possibile scaricare il convertitore Sun da msv.java.net.