eXist-db 上的 XML:错误:XPST0003 意外令牌

Posted

技术标签:

【中文标题】eXist-db 上的 XML:错误:XPST0003 意外令牌【英文标题】:XML on eXist-db : err:XPST0003 unexpected token 【发布时间】:2014-05-11 11:51:35 【问题描述】:

我在 eXist-db 上有一个 XML 文档,但编译器抱怨给我以下错误:

无法编译 xquery:exerr:ERROR org.exist.xquery.XPathException: 错误:XPST0003 意外令牌:xml 样式表 href="../xsltforms/xsltforms.xsl" type="text/xsl" [在第 2 行,列 1]

我已经尝试了所有我能想到的:

将 xml 复制到 xhtml 文档中。 删除它抱怨的标签(但它会抱怨其他标签) 在 eXist 中运行 xml 没有结果 在浏览器中运行它生成的 html 也会出现另一个错误。

这是我认为的 XML 的相关部分:

nuevacontribucion.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="../xsltforms/xsltforms.xsl" type="text/xsl" ?><?css-conversion no?><?xsltforms-options debug="no"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xf="http://www.w3.org/2002/xforms">
<head>
    <title>Crear una nueva Contribución</title>
    <link href="../css/loading.css" rel="stylesheet"/>
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen"/>
    <link href="bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet" media="screen"/>
    <link href="assets/styles.css" rel="stylesheet" media="screen"/>
        <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="vendors/flot/excanvas.min.js"></script><![endif]-->
        <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
        <!--[if lt IE 9]>
            <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
    <script src="vendors/modernizr-2.6.2-respond-1.1.0.min.js"/>
    <style>
        input[type='text'], select
            min-height: 30px;
        
        iframe
            width: 100% !important;
            height: 200px !important;
        
        .datepicker .aid-button
            display: none !important;
        
    </style>

如果我删除 xml-stylesheet 标记,那么它会抛出相同的异常,但会抱怨 css 转换,如果我删除它,那么它是关于以下标记,如果我删除它,那么它是关于 xmlns 没有被定义或什么的。

【问题讨论】:

它将您的 XML 文件视为 XQuery;抛出错误时你对文件做了什么? “运行 XML”是什么意思? 您是如何将 XML 文档存储到数据库中的?您收到的错误来自 XQuery 的执行,这与您描述的问题无关。 这是***.com/questions/22703669/… 的副本吗?我已经评论过但@dylan-valez 没有回复,所以如果他等了一周,似乎不在我们身上? 1) 当错误被抛出时,我没有对文件做任何事情,通过说运行 XML 我的意思是点击存在数据库中的运行按钮来查看我已经完成的直接输出与其他 xml 文件。 2)该文件是用java admin客户端存储的,我恢复了一个备份,它存储了文件和文件夹,就像它在备份中一样。 3)我回复了,但没有得到回复,我真的需要这个,所以我又问了一个问题,对不起。 您是否已经将 XSLT 处理器更改为 Xalan 而不是 Saxon ? 【参考方案1】:

将 XSLT 引擎从 Saxon 更改为 Xalan。

默认情况下,eXist-db 2.0 在 eXist-db 安装目录的conf.xml 中带有以下配置:

 <transformer class="net.sf.saxon.TransformerFactoryImpl">

要解决您的问题,请将其更改为:

<transformer class="org.apache.xalan.processor.TransformerFactoryImpl">

【讨论】:

以上是关于eXist-db 上的 XML:错误:XPST0003 意外令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 eXist-db 和 xsltForms 通过浏览器编辑 xml 文件

eXist-db 压缩:zip 函数是不是添加 XML 声明

markdown 使用eXist-db以TEI XML编码的西里尔文本的全文邻近搜索

无法解析javax.xml.xquery.XQException

在exist-db 中编写一个支持多种输出格式的XQuery 脚本

使用 Exist-db 和 XSLTforms 将节点集插入文档