空序列不能作为变量 $attachment-mediatypes的值

前端开发 2026-07-11

我正在使用镜像 orbeon/orbeon-forms:2025.1-pe,并将MySQL服务器作为数据库。

orbeon.xml:

<Context path="/orbeon">
    <Resource
        name="jdbc/mysql"
        driverClassName="com.mysql.cj.jdbc.Driver"

        auth="Container"
        type="javax.sql.DataSource"

        initialSize="3"
        maxActive="10"
        maxIdle="10"
        maxWait="30000"

        poolPreparedStatements="true"

        testOnBorrow="true"
        validationQuery="select 1"

        username="orbeon"
        password="XXXXXX"
        url="jdbc:mysql://mysql-instance:3306/orbeon"/>

</Context>

properties-prod.xml:

<properties xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:oxf="http://www.orbeon.com/oxf/processors">
    <property as="xs:string"  name="oxf.crypto.password"               value="change-password"/>
    <property as="xs:string"  name="oxf.fr.persistence.provider.*.*.*" value="mysql"/>
    <property as="xs:boolean" name="oxf.fr.persistence.sqlite.active"  value="false"/>
</properties>

DDL I have used is here.

我使用的DDL在这里:here

My Dockerfile

FROM orbeon/orbeon-forms:2025.1-pe

USER root
RUN apt-get update && apt-get install -y wget 

RUN mkdir -p /tmp/orbeon
WORKDIR /tmp/orbeon

# JDBC driver for MySQL
RUN wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-9.0.0.tar.gz \
    && tar xvfz mysql-connector-j-9.0.0.tar.gz \
    && mv mysql-connector-j-9.0.0/mysql-connector-j-9.0.0.jar /usr/local/tomcat/lib/ 

# Remove SQLite database and JDBC driver (optional)
RUN rm -f /usr/local/tomcat/webapps/orbeon/WEB-INF/orbeon-demo.sqlite \
    && rm -f /usr/local/tomcat/webapps/orbeon/WEB-INF/lib/sqlite-jdbc-*.jar 

# Remove PostgreSQL JDBC driver (optional)
RUN rm -f /usr/local/tomcat/lib/postgresql-*.jar

RUN rm -rf /var/lib/apt/lists/*

# Cleanup
RUN rm -rf /tmp/orbeon

COPY license.xml /usr/local/tomcat/webapps/orbeon/WEB-INF/resources/config/
COPY properties-prod.xml /usr/local/tomcat/webapps/orbeon/WEB-INF/resources/config/
COPY orbeon.xml /usr/local/tomcat/conf/Catalina/localhost/

模式、表等都已经存在于MySQL数据库中,容器中的数据库也已连接。但在运行orbeon容器时,我却遇到了这个错误:

2026-03-10T22:04:39,083 - 86 - INFO  lifecycle - event: {"request": "2", "session": "A550BDA573EE2E7D2E930F13582E1A81", "source": "service", "message": "start: handle"}
2026-03-10T22:04:39,083 - 86 - INFO  ProcessorService - Start request: GET /orbeon/fr/
2026-03-10T22:04:39,843 - 86 - ERROR XSLTTransformer - Error at line 1097 of oxf:/apps/fr/components/components.xsl:
An empty sequence is not allowed as the value of variable $attachment-mediatypes
2026-03-10T22:04:39,853 - 86 - ERROR PageFlowControllerProcessor - error caught {controller: "oxf:/apps/fr/page-flow.xml", method: "GET", path: "/fr/"}
2026-03-10T22:04:39,876 - 86 - ERROR PageFlowControllerProcessor -
+----------------------------------------------------------------------------------------------------------------------+
|An Error has Occurred                                                                                                 |
|----------------------------------------------------------------------------------------------------------------------|
|An empty sequence is not allowed as the value of variable $attachment-mediatypes                                      |
|----------------------------------------------------------------------------------------------------------------------|
|Application Call Stack                                                                                                |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/components/components.xsl                                            |                              |1097|
|oxf:/apps/fr/page-flow.xml                                                        |reading page view data output | 260|
|······················································································································|
|element=<page id="fr-landing" path="/fr/" model="landing/landing.xhtml" view="html-view.xpl" default-submission="reque|
|st-parameters.xml">[...]</page>                                                                                       |
|page id=fr-landing                                                                                                    |
|view   =html-view.xpl                                                                                                 |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/html-view.xpl                                                        |reading processor output      |  34|
|······················································································································|
|element=<p:output name="data" ref="data"/>                                                                            |
|name   =data                                                                                                          |
|ref    =data                                                                                                          |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/unroll-form.xpl                                                      |reading processor output      | 107|
|······················································································································|
|element=<p:output name="data" ref="data"/>                                                                            |
|name   =data                                                                                                          |
|ref    =data                                                                                                          |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/unroll-form.xpl                                                      |reading processor output      |  95|
|······················································································································|
|element=<p:output name="data" id="after-components"/>                                                                 |
|name   =data                                                                                                          |
|id     =after-components                                                                                              |
|----------------------------------------------------------------------------------------------------------------------|
|oxf:/apps/fr/components/components.xsl                                            |executing XSLT transformation |1097|
|----------------------------------------------------------------------------------------------------------------------|
|Exception: org.orbeon.saxon.trans.XPathException                                                                      |
|----------------------------------------------------------------------------------------------------------------------|
|org.orbeon.saxon.expr.CardinalityCheckingIterator  |typeError                     |                              | 120|
|org.orbeon.saxon.expr.CardinalityCheckingIterator  |<init>                        |                              |  47|
|org.orbeon.saxon.expr.CardinalityChecker           |iterate                       |                              | 171|
|org.orbeon.saxon.expr.ExpressionTool               |evaluate                      |                              | 308|
|org.orbeon.saxon.instruct.GlobalVariable           |getSelectValue                |                              | 209|
|org.orbeon.saxon.instruct.GlobalVariable           |evaluateVariable              |                              | 233|

如何解决?

解决方案

问题的原因在于你的属性文件被命名为 properties-prod.xml,它覆盖了一个关键的内部文件。该内部文件包含了若干属性文件,其中包括 properties-form-runner.xml,在其中声明了用于 $attachment-mediatypes 的属性。这就是你看到这个错误的原因。

我建议如下:

  • properties-prod.xml 重命名为 properties-local.xml
  • 将你的 Dockerfile 更新为使用 COPY properties-local.xml,而不是 COPY properties-prod.xml
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章