XmlNSDescriptor (XmlElement context) { XmlNSDescriptor nsDescriptor = getNSDescriptor(); if (context instanceof XmlTag tag && nsDescriptor instanceof XmlNSDescriptorImpl) { final String defaultNamespace = ((XmlNSDescriptorImpl)nsDescriptor).getDefaultNamespace(); if (XmlUtil.XML_SCHEMA_URI.equals(defaultNamespace)) return nsDescriptor; // do not check for overriden for efficiency final String tagNs = tag.getNamespace(); if (tagNs.equals(defaultNamespace)) { XmlNSDescriptor previousDescriptor = nsDescriptor; nsDescriptor = tag.getNSDescriptor(tagNs, true); if (nsDescriptor == null) nsDescriptor = previousDescriptor; } } return nsDescriptor; }