Я пытаюсь использовать библиотеку xades4j для цифровой подписи счета-фактуры UBL2.1.
UBL определяет преобразование xpath как:
count(ancestor-or-self::sig:UBLDocumentSignatures | here()/ancestor::sig:UBLDocumentSignatures[1]) > count(ancestor-or-self::sig:UBLDocumentSignatures)
и ссылается на Tranform ALgorithm XPath 1.0: http://www.w3.org/TR/1999/REC-xpath-19991116
Когда я определяю ссылку с помощью xades4j, это выглядит так:
DataObjectDesc ref1 = new DataObjectReference("")
.withTransform(new XPathTransform(xpathValue).withNamespace(xpathNamespacePrefix, xpathNamespace))
.withDataObjectFormat(new DataObjectFormatProperty("application/xml", "UTF-8").withDescription("xml dokumenta"));
Я получил исключение, что функция здесь () в xpath неизвестна.Функция здесь () не определена в Xpath 1.0.Но в примерах XML-файлов со знаком UBL есть:
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
<ds:XPath xmlns:sig="urn:oasis:names:specification:ubl:schema:xsd:CommonSignatureComponents-2">
count(ancestor-or-self::sig:UBLDocumentSignatures | here()/ancestor::sig:UBLDocumentSignatures[1]) > count(ancestor-or-self::sig:UBLDocumentSignatures)
</ds:XPath>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>nLVnpwiT7Va0bsPgf14kso83NS8l+/usrd/a5l5ybeY=</ds:DigestValue>
</ds:Reference>
Функция здесь () определена в XML-подписи XPath Filter 2.0: https://www.w3.org/TR/xmldsig-filter2/
Могу ли я использовать библиотеку xades4j makeпреобразование ссылки с использованием функции здесь () ???
С наилучшими пожеланиями, Josip