XML Schema定义的标记是否可以根据数据类型具有不同的约束?

时间:2010-01-15 18:53:13

标签: xml schema xsd

我正在研究一种涉及格式化点列表的自定义XML格式。我们希望支持多种类型的坐标系,例如笛卡尔坐标系和球面坐标系。可以这样做吗?

示例:

<point type="cartesian">
<c1>5.0</c1>
<c2>5.6</c2>
<c3>9.1</c3>
</point>
<point type="spherical">
<c1>5.0</c1>
<c2>5.6</c2>
<c3>9.1</c3>
</point>

球面坐标自动界定,保持c1为正,c2,c3为0~2PI。虽然在笛卡尔版本中没有c1到c3的界限。如果这不能写成一个Scheme,我至少可以这样做吗?

<point type="cartesian">
<c1 type="cartesian">5.0</c1>
<c2 type="cartesian">5.6</c2>
<c3 type="cartesian">9.1</c3>
</point>
<point type="spherical">
<c1 type="spherical">5.0</c1>
<c2 type="spherical">5.6</c2>
<c3 type="spherical">9.1</c3>
</point>

在这种情况下,我知道我可以通过它的类型对元素强制执行约束,但是我可以强制某个特定元素与它的父元素具有相同的类型吗?

我希望这很明确,能够得到我在这里要做的事情。我想通过设置点元素的类型来约束c1到c3类型将接受的数据类型。

1 个答案:

答案 0 :(得分:3)

不,这是不可能的。

另一方面,您可以使sphericalPointcartesianPoint元素扩展point。在某些情况下,您可以限制子元素的类型,假设它们是父元素类型的子集。您还可以添加基本类型中不存在的子元素。