[jdom-interest] Namespace bug in SAXHandler?
Jason Hunter
jhunter at acm.org
Tue Aug 21 09:46:44 PDT 2001
The removal of those lines to which you refer involved fixing another
namespace bug.
To help you, it'd be good if you could send a short (tiny) reproducible
test case.
-jh-
ecky at free.fr wrote:
>
> Hi again,
>
> Something different this time: namespaces :-)
>
> switched now from from beta6+(cvs 20.06.01) to the
> beta7 available on the server and I encounter a
> namespace error that I did not have before.
>
> Parsing the file:
> <?xml version="1.0" encoding="ISO-8859-1" ?>
> <candle:workingcontext xmlns:candle="http://www.candle.eu.org/">
> <candle:contextnode candle:active="1">
> <candle:label>Home</candle:label>
> ... snip
>
> the attribute candle:active of the element candle:contextnode has
> no namespace, i.e. local namespace prefix="" uri="", and I don't know
> if this is correct.
>
> I debuged compared the two versions in question and I found
> the probable reason why:
>
> In beta6+ the method of SAXHandler looks like:
> 342 public void startElement(String namespaceURI, String localName,
> 343 String qName, Attributes atts)
> 344 throws SAXException {
> 345 if (suppress) return;
> 346
> 347 Element element = null;
> 348
> 349 if ((namespaceURI != null) && (!namespaceURI.equals(""))) {
> 350 String prefix = "";
> 351
> 352 // Determine any prefix on the Element
> 353 if (localName != qName) {
> 354 int split = qName.indexOf(":");
> 355 prefix = qName.substring(0, split);
> 356 }
> 357 Namespace elementNamespace =
> 358 Namespace.getNamespace(prefix, namespaceURI);
> 359 element = factory.element(localName, elementNamespace);
> 360
> 361 // Remove this namespace from those in the temp declared list
> 362 if (declaredNamespaces.size() > 0) {
> 363 declaredNamespaces.remove(elementNamespace);
> 364 }
> 365
> 366 // It's now in available scope
> 367 availableNamespaces.addFirst(elementNamespace);
> 368 } else {
> 369 element = factory.element(localName);
> 370 }
>
> and in beta7 it looks like this:
> 342 public void startElement(String namespaceURI, String localName,
> 343 String qName, Attributes atts)
> 344 throws SAXException {
> 345 if (suppress) return;
> 346
> 347 Element element = null;
> 348
> 349 if ((namespaceURI != null) && (!namespaceURI.equals(""))) {
> 350 String prefix = "";
> 351
> 352 // Determine any prefix on the Element
> 353 if (localName != qName) {
> 354 int split = qName.indexOf(":");
> 355 prefix = qName.substring(0, split);
> 356 }
> 357 Namespace elementNamespace =
> 358 Namespace.getNamespace(prefix, namespaceURI);
> 359 element = factory.element(localName, elementNamespace);
> 360
> 361 // Remove this namespace from those in the temp declared list
> 362 if (declaredNamespaces.size() > 0) {
> 363 declaredNamespaces.remove(elementNamespace);
> 364 }
> 365 } else {
> 366 element = factory.element(localName);
> 367 }
>
> in beta7 the lines 365-367 are missing, and that's probably why
> later in the same method (startElement) the namespace is not found
> (method: private Namespace getNamespace(String prefix) returns local namespace)
>
> My question is there a reason for that these lines are missing or
> am I missing something?
>
> cheers
> ecky
>
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com
More information about the jdom-interest
mailing list