我在使用xslt:transform()和BaseX转换包含实体的xml节点时遇到了一些麻烦:
let $xsl := doc('xsl/commun.xsl')
return
xslt:transform(<node>ééé</node>, $xsl)
给
[FODC0002] "" (Line 1): L'entité "eacute" était référencée, mais pas déclarée.
我使用/不使用intparse和/或DTD选项创建了我的数据库,没有任何更改(options basex)。
xslt:processor()和xslt:version告诉我我正在使用java 1.0作为处理器。
这是我的xslt的声明:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:tei="http://www.tei-c.org/ns/1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" encoding="UTF-8" omit-xml-declaration="no" exclude-result-prefixes="#all"/>xslt:transform
<xsl:template match="/"/>
我不知道我做错了什么...我应该声明我想在XSL文件中使用的任何实体吗?
xslt:processor()和xslt:version告诉我我正在使用JAVA 1.0作为处理器。
正如here所解释的那样“如果在类路径中找到Saxon XSLT处理器的版本9.x(saxon9he.jar,saxon9pe.jar,saxon9ee.jar),则将启用XSLT 3.0”
只需在{Basex Folder} / lib / custom中添加saxon9he.jar就可以了
希望有所帮助