La transformación Xpath no funciona en java

Este es mi documento XML. Quiero firmar solo la parte de ID de usuario usando la firma xml. Estoy utilizando la transformación xpath para seleccionar ese elemento en particular.

<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Version="2.0" IssueInstant="2012-05-22T13:40:52:390" ProtocolBinding="urn:oasis:na
mes:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="localhos
t:8080/consumer.jsp">
<UserID>
   xyz
</UserID>
<testing>
   text
</testing>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
   http://localhost:8080/saml/SProvider.jsp
</saml:Issuer>
</samlp:AuthnRequest>


Estoy usando el siguiente código para agregar las transformaciones:

transformList.add(exc14nTransform);
 transformList.add(fac.newTransform(Transform.XPATH, new XPathFilterParameterSpec("samlp:AuthnRequest/UserID xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\"")));


Pero me sale lo siguiente:

Original Exception was javax.xml.transform.TransformerException: Extra illegal t
okens: 'xmlns', ':', 'samlp', '=', '"urn:oasis:names:tc:SAML:2.0:protocol"'


Por lo tanto, he intentado eliminar la parte xmlns.

transformList.add(fac.newTransform(Transform.XPATH, new XPathFilterParameterSpec("samlp:AuthnRequest/UserID")));


Pero firma todo el documento y da el siguiente mensaje:

com.sun.org.apache.xml.internal.security.utils.CachedXPa
thFuncHereAPI fixupFunctionTable
INFO: Registering Here function


¿Cuál es el problema?
EDITAR
Como @ Jörn Horstmann dijo que el mensaje es solo un registro o algo así. Ahora el problema es que incluso después de realizar la consulta xpath, todo el documento está firmado en lugar de solo el ID de usuario. Confirmé esto cambiando el valor de<testing>elemento después de firmar el documento. El resultado es que el documento no se valida (si firmó solo la parte UserID, entonces cualquier cambio realizado en<testing> debe resultar en una firma válida.)

Respuestas a la pregunta(1)

Su respuesta a la pregunta