Difference between revisions of "XML editors"

From Apertium
Jump to navigation Jump to search
(man the state of FOSS XML editors sucks (unless you use emacs))
Line 1: Line 1:
Some XML editors used to edit Apertium language data (e.g. [[dix]] and [[transfer]] files):
If you are editing Apertium language data (e.g. [[dix]] and [[transfer]] files), you should use a real XML editor. These can show the errors as you type, so you won't have to parse the output of <code>make</code>.


There are two main kinds of XML errors:
* '''well-formedness''' errors are things like missing a " or end-tag; most editors are able to catch these or at least show you that you forgot a " by syntax highlighting;
* '''validation''' errors require some knowledge of what a .dix or .t1x file should look like, and may tell you things like that "you've referred to a pardef that hasn't been defined". Not all editors are able to do full validation.


Some popular editors for XML:
* [https://en.wikipedia.org/wiki/Gedit Gedit] – a GUI editor (written in C/Python)
* [https://en.wikipedia.org/wiki/Gedit Gedit] – a GUI editor (written in C/Python)
** Does syntax highlighting for XML out of the box, which does show some well-formedness errors
** Does syntax highlighting for XML out of the box, which does show some well-formedness errors
** There's an XML validation plugin at https://launchpad.net/gedit-xmltools but it only works with gedit2
** There's an XML validation plugin at https://launchpad.net/gedit-xmltools but it only works with gedit2

* [http://xml-copy-editor.sourceforge.net/index.php?page=ubuntu XML Copy Editor] – a GUI editor (written in C++) purely meant for XML
* [http://xml-copy-editor.sourceforge.net/index.php?page=ubuntu XML Copy Editor] – a GUI editor (written in C++) purely meant for XML
** XML Copy Editor will check well-formedness (that you have your brackets and quotes in place) out of the box
** XML Copy Editor will check well-formedness (that you have your brackets and quotes in place) out of the box
** To get validation you may have to click XML→Associate→System DTD and select dix.dtd from lttoolbox (typically in /usr/local/share/lttoolbox or /usr/share/lttoolbox). This will insert a DOCTYPE line in your xml, but that's fine.
** To get validation you may have to click XML→Associate→System DTD and select dix.dtd from lttoolbox (typically in /usr/local/share/lttoolbox or /usr/share/lttoolbox). This will insert a DOCTYPE line in your xml, but that's fine.
** There seems to be a bug that gives wrong line numbers on some validation errors.
** There seems to be a bug that gives wrong line numbers on some validation errors.

* [https://en.wikipedia.org/wiki/JEdit Jedit] – a GUI editor (written in Java)
* [https://en.wikipedia.org/wiki/JEdit Jedit] – a GUI editor (written in Java)
** http://stackoverflow.com/a/3435092/69663 lists some handy XML plugins
** http://stackoverflow.com/a/3435092/69663 lists some handy XML plugins

* [[Vim]] – a lightweight, modal editor
* [[Vim]] – a lightweight, modal editor

* [[Emacs]] – a self-documenting, extensible lisp machine
* [[Emacs]] – a self-documenting, extensible lisp machine
** The built-in [[Emacs#nxml-mode|nxml-mode]] does well-formedness checking
** The built-in [[Emacs#nxml-mode|nxml-mode]] does well-formedness checking

Revision as of 09:33, 12 February 2015

If you are editing Apertium language data (e.g. dix and transfer files), you should use a real XML editor. These can show the errors as you type, so you won't have to parse the output of make.

There are two main kinds of XML errors:

  • well-formedness errors are things like missing a " or end-tag; most editors are able to catch these or at least show you that you forgot a " by syntax highlighting;
  • validation errors require some knowledge of what a .dix or .t1x file should look like, and may tell you things like that "you've referred to a pardef that hasn't been defined". Not all editors are able to do full validation.


Some popular editors for XML:

  • Gedit – a GUI editor (written in C/Python)
    • Does syntax highlighting for XML out of the box, which does show some well-formedness errors
    • There's an XML validation plugin at https://launchpad.net/gedit-xmltools but it only works with gedit2
  • XML Copy Editor – a GUI editor (written in C++) purely meant for XML
    • XML Copy Editor will check well-formedness (that you have your brackets and quotes in place) out of the box
    • To get validation you may have to click XML→Associate→System DTD and select dix.dtd from lttoolbox (typically in /usr/local/share/lttoolbox or /usr/share/lttoolbox). This will insert a DOCTYPE line in your xml, but that's fine.
    • There seems to be a bug that gives wrong line numbers on some validation errors.
  • Vim – a lightweight, modal editor


Converting DTD to XSD/RNC/RNG

An XML editor can check if you XML is well-formed (the brackets match up and so on), but to check for validity, you need to give it the schema for the file type you're editing. Some editors can read the DTD schemas in the lttoolbox/apertium directories, while some editors require other schema formats.

The java program "trang" can convert the dix and transfer DTD's to other formats like XSD, RNC or RNG, if your favourite editor doesn't support DTD's.

cd
wget http://jing-trang.googlecode.com/files/trang-20091111.zip
unzip trang-20091111.zip
cd trang-20091111

java -jar trang.jar -I dtd -O xsd ~/src/apertium/trunk/lttoolbox/lttoolbox/dix.dtd ~/src/apertium/trunk/lttoolbox/lttoolbox/dix.xsd
java -jar trang.jar -I dtd -O rng ~/src/apertium/trunk/lttoolbox/lttoolbox/dix.dtd ~/src/apertium/trunk/lttoolbox/lttoolbox/dix.rng
java -jar trang.jar -I dtd -O rnc ~/src/apertium/trunk/lttoolbox/lttoolbox/dix.dtd ~/src/apertium/trunk/lttoolbox/lttoolbox/dix.rnc

See also