我正在为项目编写XML模式。我无法解决以下问题:
元素不能自己嵌套,例如:
<document>
<text>
<b>
<i>
<a link="http://wikipedia.org">
<b />
</a>
</i>
</b>
</text>
</document>
这个例子不应该被允许,因为b嵌套自己。所以我的问题是:“是否有可能禁止一个元素自行嵌套,如果是,那么该过程是什么?”
有利于你!
\MortenMøller
编辑: 到目前为止,我只确定一个元素可以是一个自己的子元素,但不是一个元素不能有一个本身的后代。
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://cs.au.dk/dWebTek/WikiXML"
targetNamespace="http://cs.au.dk/dWebTek/WikiXML"
elementFormDefault="qualified">
<element name="wiki">
<complexType>
<choice maxOccurs="unbounded">
<!-- A lot of other element is listed here -->
<element name="bold" type="xs:boldnest"/> <!-- Missing nest function -->
</choice>
<complexType>
</element>
<complexType name="boldnest">
<choice maxOccurs="unbounded">
<element name="bold" minOccurs="0" maxOccurs="0" type="xs:boldnest"/>
<!-- All the other element is copy pasted in here -->
</choice>
</complexType>
答案 0 :(得分:0)
你想做的事是不可能的。在XML Schema中,如果使用基于类型的方法,则只能通过内容模型控制元素的子元素,而不是所有可能的后代。
你可能接近你想要做的唯一方法是将document
的内容完全定义到最后一级。但是你无法建立一个递归结构,然后将你想到的那种约束放在适当的位置。
在完成XML模式验证后,您需要使用其他一些机制对此进行验证。