Hi Inigo,
You are using curly braces inside your XSLT, but your XSLT is in fact literal
XML embedded in XQuery, so {local-name()} is interpreted before the
xdmp:xslt-eval call. You need to escape those curly braces by doubling them,
e.g. {{local-name()}}
Cheers,
Geert
From:
<[email protected]<mailto:[email protected]>>
on behalf of Inigo Surguy
<[email protected]<mailto:[email protected]>>
Reply-To: MarkLogic Developer Discussion
<[email protected]<mailto:[email protected]>>
Date: Friday, June 23, 2017 at 10:19 AM
To: "[email protected]<mailto:[email protected]>"
<[email protected]<mailto:[email protected]>>
Subject: [MarkLogic Dev General] MarkLogic 9 XSLT bug(?) with attribute matches
Hi,
The following looks like a bug in MarkLogic's XSLT engine to me. It works fine
via Saxon:
You can run the following in a QConsole:
-----
let $xml := <root test="anAttribute"/>
let $xslt := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:template match="@*"><xsl:attribute name="{local-name()}"
select="lower-case(.)"/></xsl:template>
<xsl:template match="node() | @* | comment() | processing-instruction()"
priority="-5">
<xsl:copy><xsl:apply-templates select="node() | @* | comment() |
processing-instruction()" mode="#current" /></xsl:copy>
</xsl:template>
</xsl:stylesheet>
return xdmp:xslt-eval($xslt, $xml)
-----
Expected behaviour - output of <root test="anattribute"/>
Actual behaviour - XDMP-MISSINGCONTEXT
I've tested this on ML 9.0-1.1, and on ML 8.0-6.3.
Are there any problems with the XSLT above? It looks correct to me, and
matching the context node inside an attribute match is pretty important for
being able to do any sort of general transform of the document.
Inigo
_______________________________________________
General mailing list
[email protected]
Manage your subscription at:
http://developer.marklogic.com/mailman/listinfo/general