3939 */
4040
4141import java .io .File ;
42- import com .sun .xml .parser .Resolver ;
43- import com .sun .xml .parser .ValidatingParser ;
44- import com .sun .xml .parser .Parser ;
42+ import java .io .IOException ;
43+ import java .util .HashMap ;
44+ import java .util .Map ;
45+ import javax .xml .parsers .SAXParser ;
46+ import javax .xml .parsers .SAXParserFactory ;
4547import org .xml .sax .InputSource ;
4648import org .xml .sax .SAXException ;
4749import org .xml .sax .SAXParseException ;
48- import org .xml .sax .HandlerBase ;
50+ import org .xml .sax .helpers . DefaultHandler ;
4951
5052public class Validator
5153{
52- private static String hsID = "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN" ;
53- private static String hsDTD = "helpset_1_0.dtd" ;
5454
55- private static String tocID = "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN" ;
56- private static String tocDTD = "toc_1_0.dtd" ;
57-
58- private static String indexID = "-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN" ;
59- private static String indexDTD = "index_1_0.dtd" ;
60-
61- private static String mapID = "-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN" ;
62- private static String mapDTD = "map_1_0.dtd" ;
63-
64- private static void updateResolver (Resolver r ,
65- String pid ,
66- String dtd ) {
67- r .registerCatalogEntry (pid , dtd , null );
68-
69- if (false )
70- try {
71- java .net .URL u = ClassLoader .getSystemResource (dtd );
72- String sid = u .toExternalForm ();
73- r .registerCatalogEntry (pid , sid );
74- } catch (Exception e ) {
75- System .err .println ("caught " +e );
76- }
55+ private static final Map ID_TO_DTD = new HashMap ();
56+ static {
57+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN" , "helpset_1_0.dtd" );
58+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN" , "toc_1_0.dtd" );
59+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN" , "index_1_0.dtd" );
60+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN" , "map_1_0.dtd" );
61+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 2.0//EN" , "helpset_2_0.dtd" );
62+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 2.0//EN" , "toc_2_0.dtd" );
63+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp Index Version 2.0//EN" , "index_2_0.dtd" );
64+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp Map Version 2.0//EN" , "map_2_0.dtd" );
65+ ID_TO_DTD .put ("-//Sun Microsystems Inc.//DTD JavaHelp Favorites Version 2.0//EN" , "favorites_2_0.dtd" );
7766 }
7867
7968 //
@@ -83,33 +72,23 @@ private static void updateResolver(Resolver r,
8372 public static void main (String argv [])
8473 {
8574 InputSource input ;
86- Resolver resolver ;
8775
8876 if (argv .length < 1 ) {
8977 System .err .println ("Usage: cmd filename ..." );
9078 System .exit (1 );
9179 }
9280
9381 try {
94- // register some publicIDs
95- resolver = new Resolver ();
96-
97- updateResolver (resolver , hsID , hsDTD );
98- updateResolver (resolver , tocID , tocDTD );
99- updateResolver (resolver , indexID , indexDTD );
100- updateResolver (resolver , mapID , mapDTD );
101-
10282 // create a parser
103- Parser p = new ValidatingParser ();
104- p .setEntityResolver (resolver );
105- p .setErrorHandler (new MyHandler ());
83+
84+ SAXParserFactory factory = SAXParserFactory .newInstance ();
85+ factory .setValidating (true );
86+ SAXParser p = factory .newSAXParser ();
10687
10788 for (int i =0 ; i <argv .length ; i ++) {
108- // turn the filename into an input source and parse
109- input = resolver .createInputSource (new File (argv [i ]));
11089 try {
11190 System .err .println ("Parsing " +argv [i ]+"..." );
112- p .parse (input );
91+ p .parse (new File ( argv [ i ]), new MyHandler () );
11392 } catch (SAXParseException err ) {
11493 System .out .println ("** Parsing error"
11594 + ", line " + err .getLineNumber ()
@@ -130,13 +109,8 @@ public static void main (String argv [])
130109
131110 System .exit (0 );
132111 }
133- }
134- // An error handler
135112
136- class MyHandler extends HandlerBase {
137- public MyHandler () {
138- super ();
139- }
113+ private static class MyHandler extends DefaultHandler {
140114
141115 public void error (SAXParseException err ) throws SAXException {
142116 System .out .println ("** Parsing error"
@@ -159,5 +133,15 @@ public void warning(SAXParseException err) throws SAXException {
159133 System .out .println (" " + err .getMessage ());
160134 super .warning (err );
161135 }
136+
137+ public InputSource resolveEntity (String publicId , String systemId ) throws IOException , SAXException {
138+ String dtd = (String ) ID_TO_DTD .get (publicId );
139+ if (dtd != null ) {
140+ return new InputSource (Validator .class .getResourceAsStream (dtd ));
141+ } else {
142+ return null ;
143+ }
144+ }
162145}
163146
147+ }
0 commit comments