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.
Non penso che funzioni, perché produce Relax-NG, non Relax-NG Compact Syntax. Forse c'è un'altra conversione che devo affrontare. – Cheeso
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
Ok, questo ha funzionato davvero bene! – Cheeso