Элемент xsl: mode не должен отображаться непосредственно в xsl: stylesheet - PullRequest
0 голосов
/ 07 сентября 2018

Получаю эту ошибку при использовании <axsl:mode on-no-match="shallow-copy"/> в моем xslt 3.0. lib -> saxon-ee:9.7.0.4

Error at /xsl:stylesheet/xsl:mode[1] 
  XTSE0010: Element xsl:mode must not appear directly within xsl:stylesheet
Error at /xsl:stylesheet/xsl:mode[1] 
  XTSE0010: Element xsl:mode must not appear directly within xsl:stylesheet
Error at /xsl:stylesheet/xsl:mode[1] 
  XTSE0010: Unknown XSLT element: mode

Когда я использую последний SaxonEE9-8-0-14, я не уверен, как использовать Serializer. net.sf.saxon.s9api.Serializer

// destination
            Serializer serializer = new Serializer(); // This worked with 9.7 but errors with 9.8
            serializer.setOutputWriter(writer);
            serializer.setOutputProperty(Serializer.Property.METHOD, "xml");
            serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, "yes");
            serializer.setOutputProperty(Serializer.Property.ENCODING, "UTF-8");
            transformer.setDestination(serializer);

Помогите пожалуйста

1 Ответ

0 голосов
/ 08 сентября 2018

Последний выпуск - Saxon 9.8. Предыдущая версия 9.7 вышла до того, как рекомендация XSLT 3.0 была окончательно оформлена, поэтому функции XSLT 3.0 были доступны только в случае явного запроса (например, путем установки version = "3.0" в таблице стилей).

Отдельно стоящий конструктор для Serializer устарел в 9.6 и 9.7 в пользу использования фабричного метода Processor.newSerializer(), а публичный конструктор был окончательно отброшен в 9.8. Это связано с тем, что, если Serializer не имеет доступа к Configuration, лежащему в основе Processor, он не может делать ничего, что должно учитывать параметры конфигурации.

...