spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / xml / column65

dtddoc step 1: Parsing a DTD

Developer News
Eclipse Helios Update Brings New PHP Tools
Internet Explorer 9 Ups Standards Support
JBoss Portal 5 Release Easier to Use

Wutka's DTD parser

Wutka's parser works the same way, but using a java.io.Reader in the constructor instead of the extra SAX inputsource parameter:

import java.io.FileReader;
import com.wutka.dtd.DTDParser;
import com.wutka.dtd.DTD;

DTDParser parser = new DTDParser(new FileReader("html4.dtd"));
DTD dtd = parser.parse();

We will examine the different DTD objects in the next article of this series.

perlSGML's DTDParser

The perlSGML library has been around in a stable version for many years, the latest dated September 18, 1997. It has many tools for manipulating SGML documents, and by logical extension XML and DTD formats. perlSGML also includes the previously introduced dtd2html for documenting DTDs.

Traditionally, Perl programs make less use of classes, in favor of a more functional programming style around the built-in hash and array data types. This put aside, reading and parsing a DTD works similar to the Java examples above:

require "dtd.pl";
$FILEHANDLE = open("html4.dtd");
$status = &DTDread_dtd(FILEHANDLE);

If DTDread_dtd() successfully parsed a DTD, it returns 1, otherwise 0. The resulting parsed data structure is held in package scope variables, creating problems for concurrency and thread safety if not handled with care. In the context of handling a single CGI request these problems are not an issue, though.

DTD Parser in phpxmlclasses

PHP can be used in both Java and Perl style in terms of programming. The PHP XML classes, as the name implies, follows a more object-oriented rather than functional paradigm:

include_once("DTD_parser.html");
$r = new URLReader("html4.dtd");
$parser = new DTDparser($r,false);		
$dtd = $parser->parse(true);  

Conclusion

Although code for dealing with DTDs exists in many programming languages, few applications are available, short of SGML/XML editors with built-in DTD support. In the coming weeks we will make use of this code to create a more powerful DTD documentation tool than dtd2html, along the lines of javadoc.


Produced by Michael Claßen

webref The latest from WebReference.com Browse >
Flashmaps' DynamicLocator: Interactive Maps for Small Areas · Flashmaps' AreaSelector: Interactive Maps for Wide Areas · The DB Mapper: Interactive Street-level Maps of U.S. and Canada
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
MS Access and MySQL · Cisco AutoQoS: VoIP QoS for Mere Mortals · While VoIP Adoption Explodes in Enterprise, Carrier Spending Lags

URL: http://www.webreference.com/xml/column65/2.html
Created: Sep 30, 2002
Revised: Sep 30, 2002