[
Lists Home |
Date Index |
Thread Index
]
- From: lisa@exinet.co.za (Lisa Retief)
- To: <xml-dev@xml.org>
- Date: Thu, 29 Jun 2000 08:08:50 +0200
There is a roundabout way of doing this with SAX. You need to parse a
Document that uses the particular DTD, but before doing so set the SAXParser
to use your own implementation of "org.xml.sax.ext.DeclHandler".
I use Xerces-J to do this and the parsing code looks something like:
SAXParser parser = new SAXParser();
DeclHandler handler = new CustomDeclHandler();
parser.setProperty("http://xml.org/sax/properties/declaration-handler",
handler);
parser.parse(document.getAbsolutePath());
The CustomDeclHandler looks a bit like the code below, except you'll
probably do something more useful than just print things out. I load the
information into another class which I can then interrogate...
class CustomDeclHandler
implements org.xml.sax.ext.DeclHandler
{
public void attributeDecl(java.lang.String elementName,
java.lang.String attributeName,
java.lang.String type,
java.lang.String valueDefault,
java.lang.String value)
{
System.out.println("ATTRIBUTE: ");
System.out.println("Element Name: " + elementName);
System.out.println("Attribute Name: " + attributeName);
System.out.println("Type: " + type);
System.out.println("Default Value: " + valueDefault);
System.out.println("Value: " + value);
System.out.println();
}
public void elementDecl(java.lang.String name,
java.lang.String model)
{
System.out.println("ELEMENT: ");
System.out.println("Name: " + name);
System.out.println("Model: " + model);
System.out.println();
}
public void externalEntityDecl(java.lang.String name,
java.lang.String publicId,
java.lang.String systemId)
{
System.out.println("EXTERNAL ENTITY: " + name + publicId + systemId);
}
public void internalEntityDecl(java.lang.String name,
java.lang.String value)
{
System.out.println("INTERNAL ENTITY: " + name + value);
}
}
Regards, Lisa
Dylan Walsh wrote:
> In Java, how can you inspect a DTD, without writing your own code to parse
> it? Does DOM or SAX expose the DTD in terms of what elements, attributes
> etc. are allowed?
>
> If not, is there any software out there to do it?
>
***************************************************************************
This is xml-dev, the mailing list for XML developers.
To unsubscribe, mailto:majordomo@xml.org&BODY=unsubscribe%20xml-dev
List archives are available at http://xml.org/archives/xml-dev/
***************************************************************************
|