MarkLogic XML转换中的XSLT 3.0支持 [英] XSLT 3.0 support in Marklogic xml transformation
本文介绍了MarkLogic XML转换中的XSLT 3.0支持的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是MarkLogic XSLT转换的新手,我有以下问题。
MarkLogic使用什么XSLT引擎来转换使用xdmp:xslt-invoke()
函数的文档?有没有办法在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支持XSLT2.0,但这并不妨碍您使用内存样式映射。
只需在样式表中声明MarkLogic映射名称空间,即可访问MarkLogic的映射函数。只需注意一个关键区别,那就是MarkLogic的映射是可变的,而XSLT 3.0中的AS映射是不可变的。换句话说,如果您使用map:put($map, "a", "b")
向MarkLogic地图添加/更改/删除内容,则地图$map将直接就地更改-当您稍后尝试执行map:get($map, "a")
操作时,您将获得a
的最新版本,即。
如果您尝试在XSLT 3.0中更新地图,您将获得一个全新的更新后的不可变副本。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:map="http://marklogic.com/xdmp/map"
exclude-result-prefixes="map"
version="2.0">
<xsl:variable name="my-map" as="map:map" select="map:map()" />
<xsl:template match="/">
<xsl:sequence select="map:put($my-map, 'a', 'b')"/>
<xsl:value-of select="map:get($my-map, 'a')"/>
</xsl:template>
</xsl:stylesheet>
这篇关于MarkLogic XML转换中的XSLT 3.0支持的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文