2012-07-06 101 views
1

我正在创建一个XML模式,用于跟踪有关文件源/来源的信息。可以使用xml循环引用吗?

我想建立一个像我下面的例子一样的子母结构,所以我不必跟踪元线性列表中的关系。

这样好吗?有没有任何理由不推荐?,如果不是,什么是正确的方法?

XML结构

<meta> <!-- root --> 
<info/> 
    <sources> 
     <source> 
      <meta> <!-- circular reference --> 
      <info/> 
       <sources> 
        <source> 
          <meta>...</meta> <!-- circular reference --> 
        </source> 
       </sources> 
      </meta>  
     </source> 
     <source> 
      <meta> <!-- circular reference --> 
      <info/> 
       <sources> 
        <source> 
         <meta>...</meta> <!-- circular reference --> 
        </source> 
       </sources> 
      </meta>  
     </source> 
    </sources> 
</meta> 
+0

我想,信息元素应该与源元素在相同的缩进级别?即使如此,我也无法提出任何建议,因为我无法从示例中认识到递归应该如何结束。这将有助于以这种终止案件取代一次“......”。 – guidot 2012-07-30 08:37:43

回答

1

我想你的意思,是不是好了一个元素有相同的元素类型名称的后裔?

当然;很多XML词汇表都使用递归元素。 (X)HTML div元素是您可能会熟悉的一个示例。

递归的优点通常是它简化了词汇表;主要的缺点是需要处理器(以及编写它们的人)跟踪递归。在许多情况下这很容易,而在其他情况下可能会很尴尬。

您确实需要确保递归元素不是作为子节点或子节点的后代需要的;否则不可能有任何有效的有限文件。