我正在创建一个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 :(得分:1)
我认为你的意思是,一个元素有一个具有相同元素类型名称的后代是否可以?
不确定;许多XML词汇表使用递归元素。 (X)HTML div 元素是您可能熟悉的示例。
递归的优点通常是它简化了词汇表;主要的缺点是它需要处理器(以及编写它们的人)来跟踪递归。在许多情况下这很容易,而在其他情况下可能会很尴尬。
您确实需要确保递归元素不需要作为其自身的子级或后代;否则就不可能拥有任何有效的有限文件。