[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: How to parse/expose the DTD

  • From: lisa@e... (Lisa Retief)
  • To: <xml-dev@x...>
  • Date: Thu, 29 Jun 2000 08:08:50 +0200

parsing dtd java
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@x...&BODY=unsubscribe%20xml-dev
List archives are available at http://xml.org/archives/xml-dev/
***************************************************************************

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
 

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.


Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.