docs: private void doNamespaceQualifiedAttributeValidation(Node receivedElement, Node receivedAttribute, Node sourceElement, Node sourceAttribute) {
          String receivedValue = receivedAttribute.getNodeValue();
          String sourceValue = sourceAttribute.getNodeValue();
  
          if (receivedValue.contains(":") && sourceValue.contains(":")) {
              // value has namespace prefix set, do special QName validation
              String receivedPrefix = receivedValue.substring(0, receivedValue.indexOf(':'));
              String sourcePrefix = sourceValue.substring(0, sourceValue.indexOf(':'));
  
              Map<String, String> receivedNamespaces = XMLUtils.lookupNamespaces(receivedAttribute.getOwnerDocument());
              receivedNamespaces.putAll(XMLUtils.lookupNamespaces(receivedElement));
  
              if (receivedNamespaces.containsKey(receivedPrefix)) {
                  Map<String, String> sourceNamespaces = XMLUtils.lookupNamespaces(sourceAttribute.getOwnerDocument());
                  sourceNamespaces.putAll(XMLUtils.lookupNamespaces(sourceElement));
  
                  if (sourceNamespaces.containsKey(sourcePrefix)) {
                      Assert.isTrue(sourceNamespaces.get(sourcePrefix).equals(receivedNamespaces.get(receivedPrefix)),
                              ValidationUtils.buildValueMismatchErrorMessage("Values not equal for attribute value namespace '"
                                      + receivedValue + "'", sourceNamespaces.get(sourcePrefix), receivedNamespaces.get(receivedPrefix)));
  
                      // remove namespace prefixes as they must not form equality
                      receivedValue = receivedValue.substring((receivedPrefix + ":").length());
                      sourceValue = sourceValue.substring((sourcePrefix + ":").length());
                  } else {
                      throw new ValidationException("Received attribute value '" + receivedAttribute.getLocalName() + "' describes namespace qualified attribute value," +
                              " control value '" + sourceValue + "' does not");
                  }
              }
          }
  
          Assert.isTrue(receivedValue.equals(sourceValue),
                  ValidationUtils.buildValueMismatchErrorMessage("Values not equal for attribute '"
                          + receivedAttribute.getLocalName() + "'", sourceValue, receivedValue));
      }