You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Dick Deneer <di...@donkeydevelopment.com> on 2005/12/30 16:14:20 UTC

Issues with DTDGrammar class

Maybe this is more a posting for the developer forum, becauses it 
addresses some rather technical issues while working with the 
DTDGrammar class.

While working  to improve the support for DTD editing in my xml editor, 
I came across some issues with the DTDGrammar class.

1. It would be very nice to be able to get the ContentSpecIndex for an 
element.  I tried to workaround this with the following code in my own 
program:
int chunk = elementDeclIndex >> CHUNK_SHIFT;
int index = elementDeclIndex & CHUNK_MASK;
int contentSpecIndex = 
grammar.fElementDeclContentSpecIndex[chunk][index];

But to get this working I had to change  the private identifier of  
fElementDeclContentSpecIndex in DTDGrammar to public.
So a public function getElementContentSpecIndex (int elementDeclIndex)  
would be very nice.
This way you can get the first "contentModel particle", and from there 
work up to the containging particles (like the method 
getContentSpecAsString in DTDGrammar does).
By the way I saw that this issue was already posted long time ago in 
XERCESJ-618  	

2. In DTDGrammar there is a function getElementDeclIndex(elementName) 
to get the index of the ElementDeclaration.
But it looks like this does not always work. Maybe the String object of 
the elementName must be exact the same object as stored in the 
DTDGramar class ???. I had to program a workaround by just looping 
through all the elementDeclarions  (by means of  method 
grammar.getNextElementDeclIndex(i))

Regards
Dick Deneer