为什么Orbeon自定义控件教程在我改名后就停止显示了?

Why does the Orbeon custom control tutorial stop showing when I change the name?

我想在 Orbeon 中创建一些自定义控件。在获得(看似)随机的成功后,我决定回归基础并从 Tutorial.

开始

看完教程后,我将基本组件 XBL 复制到一个文件中,在属性-local.xml 中将其链接起来,重新启动 Tomcat,进入 Form Builder 并单击新控件并将带有标签和提示的输入插入到表单上的新网格框中,这是预期的 (yay)。

(这是包含我的工具的属性-local.xml 文件的一部分)

<property as="xs:string"  name="oxf.fb.toolbox.group.other.uri.*.*">
  oxf:/xbl/play/slider/slider.xbl
  oxf:/xbl/play/betterInput/betterInput.xbl
  oxf:/xbl/play/sample/sample.xbl
</property>

然后我尝试将元素名称从 fr|tutorial-input 更改为 fr|tutoria-input,如下所示(我认为这是一个很好的简单更改)。

<xbl:xbl
    xmlns:xh="http://www.w3.org/1999/xhtml"
    xmlns:xf="http://www.w3.org/2002/xforms"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xxf="http://orbeon.org/oxf/xml/xforms"
    xmlns:fr="http://orbeon.org/oxf/xml/form-runner"
    xmlns:xbl="http://www.w3.org/ns/xbl"
    xmlns:xxbl="http://orbeon.org/oxf/xml/xbl">

    <xbl:binding
        element="fr|tutoria-input"
        id="fr-tutoria-input"
        xxbl:mode="lhha binding value">
        <xbl:template>
            <!-- Input points to the external single-node binding -->
            <xf:input ref="xxf:binding('fr-tutoria-input')"/>
        </xbl:template>
    </xbl:binding>
</xbl:xbl>

之后,重新启动 Tomcat,进入 Form Builder 并再次单击新控件,它插入了一个空的新网格框(没有输入、标签或提示)。查看表单的来源,它已经插入了输入(见下文)以及标签和提示资源,只是没有任何显示。

empty grid box

<xh:tr>
    <xh:td>
        <tutoria-input xmlns="http://orbeon.org/oxf/xml/form-runner" id="control-19-control"
                       bind="control-19-bind">
            <xf:label ref="$form-resources/control-19/label"/>
            <xf:hint ref="$form-resources/control-19/hint"/>
            <xf:alert ref="$fr-resources/detail/labels/alert"/>
        </tutoria-input>
    </xh:td>
</xh:tr>

我可以在源代码中将 tutoria-input 改回 tutorial-input(无需改回我的代码),应用它会显示在表单中,所以很明显它是 运行代码包含在 Orbeon 中并使用我所缺少的神奇东西。我什至通过 grep 通过源代码找到所有出现的 tutorial-input 以查看是否有我丢失的文件。

拜托,我缺少什么才能让我的 tutoria-input 自定义控件在表单 Builder/Orbeon 中正常显示?

为了在运行时自动找到,组件必须放在以 XBL 组件名称命名的文件夹中。因此,在您的情况下,如果您决定将组件命名为 tutoria-input,则必须将其置于:

/xbl/orbeon/tutoria-input/tutoria-input.xbl