@@ -21,7 +21,6 @@ export class DOMBuilder implements ContentHandler {
2121 stack : Array < XMLElement > = [ ] ;
2222 catalog : Catalog | undefined ;
2323 dtdParser : DTDParser | undefined ;
24- grammarUrl : string | undefined ;
2524 grammar : Grammar | undefined ;
2625
2726 initialize ( ) : void {
@@ -34,10 +33,6 @@ export class DOMBuilder implements ContentHandler {
3433 this . catalog = catalog ;
3534 }
3635
37- setDTDParser ( dtdParser : DTDParser ) : void {
38- this . dtdParser = dtdParser ;
39- }
40-
4136 getDocument ( ) : XMLDocument | undefined {
4237 return this . document ;
4338 }
@@ -117,14 +112,6 @@ export class DOMBuilder implements ContentHandler {
117112 } else {
118113 this . document ?. addProcessingInstruction ( pi ) ;
119114 }
120- if ( target === 'xml-model' && this . catalog ) {
121- // TODO process the xml-model
122- /*
123- let atts: Map<string, string> = this.parseXmlModel(data);
124- let href: string = atts.get('href');
125- let schematypens: string = atts.get('schematypens');
126- */
127- }
128115 }
129116
130117 parseXmlModel ( text : string ) : Map < string , string > {
@@ -187,13 +174,12 @@ export class DOMBuilder implements ContentHandler {
187174 if ( this . catalog ) {
188175 let url = this . catalog . resolveEntity ( publicId , systemId ) ;
189176 if ( url ) {
190- this . grammarUrl = url ;
191- // TODO check grammar type (DTD, XSD or RelaxNG) and use the ritght parser
192- if ( this . dtdParser && this . grammarUrl ) {
193- let dtdGrammar : Grammar = this . dtdParser . parseDTD ( this . grammarUrl ) ;
194- if ( dtdGrammar ) {
195- this . grammar = dtdGrammar ;
196- }
177+ if ( ! this . dtdParser ) {
178+ this . dtdParser = new DTDParser ( ) ;
179+ }
180+ let dtdGrammar : Grammar = this . dtdParser . parseDTD ( url ) ;
181+ if ( dtdGrammar ) {
182+ this . grammar = dtdGrammar ;
197183 }
198184 }
199185 }
@@ -203,6 +189,10 @@ export class DOMBuilder implements ContentHandler {
203189 // do nothing
204190 }
205191
192+ getGrammar ( ) : Grammar | undefined {
193+ return this . grammar ;
194+ }
195+
206196 skippedEntity ( name : string ) : void {
207197 // TODO
208198 throw new Error ( "Method not implemented." ) ;
0 commit comments