@Override public void writeXsiTypeAttribute( Descriptor descriptor, String typeUri, String typeLocal, String typePrefix, boolean addToNamespaceResolver) { if (typeLocal == null) { return; } String typeValue = typeLocal; if (isNamespaceAware() && typeUri != null && !typeUri.equals(Constants.EMPTY_STRING) && !typeUri.equals(namespaceResolver.getDefaultNamespaceURI())) { String prefix = namespaceResolver.resolveNamespaceURI(typeUri); if (prefix != null && !prefix.equals(Constants.EMPTY_STRING)) { typeValue = prefix + getNamespaceSeparator() + typeValue; } else if (typeUri.equals(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI)) { prefix = namespaceResolver.generatePrefix(Constants.SCHEMA_PREFIX); typeValue = prefix + getNamespaceSeparator() + typeValue; namespaceDeclaration(prefix, typeUri); } else if (typePrefix != null && !typePrefix.equals(Constants.EMPTY_STRING)) { String existingUri = namespaceResolver.resolveNamespacePrefix(typePrefix); if (existingUri != null) { prefix = namespaceResolver.generatePrefix(); } else { prefix = typePrefix; } typeValue = prefix + getNamespaceSeparator() + typeValue; namespaceDeclaration(prefix, typeUri); } else { prefix = namespaceResolver.generatePrefix(); typeValue = prefix + getNamespaceSeparator() + typeValue; namespaceDeclaration(prefix, typeUri); } } String xsiPrefix = null; if (isNamespaceAware()) { xsiPrefix = namespaceResolver.resolveNamespaceURI( javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); if (xsiPrefix == null) { xsiPrefix = namespaceResolver.generatePrefix(Constants.SCHEMA_INSTANCE_PREFIX); namespaceDeclaration(xsiPrefix, javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); if (addToNamespaceResolver) { namespaceResolver.put(xsiPrefix, javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); } } } attributeWithoutQName( javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, Constants.SCHEMA_TYPE_ATTRIBUTE, xsiPrefix, typeValue); }
@Override public void removeExtraNamespacesFromNamespaceResolver( List<Namespace> extraNamespaces, CoreAbstractSession session) { if (extraNamespaces == null) { return; } for (int i = 0; i < extraNamespaces.size(); i++) { Namespace nextExtraNamespace = (Namespace) extraNamespaces.get(i); String uri = namespaceResolver.resolveNamespacePrefix(nextExtraNamespace.getPrefix()); if ((uri != null) && uri.equals(nextExtraNamespace.getNamespaceURI())) { namespaceResolver.removeNamespace(nextExtraNamespace.getPrefix()); } } }