XSD问题:如何仅限制在另一个模式下使用的元素/属性

XSD问题:如何仅限制在另一个模式下使用的元素/属性,xsd,restriction,xsd-validation,Xsd,Restriction,Xsd Validation,我需要解决这个问题,看起来我需要帮助 这是问题的定义 我们有一个现有的模式X[X是一个行业标准模式],我们正在一个新的模式Y(具有不同的目标命名空间)中为其构建一些扩展 现在的问题是,我们希望限制模式Y的元素/属性的使用仅作为定义的元素/类型X的成员。[如果使用无效,模式验证应该失败] 我们如何做到这一点?最好的方法是什么 RM我认为这取决于您修改的量和模式的外观。一个方面是您的扩展是否靠近根或叶 这里是一个接近根的通用方法 X.xsd element name=foo type=fooType

我需要解决这个问题,看起来我需要帮助

这是问题的定义 我们有一个现有的模式X[X是一个行业标准模式],我们正在一个新的模式Y(具有不同的目标命名空间)中为其构建一些扩展

现在的问题是,我们希望限制模式Y的元素/属性的使用仅作为定义的元素/类型X的成员。[如果使用无效,模式验证应该失败]

我们如何做到这一点?最好的方法是什么


RM

我认为这取决于您修改的量和模式的外观。一个方面是您的扩展是否靠近根或叶

这里是一个接近根的通用方法

X.xsd
element name=foo type=fooType

complexType fooType
  sequence
     element name=bar type=BarType

Y.xsd
import X.xsd namespace=xns

element name=foo type=foo2Type

complexType foo2Type
  sequence
     element name=bar type=xns:BarType
     element name=baz type=BazType
在这里,您添加了自己定义的新元素baz,但bar将包含行业标准要求的所有子元素


将X导入Y(使用Import元素)。

我认为这取决于您要修改的内容以及模式的外观。一个方面是您的扩展是否靠近根或叶

这里是一个接近根的通用方法

X.xsd
element name=foo type=fooType

complexType fooType
  sequence
     element name=bar type=BarType

Y.xsd
import X.xsd namespace=xns

element name=foo type=foo2Type

complexType foo2Type
  sequence
     element name=bar type=xns:BarType
     element name=baz type=BazType
在这里,您添加了自己定义的新元素baz,但bar将包含行业标准要求的所有子元素

将X导入Y(使用导入元素)