在Web-fragment.xml中排序

时间:2017-02-28 05:46:33

标签: servlets web-fragment

我正在为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>

提前致谢。

1 个答案:

答案 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之前,现在它的确定性和顺序将是

  1. A
  2. C
  3. 为了测试,我们可以编写3个过滤器并在每个Web片段中定义一个过滤器并检查加载顺序。