Your support for our advertisers helps cover the cost of hosting, research, and maintenance of this FAQ

The XML FAQ — Frequently-Asked Questions about the Extensible Markup Language

Section 4: Developers

Q 4.11: What XML software is available?

Thousands of programs: too many to list here.

Hundreds, possibly thousands, of programs. Details are no longer listed in this FAQ as they are now too many and are changing too rapidly to be kept up to date: see the XML Web pages at http://xml.coverpages.org/ and watch for announcements on the mailing lists and newsgroups.

For a detailed guide to some examples of XML programs and the concepts behind them, see the editor's book (Flynn, 1998). There are several implementations of the key XML processing and query languages (XSLT2, XQuery, and XSL:FO), the most popular of which is probably Saxon.

SGML software such as Jade and SP (now OpenSP) remain the source of several utilities which also handle XML, especially the onsgmls validating parser and sgmlnorm (see Converting valid HTML to XHTML).

Details of some XML software products are held on the XML Cover Pages. For browsers see the question on XML Browsers and the details of the xml-dev mailing list for software developers. Bert Bos keeps a list of some XML developments in Bison, Flex, Perl, and Python. The long-established conversion and application development engines like Omnimark, and SGMLC all have XML capability and they all provide APIs.

XML Editors

Choosing an editor is one of the hardest tasks, because everyone has different requirements and levels of knowledge, and what appears to be incredibly simple to one user may seem dauntingly difficult to another. All XML editors guide the user in the construction or maintenance of XML documents — that's their purpose in life.

The simplest ones just keep track of matching pointy brackets, start-tags and end-tags, and balanced quotes, leading to a well-formed file. More powerful editors can read a DTD or Schema and provide menu choices for element manipulation and attribute editing, and prevent the creation of invalid documents. The most powerful ones can also be used for DTD or Schema development, and for XML processing with XSLT or XSL:FO.

Some are text-mode editors — they show all the markup and the text with nothing hidden, often using colour to distinguish markup characters and indentation to show the structure. Most editors have a synchronous typographic mode as well, using a stylesheet to format the display, so you appear to be editing a fully typeset view of the document (often called WYSIWYG, although it's actually not). Text-mode editors worry some users because the pointy brackets are visible (they think it's programming); synchronous typographic editors worry other people because the pointy brackets are not visible, which makes it hard to see where stuff begins and ends.

The more sophisticated editors are programmable, so the nature and effect of the markup and the user's actions can be limited or enhanced by scripts in JavaScript, VBscript, Python, Tcl, Lisp, etc; or XSLT.

Do not be tempted to use a non-XML editor like Notepad, vi, or textedit for XML documents: it will only end in tears, anger, and recriminations. Get properly-equipped. (Microsoft's separate XML Notepad product is usable for editing small instances, but not for DTD or Schema development.)

Wikipedia has a comparison of editors at http://en.wikipedia.org/wiki/Comparison_of_XML_editors but it doesn't give any qualitative information. There is an old (2004) comparative paper on choosing an XML editor from Thijs van den Broek which may help with methodology although the products are not current.

Several of the editors are available free of charge or free for demo/examination, but as far as is known, the only entirely open-source one is Emacs with nxml-mode (for W3C and RNG schemas) or psgml-mode (for DTDs).

There is a page of useful links for XML users in Dutch at http://xml.beginthier.nl/.

Information for developers of Chinese XML systems can be found at the Chinese XML Now! website of Academia Sinica: http://www.ascc.net/xml/ This site includes a FAQ and test files.