Marklogic xml转换中的XSLT 3.0支持

问题描述

我是Marklogic XSLT转换的新手,并且有以下问题。

Marklogic使用xdmp:xslt-invoke()函数使用哪种XSLT引擎来转换文档?是否可以在Marklogic中支持XSLT 3.0版本?

我正在尝试使用具有以下变量的XSLT 3.0版本进行转换

<xsl:variable name="format-map" as="map(xs:string,xs:string)">

在Marklogic中使用xdmp:xslt-invoke()函数时,出现以下错误

XSLT-BADSEQTYPE: (err:XTSE0020) /*:stylesheet/*:variable[1] -- Invalid sequence type: /*:stylesheet/*:variable[1]/@as (XDMP-UNEXPECTED: (err:XPST0003) Unexpected token Syntax error,unexpected Lpar_,expecting $end)

请让我知道如何解决

解决方法

MarkLogic支持XSLT 2.0,但这不会阻止您使用内存样式映射。

只需在样式表中声明MarkLogic地图名称空间,即可访问MarkLogic的地图功能。只需注意一个关键的区别,那就是MarkLogic的映射是可变的,因为XSLT 3.0中的映射是不可变的。

换句话说,如果您向MarkLogic映射添加/更改/删除内容,例如说map:put($map,"a","b"),则映射$ map会直接就地更改-并且在您尝试进行{{1}时},您将获得map:get($map,"a")是最新版本,即“ b”。

如果您尝试在XSLT 3.0中更新地图,则会获得一个全新的更新的不可变副本。

a

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...