QName (@NotNull PrefixedName qName, XPathElement context) { final String prefix = qName.getPrefix(); final NamespaceContext namespaceContext = getNamespaceContext(); if (namespaceContext != null) { if (prefix != null) { final XmlElement element = PsiTreeUtil.getContextOfType(context, XmlElement.class, true); final String namespaceURI = namespaceContext.getNamespaceURI(prefix, element); return namespaceURI != null && namespaceURI.length() > 0 ? new QName(namespaceURI, qName.getLocalName(), prefix) : null; } else if (context.getXPathVersion() == XPathVersion.V2){ if (isDefaultCapableElement(context)) { final String namespace = namespaceContext.getDefaultNamespace(getContextElement()); if (namespace != null) { return new QName(namespace, qName.getLocalName()); } } } return new QName(null, qName.getLocalName(), ""); } else if (qName.getPrefix() == null) { return QName.valueOf(qName.getLocalName()); } else { return null; } }