无法在子元素中从父元素取消属性(xsd限制)
我想在子元素组合的ConsumerSubjectResponseType中添加subjectIdentifier属性(在父元素ConsumerSubjectResponseType中声明)。我认为在子元素中不重复属性声明就足够了,但显然不是这样。这可以在xsd中实现吗无法在子元素中从父元素取消属性(xsd限制),xsd,Xsd,我想在子元素组合的ConsumerSubjectResponseType中添加subjectIdentifier属性(在父元素ConsumerSubjectResponseType中声明)。我认为在子元素中不重复属性声明就足够了,但显然不是这样。这可以在xsd中实现吗 这可以在xsd中实现吗 在你的例子中:不,或者不是那样 通过限制派生的类型必须重复所有粒子组件,但属性不需要在派生类型定义中重复,它们是从基本类型继承的。无法从受限类型中删除必需的属性。您可以为所需的属性指定某个固定(可能
这可以在xsd中实现吗
在你的例子中:不,或者不是那样
通过限制派生的类型必须重复所有粒子组件,但属性不需要在派生类型定义中重复,它们是从基本类型继承的。无法从受限类型中删除必需的属性。您可以为所需的属性指定某个固定(可能为空)值,也可以使用use=“违禁”
删除属性
通常,您试图做的是以一种倒退的方式,因为“类型a的成员,其定义是另一个类型B定义的限制,始终也是类型B的成员”,并且“除了另一个指定类型定义所允许的内容外,还允许元素或属性内容的复杂类型定义称为扩展”(引用自W3C模式定义,)
解决方案1,改用xs:extension
创建ConsumerSubjectResponseType
作为基本类型,并通过扩展从中派生CombinedConsumerSubjectResponseType
<xs:complexType name="CombinedConsumerSubjectResponseType-base">
<xs:sequence>
<xs:element minOccurs="0" name="Sources" type="xs:string" />
<xs:element minOccurs="0" name="AdditionalOutputData" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ConsumerSubjectResponseType-extension">
<xs:complexContent>
<xs:extension base="CombinedConsumerSubjectResponseType-base">
<xs:sequence>
<xs:element minOccurs="0" name="CustomerReferenceNumber" type="xs:string" />
</xs:sequence>
<xs:attribute name="subjectIdentifier" type="xs:string" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
在这种情况下,影响这两种类型的更改应该在组上进行,而不是在类型上进行。非常感谢-提示“使用=禁止”为我省去了很多痛苦!+1 for
修复了
。请参阅。
<xs:complexType name="CombinedConsumerSubjectResponseType-base">
<xs:sequence>
<xs:element minOccurs="0" name="Sources" type="xs:string" />
<xs:element minOccurs="0" name="AdditionalOutputData" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ConsumerSubjectResponseType-extension">
<xs:complexContent>
<xs:extension base="CombinedConsumerSubjectResponseType-base">
<xs:sequence>
<xs:element minOccurs="0" name="CustomerReferenceNumber" type="xs:string" />
</xs:sequence>
<xs:attribute name="subjectIdentifier" type="xs:string" use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:group name="CombinedConsumerSubjectResponse-group">
<xs:sequence>
<xs:element minOccurs="0" name="Sources" type="xs:string" />
<xs:element minOccurs="0" name="AdditionalOutputData" type="xs:string" />
</xs:sequence>
</xs:group>
<xs:complexType name="ConsumerSubjectResponseType-group">
<xs:sequence>
<xs:element minOccurs="0" name="CustomerReferenceNumber" type="xs:string" />
<xs:group ref="CombinedConsumerSubjectResponse-group" />
</xs:sequence>
<xs:attribute name="subjectIdentifier" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="CombinedConsumerSubjectResponseType-group">
<xs:group ref="CombinedConsumerSubjectResponse-group" />
</xs:complexType>