我正在为OCEJWCD做准备。我得到了这个问题。并且不知道答案是什么。我认为正确的答案是订单无法预测。哪个是错的。有人可以帮助我理解它,
问:在一个应用程序中有三个web-fragment.xml。如下所示。将解析这些描述符的顺序。鉴于web.xml中没有absoulte排序。
Web Fragment A
<web-fragment>
<name>A</name>
<ordering>
<before>
<others/>
<name>B</name>
</before>
</ordering>
网络片段B:
<web-fragment>
<name>B</name>
<ordering>
<before>
<others/>
<name>C</name>
</before>
</ordering>
网络片段C:
<web-fragment>
<name>C</name>
<ordering>
<before>
<others/>
</before>
</ordering>
提前致谢。
答案 0 :(得分:1)
来自规格
&LT;前&GT;意味着必须在文件之前订购文件 名称匹配嵌套&lt; name&gt;中指定的内容元件。
有一个特殊元素&lt; others /&gt;可以包括零次或一次 在&lt;之前&gt;内或者&lt;之后&gt;元素,或零或一次直接在 &LT;绝对排序&GT;元件。 &lt; others /&gt;元素必须处理为 如下:
如果&lt;之前&gt;元素包含一个嵌套的&lt; others /&gt;,文档将是 移动到已排序文档列表的开头。如果有多个 文件陈述&lt;之前&gt;&lt; others /&gt;,它们都将在开头 已排序文档的列表 但是这样的组内的排序 文件未指定。
这清楚地表明A,B和C之间的顺序不是确定性的。
但是有这个部分
在&lt;之前&gt;内或者&lt;之后&gt;元素,如果&lt; others /&gt;元素存在, 但不是唯一的&lt; name&gt;元素 在其父元素中,另一个元素 必须在订购过程中考虑该父母中的元素。
现在A和B都属于这个类别,其网页片段的&lt; name&gt;除了&lt; others /&gt;之外的元素。在这种情况下,规范说明在订购过程中必须考虑其他元素。因此A应该在B和B之前应该在C. Voila之前,现在它的确定性和顺序将是
为了测试,我们可以编写3个过滤器并在每个Web片段中定义一个过滤器并检查加载顺序。