Transformacja Xpath nie działa w Javie

To jest mój dokument XML. Chcę podpisać tylko część identyfikatora użytkownika za pomocą podpisu XML. Używam transformacji xpath, aby wybrać ten konkretny element.

<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>


Używam następującego kodu do dodawania transformacji:

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


Ale dostaję następujące informacje:

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


Próbowałem więc usunąć część xmlns.

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


Ale podpisuje cały dokument i daje następujący komunikat:

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


Jaki jest problem?
EDYTOWAĆ
Jak powiedział @ Jörn Horstmann, wiadomość to tylko dziennik lub coś w tym stylu. Teraz problem polega na tym, że nawet po podaniu zapytania xpath cały dokument jest podpisywany, a nie tylko identyfikator użytkownika. Potwierdziłem to, zmieniając wartość<testing>element po podpisaniu dokumentu. W wyniku tego dokument nie jest zatwierdzany (jeśli podpisał tylko część UserID, to wszelkie zmiany dokonane w tym dokumencie)<testing> powinien dać ważny podpis.)

questionAnswers(1)

yourAnswerToTheQuestion