@@ -97,73 +97,136 @@ public DefaultEntityResolver() {
9797 */
9898 public DefaultEntityResolver (boolean enableWhitelist ) {
9999 super ();
100- systemIdToFilename .put ("https://www.w3.org/TR/html5/entities.dtd" , "w3c/xhtml5.ent" );
101- systemIdToFilename .put ("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" , "w3c/xhtml1-strict.dtd" );
100+ systemIdToFilename .put ("https://www.w3.org/TR/html5/entities.dtd" ,
101+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml5.ent" );
102+ systemIdToFilename .put ("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" ,
103+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml1-strict.dtd" );
102104 systemIdToFilename .put ("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ,
103- "w3c/xhtml1-transitional.dtd" );
104- systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" , "w3c/xhtml11.dtd" );
105- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml11.dtd" , "w3c/xhtml11.dtd" );
106- systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml-lat1.ent" , "w3c/xhtml-lat1.ent" );
107- systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml-symbol.ent" , "w3c/xhtml-symbol.ent" );
108- systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml-special.ent" , "w3c/xhtml-special.ent" );
105+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml1-transitional.dtd" );
106+ systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" ,
107+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml11.dtd" );
108+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml11.dtd" ,
109+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml11.dtd" );
110+ systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml-lat1.ent" ,
111+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-lat1.ent" );
112+ systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml-symbol.ent" ,
113+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-symbol.ent" );
114+ systemIdToFilename .put ("http://www.w3.org/TR/xhtml11/DTD/xhtml-special.ent" ,
115+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-special.ent" );
109116 // XHTML 1.1 modules
110- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod" , "w3c/xhtml-inlstyle-1.mod" );
111- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml11-model-1.mod" , "w3c/xhtml-11-model-1.mod" );
112- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-datatypes-1.mod" , "w3c/xhtml-datatypes-1.mod" );
113- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-framework-1.mod" , "w3c/xhtml-framework-1.mod" );
114- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-text-1.mod" , "w3c/xhtml-text-1.mod" );
115- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-hypertext-1.mod" , "w3c/xhtml-hypertext-1.mod" );
116- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-list-1.mod" , "w3c/xhtml-list-1.mod" );
117- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-edit-1.mod" , "w3c/xhtml-edit-1.mod" );
118- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-bdo-1.mod" , "w3c/xhtml-bdo-1.mod" );
119- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-ruby-1.mod" , "w3c/xhtml-ruby-1.mod" );
120- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-pres-1.mod" , "w3c/xhtml-pres-1.mod" );
121- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-link-1.mod" , "w3c/xhtml-link-1.mod" );
122- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-meta-1.mod" , "w3c/xhtml-meta-1.mod" );
123- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-base-1.mod" , "w3c/xhtml-base-1.mod" );
124- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-script-1.mod" , "w3c/xhtml-script-1.mod" );
125- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-style-1.mod" , "w3c/xhtml-style-1.mod" );
126- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-image-1.mod" , "w3c/xhtml-image-1.mod" );
127- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-csismap-1.mod" , "w3c/xhtml-csismap-1.mod" );
128- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-ssismap-1.mod" , "w3c/xhtml-ssismap-1.mod" );
129- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-param-1.mod" , "w3c/xhtml-param-1.mod" );
130- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-object-1.mod" , "w3c/xhtml-object-1.mod" );
131- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-table-1.mod" , "w3c/xhtml-table-1.mod" );
132- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-form-1.mod" , "w3c/xhtml-form-1.mod" );
133- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-legacy-1.mod" , "w3c/xhtml-legacy-1.mod" );
134- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-struct-1.mod" , "w3c/xhtml-struct-1.mod" );
117+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod" ,
118+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlstyle-1.mod" );
119+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml11-model-1.mod" ,
120+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-11-model-1.mod" );
121+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-datatypes-1.mod" ,
122+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-datatypes-1.mod" );
123+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-framework-1.mod" ,
124+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-framework-1.mod" );
125+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-text-1.mod" ,
126+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-text-1.mod" );
127+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-hypertext-1.mod" ,
128+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-hypertext-1.mod" );
129+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-list-1.mod" ,
130+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-list-1.mod" );
131+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-edit-1.mod" ,
132+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-edit-1.mod" );
133+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-bdo-1.mod" ,
134+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-bdo-1.mod" );
135+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-ruby-1.mod" ,
136+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-ruby-1.mod" );
137+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-pres-1.mod" ,
138+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-pres-1.mod" );
139+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-link-1.mod" ,
140+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-link-1.mod" );
141+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-meta-1.mod" ,
142+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-meta-1.mod" );
143+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-base-1.mod" ,
144+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-base-1.mod" );
145+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-script-1.mod" ,
146+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-script-1.mod" );
147+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-style-1.mod" ,
148+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-style-1.mod" );
149+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-image-1.mod" ,
150+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-image-1.mod" );
151+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-csismap-1.mod" ,
152+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-csismap-1.mod" );
153+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-ssismap-1.mod" ,
154+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-ssismap-1.mod" );
155+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-param-1.mod" ,
156+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-param-1.mod" );
157+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-object-1.mod" ,
158+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-object-1.mod" );
159+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-table-1.mod" ,
160+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-table-1.mod" );
161+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-form-1.mod" ,
162+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-form-1.mod" );
163+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-legacy-1.mod" ,
164+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-legacy-1.mod" );
165+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-struct-1.mod" ,
166+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-struct-1.mod" );
135167 // Other common DTDs
136- systemIdToFilename .put ("http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" , "w3c/xhtml1-frameset.dtd" );
137- systemIdToFilename .put ("http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd" , "w3c/xhtml-basic11.dtd" );
138- systemIdToFilename .put ("http://www.w3.org/TR/html4/strict.dtd" , "w3c/html4-strict.dtd" );
139- systemIdToFilename .put ("http://www.w3.org/TR/html4/loose.dtd" , "w3c/html4-loose.dtd" );
140- systemIdToFilename .put ("http://www.w3.org/TR/html4/frameset.dtd" , "w3c/html4-frameset.dtd" );
141- systemIdToFilename .put ("http://www.w3.org/Math/DTD/mathml2/mathml2.dtd" , "w3c/mathml2.dtd" );
142- systemIdToFilename .put ("http://www.w3.org/Math/DTD/mathml1/mathml.dtd" , "w3c/mathml.dtd" );
143- systemIdToFilename .put ("http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd" , "w3c/xhtml-math-svg.dtd" );
144- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlstruct-1.mod" , "w3c/xhtml-inlstruct-1.dtd" );
145- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlphras-1.mod" , "w3c/xhtml-inlphras-1.dtd" );
146- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-blkstruct-1.mod" , "w3c/xhtml-blkstruct-1.mod" );
147- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-blkphras-1.mod" , "w3c/xhtml-blkphras-1.mod" );
148- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-applet-1.mod" , "w3c/xhtml-applet-1.dtd" );
149- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-blkpres-1.mod" , "w3c/xhtml-blkpres-1.mod" );
150- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-basic-form-1.mod" , "w3c/xhtml-basic-form-1.mod" );
151- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-basic-table-1.mod" , "w3c/xhtml-basic-table-1.mod" );
152- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-frames-1.mod" , "w3c/xhtml-frames-1.mod" );
153- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-target-1.mod" , "w3c/xhtml-target-1.mod" );
154- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-iframe-1.mod" , "w3c/xhtml-iframe-1.mod" );
155- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-events-1.mod" , "w3c/xhtml-events-1.mod" );
156- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-nameident-1.mod" , "w3c/xhtml-nameident-1.mod" );
157- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-legacy-redecl-1.mod" , "w3c/xhtml-legacy-redecl-1.mod" );
158- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlpres-1.mod" , "w3c/xhtml-inlpres-1.mod" );
159- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-arch-1.mod" , "w3c/xhtml-arch-1.mod" );
160- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-notations-1.mod" , "w3c/xhtml-notations-1.mod" );
161- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-qname-1.mod" , "w3c/xhtml-qname-1.mod" );
162- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-attribs-1.mod" , "w3c/xhtml-attribs-1.mod" );
163- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-charent-1.mod" , "w3c/xhtml-charent-1.mod" );
164- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-basic11-model-1.mod" , "w3c/xhtml-basic11-model-1.mod" );
165- systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inputmode-1.mod" , "w3c/xhtml-inputmode-1.mod" );
166- systemIdToFilename .put ("http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" , "w3c/svg11.dtd" );
168+ systemIdToFilename .put ("http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" ,
169+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml1-frameset.dtd" );
170+ systemIdToFilename .put ("http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd" ,
171+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic11.dtd" );
172+ systemIdToFilename .put ("http://www.w3.org/TR/html4/strict.dtd" ,
173+ "/io/sf/carte/doc/xml/dtd/w3c/html4-strict.dtd" );
174+ systemIdToFilename .put ("http://www.w3.org/TR/html4/loose.dtd" ,
175+ "/io/sf/carte/doc/xml/dtd/w3c/html4-loose.dtd" );
176+ systemIdToFilename .put ("http://www.w3.org/TR/html4/frameset.dtd" ,
177+ "/io/sf/carte/doc/xml/dtd/w3c/html4-frameset.dtd" );
178+ systemIdToFilename .put ("http://www.w3.org/Math/DTD/mathml2/mathml2.dtd" ,
179+ "/io/sf/carte/doc/xml/dtd/w3c/mathml2.dtd" );
180+ systemIdToFilename .put ("http://www.w3.org/Math/DTD/mathml1/mathml.dtd" ,
181+ "/io/sf/carte/doc/xml/dtd/w3c/mathml.dtd" );
182+ systemIdToFilename .put ("http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd" ,
183+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-math-svg.dtd" );
184+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlstruct-1.mod" ,
185+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlstruct-1.dtd" );
186+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlphras-1.mod" ,
187+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlphras-1.dtd" );
188+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-blkstruct-1.mod" ,
189+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-blkstruct-1.mod" );
190+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-blkphras-1.mod" ,
191+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-blkphras-1.mod" );
192+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-applet-1.mod" ,
193+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-applet-1.dtd" );
194+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-blkpres-1.mod" ,
195+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-blkpres-1.mod" );
196+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-basic-form-1.mod" ,
197+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic-form-1.mod" );
198+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-basic-table-1.mod" ,
199+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic-table-1.mod" );
200+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-frames-1.mod" ,
201+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-frames-1.mod" );
202+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-target-1.mod" ,
203+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-target-1.mod" );
204+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-iframe-1.mod" ,
205+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-iframe-1.mod" );
206+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-events-1.mod" ,
207+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-events-1.mod" );
208+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-nameident-1.mod" ,
209+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-nameident-1.mod" );
210+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-legacy-redecl-1.mod" ,
211+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-legacy-redecl-1.mod" );
212+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inlpres-1.mod" ,
213+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-inlpres-1.mod" );
214+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-arch-1.mod" ,
215+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-arch-1.mod" );
216+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-notations-1.mod" ,
217+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-notations-1.mod" );
218+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-qname-1.mod" ,
219+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-qname-1.mod" );
220+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-attribs-1.mod" ,
221+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-attribs-1.mod" );
222+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-charent-1.mod" ,
223+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-charent-1.mod" );
224+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-basic11-model-1.mod" ,
225+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-basic11-model-1.mod" );
226+ systemIdToFilename .put ("http://www.w3.org/MarkUp/DTD/xhtml-inputmode-1.mod" ,
227+ "/io/sf/carte/doc/xml/dtd/w3c/xhtml-inputmode-1.mod" );
228+ systemIdToFilename .put ("http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" ,
229+ "/io/sf/carte/doc/xml/dtd/w3c/svg11.dtd" );
167230 //
168231 systemIdToPublicId .put ("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" , "-//W3C//DTD XHTML 1.0 Strict//EN" );
169232 systemIdToPublicId .put ("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ,
@@ -221,18 +284,18 @@ public InputSource getExternalSubset(String name, String baseURI) throws SAXExce
221284 * Register an internal classpath filename to retrieve a DTD {@code SystemId}.
222285 *
223286 * @param systemId the {@code SystemId}.
224- * @param filename the internal filename.
287+ * @param filename the internal filename. Must point to a resource with
288+ * {@code UTF-8} encoding.
225289 * @return {@code true} if the new {@code SystemId} was successfully registered,
226290 * {@code false} if it was already registered.
227291 * @throws IllegalArgumentException if the {@code filename} is considered
228- * invalid by
229- * {@link #isInvalidInternalPath(String)}.
292+ * invalid by {@link #isInvalidPath(String)}.
230293 */
231294 protected boolean registerSystemIdFilename (String systemId , String filename ) {
232295 if (filename == null || systemId == null ) {
233296 throw new NullPointerException ("Null SystemId or filename." );
234297 }
235- if (isInvalidInternalPath (filename )) {
298+ if (isInvalidPath (filename )) {
236299 throw new IllegalArgumentException ("Bad DTD filename." );
237300 }
238301 String ret ;
@@ -242,21 +305,6 @@ protected boolean registerSystemIdFilename(String systemId, String filename) {
242305 return ret == null ;
243306 }
244307
245- /**
246- * Determine if the given pathname is an invalid internal path.
247- * <p>
248- * The pathname must contain {@code /dtd/} and be a valid path according to
249- * {@link #isInvalidPath(String)}.
250- * </p>
251- *
252- * @param pathname the classpath pathname to check. It is assumed to be
253- * non-{@code null}.
254- * @return {@code true} if the pathname is invalid.
255- */
256- protected boolean isInvalidInternalPath (String pathname ) {
257- return isInvalidPath (pathname ) || !pathname .contains ("/dtd/" );
258- }
259-
260308 @ Override
261309 public final InputSource resolveEntity (String name , String publicId , String baseURI , String systemId )
262310 throws SAXException , IOException {
@@ -456,24 +504,19 @@ public void setClassLoader(ClassLoader loader) {
456504 }
457505
458506 private Reader loadDTDfromClasspath (final String dtdFilename ) {
459- final String resPath ;
460- if (dtdFilename .charAt (0 ) != '/' ) {
461- // relative
462- String pkgPath = DefaultEntityResolver .class .getPackage ().getName ().replace ('.' , '/' );
463- StringBuilder buf = new StringBuilder (pkgPath .length () + dtdFilename .length () + 2 );
464- buf .append ('/' ).append (pkgPath ).append ('/' ).append (dtdFilename );
465- resPath = buf .toString ();
466- } else {
467- resPath = dtdFilename ;
468- }
469507 InputStream is = java .security .AccessController .doPrivileged (new java .security .PrivilegedAction <InputStream >() {
470508 @ Override
471509 public InputStream run () {
510+ InputStream is ;
472511 if (loader != null ) {
473- return loader .getResourceAsStream (resPath );
512+ is = loader .getResourceAsStream (dtdFilename );
474513 } else {
475- return this .getClass ().getResourceAsStream (resPath );
514+ is = DefaultEntityResolver .class .getResourceAsStream (dtdFilename );
515+ }
516+ if (is == null ) {
517+ is = ClassLoader .getSystemResourceAsStream (dtdFilename );
476518 }
519+ return is ;
477520 }
478521 });
479522 Reader re = null ;
0 commit comments