如何在xsd 1.0中创建条件标签?

时间:2017-03-10 18:28:03

标签: xml xsd

我正在尝试为这种xml文件创建一个xml架构:

<root>

    <class type="A">
        <name>My Name</name>
        <surname>My Surname</surname>
        <address-eu>
            <postalcode>555888</postalcode>
        </address-eu>
    </class>
    <class type="B">
        <name>My Name</name>
        <surname>My Surname</surname>
        <address-us>
            <zipcode>555888</zipcode>
        </address-us>
    </class>

<root>

我想要的是添加 address-eu address-us ,具体取决于标记类中类型的值。

使用XSD 1.1很简单,但我需要使用xsd 1.0实现它。

我想避免像这样的xml文件,其中address-us属于type =“A”类,这是不正确的:

<root>

    <class type="A">
        <name>My Name</name>
        <surname>My Surname</surname>
        <address-us>
            <zipcode>555888</zipcode>
        </address-us>
    </class>
    <class type="B">
        <name>My Name</name>
        <surname>My Surname</surname>
        <address-us>
            <zipcode>555888</zipcode>
        </address-us>
    </class>

<root>

这可能吗?

由于

1 个答案:

答案 0 :(得分:2)

,您不能基于XSD 1.0中的属性值使用元素类型。

在XSD 1.1中,您可以使用 Conditional Type Assignment 。有关CTA的示例,请参阅How to make type depend on attribute value using Conditional Type Assignment

在XSD 1.0中,您可以将class元素type="A"重命名为AClassA,以将其与名为B或{{1}的元素区分开来}。然后,您就可以为这两个元素定义不同的内容模型。

通常,在XSD 1.0中,不同的元素应该有不同的名称。