OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: DTD parser again

[ Lists Home | Date Index | Thread Index ]
  • From: lisa@exinet.co.za (Lisa Retief)
  • To: "Huaxin Zhang" <hxzhang@cs.ualberta.ca>, <xml-dev@xml.org>
  • Date: Mon, 10 Jul 2000 15:59:40 +0200

I do it using Xerces-J (http://xml.apache.org/xerces) via the SAX API. It is
a bit of a roundabout way as 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".

The 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?
>



---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org


Huaxin Zhang wrote:


> Hi,
> Is there any DTD parser for JAVA? Better api than applications. (IBM's XML
> parser nolonger support DTD parsing, right?)
>
> Thanks.
>
>
>
>
***************************************************************************
> 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/
>
***************************************************************************
>


***************************************************************************
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/
***************************************************************************




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS