首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Marklogic xml转换中的XSLT 3.0支持

问Marklogic xml转换中的XSLT 3.0支持
EN

Stack Overflow用户
提问于 2020-09-02 17:16:01
回答 1查看 156关注 0票数 0

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

Marklogic使用什么XSLT引擎来转换使用xdmp:xslt-invoke()函数的文档?有没有办法在Marklogic中支持XSLT3.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)

请告诉我如何解决这个问题

EN

回答 1

Stack Overflow用户

发布于 2020-09-03 05:46:39

MarkLogic支持XSLT2.0,但这并不能阻止您使用内存中样式的映射。

只需在样式表中声明MarkLogic名称空间,然后就可以访问MarkLogic的map函数。只需注意一个关键区别,即MarkLogic的映射是可变的,而XSLT 3.0中的as映射是不可变的。

换句话说,如果您添加/更改/删除内容到MarkLogic地图,比如使用map:put($map, "a", "b"),地图$map将直接就地更改-当您稍后尝试执行map:get($map, "a")时,您将获得a的最新版本,即"b“。

如果您尝试在XSLT 3.0中更新一个映射,您将得到一个全新的更新后的不可变副本。

代码语言:javascript
复制
<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>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63702447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档