You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@xml.apache.org by Edwin Goei <Ed...@eng.sun.com> on 2000/10/22 15:36:33 UTC

Re: How do i get the dtd name?

Sandeep Randhawa wrote:
> 
> Hi could somebody tell me how to get the dtd name ie ?SYSTEM filename
> ?PUBLIC
> What i want is the data after <!DOCTYPE, i looked up the docu, i found how
> to do it in dom, but i need to find it in SAX. I need the dtd file name.
> Thanks for any help.
> PS: I looked thru the docu, but maybe i missed something.

Should be the same as the first Element which will be reported through
the first startElement() call in SAX.

-Edwin

Re: How do i get the dtd name?

Posted by Patrick Haggerty <ha...@mindspring.com>.
Hey there Sandeep!

Unfortunately the DOCTYPE is not reported as the first element. What you 
need to do it write your own LexicalHandler. You implement the 
LexicalHandler interface in a class and it defines a method

startDTD(java.lang.String name, java.lang.String publicId, java.lang.String 
systemId)

like so:

import org.xml.sax.ext.*;
public class MyLexicalHandler implements LexicalHandler
{
   public void startDTD(String name, String publicId, String systemId) 
throws org.xml.sax.SAXException
   {
     System.out.println("Got the DTD: " + name + sep);
     if(publicId==null)
       System.out.println("\tType SYSTEM: " + systemId);
     else
       System.out.println("\tType PUBLIC: " + publicId);
   }
   public void endDTD() throws org.xml.sax.SAXException
   {
   }
   public void startEntity(String parm1) throws org.xml.sax.SAXException
   {
   }
   public void endEntity(String parm1) throws org.xml.sax.SAXException
   {
   }
   public void startCDATA() throws org.xml.sax.SAXException
   {
   }
   public void endCDATA() throws org.xml.sax.SAXException
   {
   }
   public void comment(char[] parm1, int parm2, int parm3) throws 
org.xml.sax.SAXException
   {
   }
}

Then in your mail parser class just enable the property:
       parser.setProperty("http://xml.org/sax/properties/lexical-handler", 
new MyLexicalHandler());

And you are good to go.

Have a good one!!!

At 02:36 PM 10/22/2000 +0100, you wrote:
>Sandeep Randhawa wrote:
> >
> > Hi could somebody tell me how to get the dtd name ie ?SYSTEM filename
> > ?PUBLIC
> > What i want is the data after <!DOCTYPE, i looked up the docu, i found how
> > to do it in dom, but i need to find it in SAX. I need the dtd file name.
> > Thanks for any help.
> > PS: I looked thru the docu, but maybe i missed something.
>
>Should be the same as the first Element which will be reported through
>the first startElement() call in SAX.
>
>-Edwin
>
>---------------------------------------------------------------------
>In case of troubles, e-mail:     webmaster@xml.apache.org
>To unsubscribe, e-mail:          general-unsubscribe@xml.apache.org
>For additional commands, e-mail: general-help@xml.apache.org


Cheers!
Hagg
That's Internet for:
Patrick E. Haggerty, III

Remember to be kind to rude people
They are just too stupid to know any better