+ else if (XMLString::equals(nsuri,XSI_NS)) {
+ static const XMLCh type[]= UNICODE_LITERAL_4(t,y,p,e);
+ static const XMLCh schemaLocation[]= UNICODE_LITERAL_14(s,c,h,e,m,a,L,o,c,a,t,i,o,n);
+ static const XMLCh noNamespaceSchemaLocation[]= UNICODE_LITERAL_25(n,o,N,a,m,e,s,p,a,c,e,S,c,h,e,m,a,L,o,c,a,t,i,o,n);
+ static const XMLCh _nil[]= UNICODE_LITERAL_3(n,i,l);
+ if (XMLString::equals(attribute->getLocalName(),type)) {
+ m_log.debug("skipping xsi:type declaration");
+ continue;
+ }
+ else if (XMLString::equals(attribute->getLocalName(),schemaLocation)) {
+ m_log.debug("storing off xsi:schemaLocation attribute");
+ if (m_schemaLocation)
+ XMLString::release(&m_schemaLocation);
+ m_schemaLocation=XMLString::replicate(attribute->getValue());
+ continue;
+ }
+ else if (XMLString::equals(attribute->getLocalName(),noNamespaceSchemaLocation)) {
+ m_log.debug("storing off xsi:noNamespaceSchemaLocation attribute");
+ if (m_noNamespaceSchemaLocation)
+ XMLString::release(&m_noNamespaceSchemaLocation);
+ m_schemaLocation=XMLString::replicate(attribute->getValue());
+ m_noNamespaceSchemaLocation=XMLString::replicate(attribute->getValue());
+ continue;
+ }
+ else if (XMLString::equals(attribute->getLocalName(), _nil)) {
+ m_log.debug("processing xsi:nil attribute");
+ setNil(attribute->getValue());
+ continue;
+ }
+ // Note that the prefix is visibly used.
+ addNamespace(Namespace(nsuri, attribute->getPrefix(), false, Namespace::VisiblyUsed));
+ }
+ else if (nsuri && !XMLString::equals(nsuri,XML_NS)) {
+ m_log.debug("found namespace-qualified attribute, adding prefix to the list of visible namespaces on the XMLObject");
+ addNamespace(Namespace(nsuri, attribute->getPrefix(), false, Namespace::VisiblyUsed));