[ 
https://issues.apache.org/jira/browse/XERCESJ-456?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17987861#comment-17987861
 ] 

Elliotte Rusty Harold commented on XERCESJ-456:
-----------------------------------------------

org.apache.xerces.impl.dtd.AbstractDTDGrammar appears to no longer exist, but I 
do see code like this in DTDGrammar:


{noformat}
        } else {
            throw new RuntimeException("Unknown content type for a element decl 
"
                                     + "in getElementContentModelValidator() in 
AbstractDTDGrammar class");
        }
{noformat}

Even if an exception is OK here, it shouldn't be a raw RuntimeException but 
something more specific.




> Call to API "getElementDecl" throws RuntimeException
> ----------------------------------------------------
>
>                 Key: XERCESJ-456
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-456
>             Project: Xerces2-J
>          Issue Type: Bug
>          Components: DTD
>    Affects Versions: 2.0.0
>         Environment: Operating System: Windows 9x
> Platform: PC
>            Reporter: Machicoane
>         Attachments: ASF.LICENSE.NOT.GRANTED--xerces.zip
>
>
> 1°) Execution trace:
> java -classpath .;..\..\xercesImpl.jar;..\..\xmlParserAPIs.jar DTDParser 
> personal.xml -->
> java.lang.RuntimeException: ImplementationMessages.VAL_CST
>         at 
> org.apache.xerces.impl.dtd.AbstractDTDGrammar.createChildModel(AbstractDTDGramma
> r.java:1361)
>         at 
> org.apache.xerces.impl.dtd.AbstractDTDGrammar.getElementContentModelValidator(Ab
> stractDTDGrammar.java:908)
>         at 
> org.apache.xerces.impl.dtd.AbstractDTDGrammar.getElementDecl(AbstractDTDGrammar.
> java:383)
>         at DTD.endDTD(DTD.java:29)
>         at 
> org.apache.xerces.impl.dtd.XMLDTDValidator.endDTD(XMLDTDValidator.java:1791)
>         at 
> org.apache.xerces.impl.XMLDTDScannerImpl.endEntity(XMLDTDScannerImpl.java:533)
>         at 
> org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1158)
>         at 
> org.apache.xerces.impl.XMLEntityManager$EntityScanner.load(XMLEntityManager.java
> :3205)
>         at 
> org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces(XMLEntityManage
> r.java:2904)
>         at 
> org.apache.xerces.impl.XMLDTDScannerImpl.skipSeparator(XMLDTDScannerImpl.java:18
> 93)
>         at 
> org.apache.xerces.impl.XMLDTDScannerImpl.scanDecls(XMLDTDScannerImpl.java:1868)
>         at 
> org.apache.xerces.impl.XMLDTDScannerImpl.scanDTDExternalSubset(XMLDTDScannerImpl
> .java:295)
>         at 
> org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(XMLDocument
> ScannerImpl.java:819)
>         at 
> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFr
> agmentScannerImpl.java:333)
>         at 
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfig
> uration.java:525)
>         at 
> org.apache.xerces.parsers.StandardParserConfiguration.parse(StandardParserConfig
> uration.java:581)
>         at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:147)
>         at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:160)
>         at DTDParser.main(DTDParser.java:21)
> Element: family
> Element: given
> Element: name
> Element: email
> Element: url
> Element: link
> 2°) Source code:
> DTDParser -->
> public class DTDParser extends DOMParser
> {
>     public DTDParser() throws SAXNotRecognizedException , 
> SAXNotSupportedException
>     {
>         super();
>         setFeature("http://xml.org/sax/features/validation";, true);
>         fConfiguration.setDTDHandler(new DTD());
>     }
>     public static void main(String args[]) throws Exception
>     {
>         DTDParser p = new DTDParser();
>         p.parse(args[0]);
>     }
> }
> DTD -->
> public class DTD extends DTDGrammar
> {
>     private XMLElementDecl currentElement;
>     public DTD()
>     {
>         super(new SymbolTable());
>         currentElement = new XMLElementDecl();
>     }
>     public void endDTD(Augmentations augs)
>     {
>         super.endDTD(augs);
>         for( int i = 1 ; i < getFirstElementDeclIndex() ; i++ )
>         {
>             try
>             {
>                 getElementDecl(i,currentElement);
>                 System.out.println("Element: " + currentElement.name.rawname);
>             }
>             catch( Exception e )
>             {
>                 e.printStackTrace();
>             }
>         }
>     }
> }



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to