修改XSD以使用substitutionGroup

时间:2015-05-06 01:43:42

标签: xml xsd

我需要帮助通过使用substitutionGroup或Choice更改xsd文件,下面是我在代码中使用的xsd文件,现在我开始接收带有标记"组织"的XML数据。而不是" INDIVIDUAL",除了改变之外,所有其他标签都是相同的。我如何能够容纳我的xsd文件中的更改。 我尝试像下面一样更改xsd,但是我的xml没有得到针对模式的验证。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

替换组使用声明为全局元素的元素(它们不是在类型中定义,而是在模式的顶层定义)。

如果您的Individual元素和Organization元素是全局定义的:

<xs:element name="INDIVIDUAL">
    <!-- ind. element content -->
</xs:element>

<xs:element name="ORGANIZATION" substitutionGroup="INDIVIDUAL">
    <!-- org. element content -->
</xs:element>

然后,您只需要使用对substitutionGroup的head的引用有效:

<xs:element name="TEST">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="INDIVIDUAL">

个人或任何可替代个人的元素在此处有效。 所以你主要需要在使用替换之前使你的元素全局化。