XSD 覆盖父级
Posted
技术标签:
【中文标题】XSD 覆盖父级【英文标题】:XSD overriding parent 【发布时间】:2022-01-19 09:28:57 【问题描述】:我正在使用两个架构文件,parent.xsd 和 child.xsd,其中包括父架构。
在父级内部,我已经通过以下方式定义了一个非常简单的元素
<xs:element name="parentElement">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element ref="another_element" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="firstAttr" type="attrType"/>
</xs:complexType>
</xs:element>
现在,在子架构中,我想覆盖这个元素并添加一个新属性。孩子应该与父母同名。这可以在 XSD 中完成吗?
我已经尝试过
【问题讨论】:
【参考方案1】:首先您需要提取复杂类型。
<xs:element name="parentElement" type="typeOfParentElement"/>
<xs:complexType name="typeOfParentElement">
<xs:sequence minOccurs="0" maxOccurs="1">
<xs:element ref="another_element" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="firstAttr" type="attrType"/>
</xs:complexType>
然后您将需要定义一个扩展 typeOfParentElement
并带有附加属性的类型。
然后你需要用这个扩展类型定义子元素的类型。
从您的描述中不清楚子元素是否与父元素同名。如果是这样,您将需要在局部元素声明而不是全局元素声明中定义它,因为您不能有两个同名的全局元素。
【讨论】:
感谢您的回复!是的,孩子应该和父母同名以上是关于XSD 覆盖父级的主要内容,如果未能解决你的问题,请参考以下文章
在嵌套环境中点击 childviewcontroller 中的单元格访问父级父级视图控制器的 tableview 委托