我们如何在Orbeon 4.1中包含文件?

时间:2015-10-15 18:11:10

标签: upgrade orbeon

我们(尝试)从Orbeon 3.9升级到Orbeon 4.1。这不是“Orbeon Forms”,而是用Orbeon语言编写的应用程序。

一切都在3.9。 在升级之后,在一些其他项目中更改了page-flow.xml,我们发现通过包含的实例没有被“看到”,我们会收到“找不到实例”的警告。

以前,我们只使用:

<xi:include href="oxf:///apps/includes/ONHeader.xhtml"/>

通过实验,我们发现需要将文件更改为:

<xi:include href="oxf:///apps/includes/ONHeader.xhtml"
            xpointer="xpath(/*/*)"/>

(请注意,某些xpath表达式,例如//*,会导致“重复的实例ID”错误消息)

我们有2,000多个包含引用,任何人都在寻找其他东西(例如,包含文件中声明的命名空间必须在包含的文件中重新声明)

这是否应该是必要的?如果没有,我们如何避免呢?

1 个答案:

答案 0 :(得分:0)

我想这是因为在包含的文件中你有一个&#34;外来&#34;根元素。即如果你要复制粘贴<xi:include>所包含的文件的内容,你会遇到同样的问题,这听起来非常像问题Henry is describing in another thread

正确的做法是:

  1. 删除包含文件中的外部元素(将命名空间声明移动到其子元素。
  2. 按照建议将xpointer="xpath(/*/*)"添加到<xi:include>
  3. 我认为数字1更干净,但我知道这比在<xi:include>上添加属性更有用。

    关于必须在包含文件中重新声明的包含文件中声明的命名空间,每个文件本身应该是有效的XML,如果在文件中使用命名空间(即使在属性中),它必须在那里宣布。也许您不得不进行此更改,因为过去Orbeon Forms错误地将包含文件的包含文件的名称空间声明放入包含文件中的XML范围内,从那时起该问题已得到纠正。

    我知道做这些更改并不会很有趣,但会使您的代码更清晰。当然,如果您觉得需要进行任何更改以解决Orbeon Forms中的新错误,而不是因为已修复的错误而进行更改,请告诉我们!