Emacs is a self-documenting, customizable, extensible real-time display editor that is used in UNIX. More information about Emacs and customization can be found here. This document describes how to customize Emacs with a major mode for VoiceXML. It also provides limited VoiceXML validation capabilities.
To extend Emacs to support VoiceXML editing, you'll need the following:
Follow these steps to install major mode for VoiceXML:
Follow these steps to verify that installation of VoiceXML major mode was successful:
To add validation support using nsgml, follow these steps:
Test nsgml by executing the following command, replacing "example.vxml" with the path to a VoiceXML document.
nsgmls -wxml -s example.vxml
Alternatively, you can run nsgml from within Emacs by typing "C-c C-v".
If you put the public DOCTYPE identifier in a VoiceXML document, nsgml must be able to fetch it. nsgml does not support authentication, so the DTD must not be hosted in a password protected location.
<!DOCTYPE vxml PUBLIC "-//Tellme Networks// DTD VXML//EN" "http://studio.tellme.com/vxml2/dtd/vxml-20-tm-pub.dtd">
If you have a local copy of the VoiceXML 2.0 DTD, you can specify it using the following DOCTYPE identifier:
<!DOCTYPE vxml PUBLIC "-//Tellme Networks// DTD VXML//EN" "/usr/local/lib/sgml/vxml-20-tm-pub.dtd">
Update the local path to the DTD accordingly.
The validator prints an error message if there is no DOCTYPE declaration in a document, but it recovers by looking it up in the CATALOG.
There are some issues related to how nsgmls and psgml searches for the DTD when it is specified both by a PUBLIC identifier and a SYSTEM identifier as in the above example. psgml requires a SYSTEM identifier; nsgmls does not.