2009-05-27 12 views
8

Je viens d'apprendre, here, à propos nxml-mode, qui, selon le README, est un mode majeurÉdition sensible au schéma dans emacs, basée sur le schéma XML W3C? (Non RNG)

pour GNU Emacs pour documents XML d'édition. Il prend en charge l'édition de documents XML bien formés et fournit également l'édition sensible au schéma de documents XML à l'aide de la syntaxe Compact RELAX NG .

Y at-il un mode qui fait la même chose pour le schéma XML W3C?

Si je ne peux pas trouver une telle chose, alors le mode nxml est-il utile pour moi, en supposant que je traite strictement le schéma XML du W3C et non avec Relax-NG?

connexes: Schema-aware editing in VIM

Répondre

7

Il suffit d'utiliser XSD convertisseur RNG, comme this

+0

Je ne pense pas que cela fonctionne, car il produit Relax-NG, pas Relax-NG Compact Syntax. Peut-être qu'il y a une autre conversion à traverser. – Cheeso

+0

Je pense que cela pourrait fonctionner pour la 2ème conversion: http://www.pantor.com/download.html Il s'agit d'une feuille de conversion RNG-à-RNC. En fait, le RNG-à-RNC est également une conversion en deux étapes. !! Obtenir jolie fractale. – Cheeso

+1

Ok, cela a bien fonctionné! – Cheeso

1

Même sans schémas, il est tout à fait utile. Vous pouvez compléter automatiquement les étiquettes de fermeture, naviguer par étiquette et beaucoup d'autres cloches et sifflets. Cela dit, Alex Ott a raison sur l'argent.

7

J'ai essayé ceci avec un schéma XSD assez simpliste - un qui a défini 4 éléments de type variable. L'utilisation de ce schéma avec nxml mode m'a obligé à courir à travers 3 conversions de xsl:

  • XsdToRNG.xsl - de googlecode comme suggéré par Alex Ott. Produit la syntaxe XML RNG.
  • RNGToRncXml.xsl - à partir de Pantor. Cela fonctionne sur RNG XML Syntax et produit une représentation "intermédiaire" du schéma qui n'est aucun de {XSD, RNG, RNC}
  • RNGToRncText.xsl - également de Pantor. fonctionne sur le format intermédiaire pour produire RNC. (RNG Compact Syntax), ce que veut nxml-mode.

[Avant cela, je n'avais pas réalisé qu'il y avait deux types de RNG. ]

Le résultat est un fichier RNC relativement compact, ce qui est même compréhensible.

J'ai aussi essayé la même chose avec un XSLT XSD, et j'ai obtenu des résultats similaires: un bon fichier .rnc à utiliser avec le mode nxml. Cela s'est avéré inutile, car nxml-mode est livré avec un RNC pour XSLT. Mais cela m'a donné confiance que des fichiers .XSD plus complexes pourraient être convertis en .RNC. Après avoir obtenu le .RNC, vous pouvez l'utiliser pour guider l'édition d'un document XML. Ouvrez le document (peut-être un nouveau document vide) et assurez-vous d'exécuter le mode nxml si ce n'est pas fait automatiquement pour vous. Associez ensuite le schéma à ce document en mode nxml, en utilisant C-c C-s C-f. Cela n'est nécessaire que la première fois que vous éditez un document. Le schéma peut ensuite être associé automatiquement au document.

Une fois qu'un schéma est associé à un document, vous obtenez une complétion sensible au schéma (également appelée intellisense) et une validation. nxml-mode magasins avec des schémas .rnc pour XSLT, Docbook, et, de façon amusante, RNG Xml Syntax, et d'autres.

Cela demande un peu de configuration, mais cela fonctionne.

0

Utilisez le Sun RNG Converter pour obtenir le XSD en RNG/XML, puis Trang pour obtenir le RNG dans la syntaxe compacte RNG. Vous pouvez télécharger le convertisseur de Sun à partir de msv.java.net.