Как использовать XPath 3.1 в Saxon?

В настоящее время я использую синтаксис XPath 3.1, но по какой-то причине Saxon выводит ошибку:

To use XPath 3.1 syntax, you must configure the XPath parser to handle it.

Как мне это сделать?

Большое спасибо!!!


person Yahya Uddin    schedule 30.11.2015    source источник
comment
Обновление: Рекомендация XSLT 3.0 и Saxon 9.8 были выпущены в один день, 8 июня 2017 г., а Saxon 9.8 безоговорочно поддерживает XPath 3.1 (во всех выпусках).   -  person Michael Kay    schedule 18.07.2017


Ответы (2)


Если вы используете API s9api, используйте XPathCompiler.setLanguageVersion("3.1").

Если вы используете JAXP, это, вероятно, плохая идея, потому что JAXP XPath API не может обрабатывать все богатство типов данных XPath 3.1; но если необходимо, приведите объект XPath к net.sf.saxon.xpath.XPathEvaluator; затем вызовите getStaticContext().setXPathLanguageLevel().

В Saxon 9.7 поддерживаемый уровень языка XPath по умолчанию — 3.0, потому что это последняя спецификация W3C, получившая статус Рекомендации.

ОБНОВЛЕНИЕ

В Saxon 9.8 по умолчанию используется XPath 3.1.

person Michael Kay    schedule 30.11.2015
comment
@Майкл. Ты уверен? В документах говорится: Начиная с Saxon 9.7, Saxon по умолчанию поддерживает XPath 3.1. Некоторые функции зависят от версии Saxon: для функций более высокого порядка требуется Saxon-PE или выше, а для поддержки схемы требуется Saxon-EE. См.: saxonica.com/html/documentation/expressions/xpath31new.html - person Stefan; 23.02.2016

В случае XSLT и Saxon-HE 9.7.0.3J это работает с использованием параметра командной строки -xsltversion:3.0 или атрибута version="3.0" элемента документа.

person ruvim    schedule 23.02.2016