如何在XML模式中限制选择组中的任意类型?

如何在XML模式中限制选择组中的任意类型?,xml,xsd,schema,restriction,redefine,Xml,Xsd,Schema,Restriction,Redefine,我想从Oasis XML DSig模式中重新定义/限制复杂类型 xmldsig core schema.xsd 我只想允许一个##其他命名空间中的一个显式元素类型 xmldsig restricted.xsd (1)这确实有效: (2)这也适用于: (3)这不起作用: 错误: cos-particle-restrict.2: Forbidden particle restriction: 'choice:all,sequence,elt'. rcase-RecurseLax.2

我想从Oasis XML DSig模式中重新定义/限制复杂类型

xmldsig core schema.xsd


我只想允许一个
##其他
命名空间中的一个显式元素类型

xmldsig restricted.xsd

(1)这确实有效:


(2)这也适用于:


(3)这不起作用:


错误:

cos-particle-restrict.2: Forbidden particle restriction: 'choice:all,sequence,elt'.
rcase-RecurseLax.2: There is not a complete functional mapping between the particles.
(4)此(所需定义)也不起作用:


错误:

cos-particle-restrict.2: Forbidden particle restriction: 'choice:all,sequence,elt'.
rcase-RecurseLax.2: There is not a complete functional mapping between the particles.
(1)表明
选项的限制是可以的

(2)显示仅使用
任何类型的
是可以的

(3)表明当将
任何
选项
组合在一起时,一定会有一种特殊的行为,可能是关于名称空间的

(4)看起来给定元素不是
任何类型的子集(这是不正确的)

(3)的行为也隐含在原始模式中,该模式对
选项
序列
有以下注释:


那么这意味着什么?如何定义限制

编辑


(2)/(3)
选项设置为
minOccurs=0 maxocurs=1
minOccurs=1 maxocurs=无界时,限制也可以。但为什么“恰好一”不是“任何数字”的有效限制?但是,当不使用任何类型的
时,我们已经找到了部分答案

(4)是通过删除我编写的另一个模式文档的
导入来解决的。我想在多个文件中重新定义几个targetNamespace,并将它们链接在一起。我假设我这样做不是模式文档的合法组合,它导致了某种循环依赖引用(?)。我独立地重新创建了文档,它按照我编写的方式工作


然而,(3)中显示的主要问题仍然存在(请参见编辑)。

找到了部分答案

(4)是通过删除我编写的另一个模式文档的
导入来解决的。我想在多个文件中重新定义几个targetNamespace,并将它们链接在一起。我假设我这样做不是模式文档的合法组合,它导致了某种循环依赖引用(?)。我独立地重新创建了文档,它按照我编写的方式工作


但是,(3)中显示的主要问题仍然存在(请参见编辑)。

我对您的问题进行了投票,因为您已经非常清楚地解释了一个复杂的问题。但是,我没有资格回答这个问题-这可能需要与W3C XML模式工作组有关联的人。感谢支持:)我对你的问题投了赞成票,因为你已经非常清楚地解释了一个复杂的问题。但是,我没有资格回答这个问题-这可能需要与W3C XML模式工作组有关联的人员。谢谢您的支持:)