我们(尝试)从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多个包含引用,任何人都在寻找其他东西(例如,包含文件中声明的命名空间必须在包含的文件中重新声明)
这是否应该是必要的?如果没有,我们如何避免呢?
答案 0 :(得分:0)
我想这是因为在包含的文件中你有一个&#34;外来&#34;根元素。即如果你要复制粘贴<xi:include>
所包含的文件的内容,你会遇到同样的问题,这听起来非常像问题Henry is describing in another thread。
正确的做法是:
xpointer="xpath(/*/*)"
添加到<xi:include>
。我认为数字1更干净,但我知道这比在<xi:include>
上添加属性更有用。
关于必须在包含文件中重新声明的包含文件中声明的命名空间,每个文件本身应该是有效的XML,如果在文件中使用命名空间(即使在属性中),它必须在那里宣布。也许您不得不进行此更改,因为过去Orbeon Forms错误地将包含文件的包含文件的名称空间声明放入包含文件中的XML范围内,从那时起该问题已得到纠正。
我知道做这些更改并不会很有趣,但会使您的代码更清晰。当然,如果您觉得需要进行任何更改以解决Orbeon Forms中的新错误,而不是因为已修复的错误而进行更改,请告诉我们!