Validação de Assinatura Digital

Estou realizando o processo de validação de assinatura digital no lado do servidor, recebendo um Lote deRPS. No momento da validação da assinatura do Lote de RPS a seguinte mensagem é apresentada. “javax.xml.crypto.dsig.XMLSignatureException: javax.xml.crypto.URIReferenceException: [com.sun.org.apache.xml.internal.security.utils.resolver.ResourceResolverException: Cannot resolve element with ID lote3936”

Segue código

		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
			dbf.setNamespaceAware(true);
			org.w3c.dom.Document doc = dbf.newDocumentBuilder().parse(
			        new InputSource(new StringReader(xml)));

			NodeList xmlAssinatura = doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");
			if (xmlAssinatura.getLength() == 0) {
				throw new ValidateServiceException("Elemento Signature não encontrado");
			}
			DOMStructure dse = new DOMStructure(xmlAssinatura.item(1));
			XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM");
			XMLSignature signature = factory.unmarshalXMLSignature(dse);

			PublicKey publicKey = null;
			List list = signature.getKeyInfo().getContent();
			for (int i = 0; i < list.size(); i++) {
				XMLStructure xs = (XMLStructure) list.get(i);
				if (xs instanceof X509Data) {
					for (Object data : ((X509Data) xs).getContent()) {
						if (data instanceof java.security.cert.X509Certificate) {
							publicKey = ((java.security.cert.X509Certificate) data).getPublicKey();
						}
					}
				}
			}

			DOMValidateContext valContext = new DOMValidateContext(publicKey, xmlAssinatura.item(1));
			XMLSignature xmlSignature = factory.unmarshalXMLSignature(valContext);

			System.out.println("|- coreValidity" + xmlSignature.validate(valContext));
			System.out.println("|- signature validation status:"
			        + signature.getSignatureValue().validate(valContext));

			Iterator i = xmlSignature.getSignedInfo().getReferences().iterator();
			for (int j = 0; i.hasNext(); j++) {
				Reference reference = ((Reference) i.next());
				boolean refValid = reference.validate(valContext);
				System.out.println("ref[" + j + "] validity status: " + refValid);
			}

			System.out.println("| Algoritmo assinatura: "
			        + signature.getSignedInfo().getSignatureMethod().getAlgorithm());
			System.out.println("| Algoritmo do certificado: " + publicKey.getAlgorithm());