问题描述
我是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